bgu*_*uiz 7 audio video ffmpeg
我想在任何特定时间戳的开头剪切视频,并且需要精确,因此最近的关键帧不够好。
此外,这些视频相当长——一个小时或更长时间——所以如果可能的话,我想避免完全重新编码,或者只重新编码总持续时间的一小部分。因此,想最大限度地利用-vcodec copy.
我怎样才能做到这一点ffmpeg?
注意:请参阅方案以及我自己对以下可能解决方案的粗略想法。
设想:
-ss 0:01:35 -i blah.mp4 -vcodec copy,结果是一个文件,其中:-i blah.mp4 -ss 0:01:35 -vcodec copy,结果是一个文件,其中:
粗略的想法
-vcodec copyffmpeg concat第一个短夹(第5秒)与第二个长夹我知道/可以计算出 (2) 和 (3) 的命令,但不确定 (1) 需要哪些命令。
列出关键帧的时间戳:
ffprobe -v error -select_streams v:0 -skip_frame nokey -show_entries frame=pkt_pts_time -of csv=p=0 input.mp4
Run Code Online (Sandbox Code Playgroud)
它会输出如下内容:
0.000000
2.502000
3.795000
6.131000
10.344000
12.554000
16.266000
...
Run Code Online (Sandbox Code Playgroud)
假设您要删除时间戳 0 到 5,然后流式复制剩余部分。最接近的跟随关键帧是 6.131。
将 5 重新编码为 6.131。确保输入和输出匹配属性和格式。对于 MP4,默认设置应该完成大部分工作,假设为 H.264/AAC,但您可能必须手动匹配配置文件。
ffmpeg -i input.mp4 -ss 5 -to 6.131 trimmed.mp4
Run Code Online (Sandbox Code Playgroud)
做input.txt了CONCAT分路:
file 'trimmed.mp4'
file 'input.mp4'
inpoint 6.131
Run Code Online (Sandbox Code Playgroud)
连接:
ffmpeg -f concat -i input.mp4 -c copy output.mp4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |