slm*_*slm 5 ffmpeg video-editing
在搜索 U&L 时,我注意到有相当多的问题询问如何编写如下ffmpeg命令行的生成:
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:10:00 -c copy 01.mp4
ffmpeg -i video.mp4 -ss 00:10:00 -t 00:10:00 -c copy 02.mp4
ffmpeg -i video.mp4 -ss 00:20:00 -t 00:10:00 -c copy 03.mp4
Run Code Online (Sandbox Code Playgroud)
在为此研究解决方案时,我在ffmpeg问题跟踪器中偶然发现了这张票,标题为:将输入视频拆分为多个输出视频块。
这张票突出显示了一个补丁,它使您最终能够提供一个时间点列表,以使用这样的单个命令行将视频切割成更小的部分:
$ ffmpeg -i input.avi -f segment -segment_times 10,20,40,50,90,120,180 \
-vcodec copy output02%d.avi
Run Code Online (Sandbox Code Playgroud)
该补丁似乎已在此版本的代码存储库中发布:
commit 2058b52cf8a4eea9bf046f72b98e89fe9b36d3e3
Author: Stefano Sabatini <stefasab@gmail.com>
Date: Sat Jan 28 22:36:38 2012 +0100
lavf/segment: add -segment_times option
Address trac ticket #1504.
Run Code Online (Sandbox Code Playgroud)
我从ffmpeg 站点下载了这个静态构建的ffmpeg, ffmpeg.static.64bit.2013-10-05.tar.gz版本,但它显然不包含该开关。
$ ./ffmpeg --help |& grep segment
$
Run Code Online (Sandbox Code Playgroud)
有没有人能够让这个新开关工作?
是否是因为缺少-map选项,该选项将输入流指定为输出文件的源。我正在使用 ffmpeg 2.6.1 并且能够使用以下命令分割视频-segment_times:
ffmpeg -i foo.mp4 -segment_times 10,20,30,40 -c copy -map 0 -f segment %03d.mp4
Run Code Online (Sandbox Code Playgroud)
如果您需要更精细的分割,您可以使用 OpenCV 读取原始视频并将所需的帧写入新的分割。查看这些:“使用 OpenCV 创建视频”和“根据多个起始和结束帧索引将视频分割为多个块”
| 归档时间: |
|
| 查看次数: |
3640 次 |
| 最近记录: |