ffmpeg 将视频切割为 1分钟一个的分片
时间: 2024-12-15 11:13:39 浏览: 49
FFmpeg是一个功能强大的跨平台命令行工具,用于处理音频和视频文件,包括转换、流媒体传输、抓取和编码等。要将一个大视频分割成每分钟一段的小片段,你可以使用FFmpeg的`-ss`(开始时间)选项和`-t`(持续时间)选项配合`segment`标签。这里是一个基本的命令示例:
```bash
ffmpeg -i input_video.mp4 \
-c copy \
-segment_time 60 \
-strftime 1 \
"output_%Y%m%d%H%M%S.mp4"
```
解释一下这个命令:
- `-i input_video.mp4` 指定了输入的视频文件。
- `-c copy` 表明我们要复制视频和音频流,而不是重新编码,这样可以保持原始质量。
- `-segment_time 60` 设置每个分段的时间长度为1分钟。
- `-strftime 1` 使用strftime格式化输出文件名,比如`output_202301010000.mp4`代表2023年1月1日0点0分的片段。
- 输出文件的命名会在当前目录下生成。
如果你想要创建特定数量的片段而不一定是按分钟划分,只需改变`-segment_time`后的值即可,并调整最后的分段计数。注意,在运行此命令之前,确保你有权限写入输出目录,并且有足够的磁盘空间。
相关问题
ffmpeg 将视频切割为指定时长的分片
FFmpeg是一个强大的命令行工具,用于处理音频和视频文件,包括转换、截取、合并等操作。如果你想将一个视频分割成指定时长的分片,可以使用`ffmpeg`的`-ss` (开始时间) 和 `-t` (持续时间) 参数。基本语法如下:
```bash
ffmpeg -i input.mp4 -c copy -ss <start_time> -t <duration> output_%03d.mp4
```
这里的参数说明:
- `-i input.mp4` 指定输入视频文件。
- `-c copy` 表示保持原始编码,以便快速复制视频数据,不进行解码和重新编码。
- `-ss <start_time>` 是你想从哪里开始切割的时间点,例如"00:05:30"表示从第5分钟30秒开始。
- `-t <duration>` 是每个分片的持续时间,如"00:01:00"表示每一段是一分钟。
- `output_%03d.mp4` 是输出文件名模式,%03d会自动填充序列号,如"output_001.mp4", "output_002.mp4"等。
运行此命令后,FFmpeg会创建一系列按照指定时间长度切割出的视频片段。
FFmpeg切割为每5分钟一段的bat
FFmpeg是一个强大的跨平台命令行工具,用于处理音频、视频和流媒体数据。如果你想要使用FFmpeg将一个大视频文件切割成每5分钟一段的小片段,可以按照以下步骤创建一个批处理脚本(bat文件):
```bash
@echo off
setlocal enabledelayedexpansion
set "input_video=your_input_video.mp4" <!-- 输入视频的路径 -->
set "output_prefix=output_%%Y_%%m_%%d_%time:~0,2%_%time:~3,2%_%time:~6,2%" <!-- 输出文件名前缀 -->
for /f "tokens=1-4 delims=/ " %%a in ('date /T') do (
set "datestamp=%%a%%b%%c"
)
ffmpeg -i "!input_video!" -vf "select='between(t,0,%time_duration%)',format=negate,setpts=N/FRAME_RATE/TB" -t 300 -vframes 1 "%output_prefix%.%%04d.png" > nul
ffmpeg -i "!input_video!" -vf "select='between(t,%time_duration%,end)',format=negate,setpts=N/FRAME_RATE/TB" -t 300 -vframes 1 "!output_prefix!.png"
rem 将每帧图片合并为mp4
ffmpeg -framerate 1 -i "%output_prefix%.%%04d.png" -c:v libx264 -crf 23 -pix_fmt yuv420p "%output_prefix%.mp4"
del *.png <!-- 删除临时生成的图片文件 -->
goto end_of_batch
:end_of_batch
echo Done.
pause
```
在这个脚本中:
1. 替换`input_video=your_input_video.mp4`为你的输入视频文件路径。
2. `-time_duration` 需要计算5分钟的秒数(这里是300秒),可以根据需要调整。
3. `output_prefix` 设置了输出文件的命名前缀,会包含日期和时间。
4. 脚本首先将视频分割成5分钟的帧,然后合并回mp4。
阅读全文