喂
我有一个很大的视频文件。 ffmpeg
,tcprobe
和其他工具说,它是AVI容器中的h264流。
现在我想从视频中删除小块。
问题:视频接缝的索引已损坏/已损坏。我通过mplayer -forceidx -saveidx <IndexFile> <BigVideoFile>
解决了这个问题。这里的问题是,我现在坚持使用mplayer / mencoder,它可以通过-loadidx <IndexFile>
使用这个索引文件。我已尝试更正man aviindex
(mplayer -frames 0 -saveidx mpidx broken.avi ; aviindex -i mpidx -o tcindex ; avimerge -x tcindex -i broken.avi -o fixed.avi
)中描述的索引,但这并未修复我的视频 - 这意味着我测试过的大多数工具都无法在视频文件中搜索。
问题:我通过以下命令剪切部分视频:mencoder -loadidx in.idx -ss 8578 -endpos 20 -oac faac -ovc x264 -sws 9 -lavfopts format=mp4 -x264encopts <LotsOfOpts> -of lavf -vf scale=800:-10,harddup in.avi -o out.mp4
。现在问题在于,一些视频在开始时已损坏。我认为这是因为我不一定会在关键帧上切割。
问题:
修复avi“内联”索引的最佳方法是什么,以便每个工具都可以按预期方式再次使用?
我如何在关键帧处拆分?这是否有mencoder-option?
关键帧是否会出现频率?如何找出这个频率? (因此,通过一些数学计算,应该可以计算下一个关键帧并在那里切割)
或许还有其他一些方法来分割这部电影吗?手工做是不可取的,我要削减1000多个块......
非常感谢!
答案 0 :(得分:1)
https://spreadsheets.google.com/ccc?key=0AjWmZ0umsuZHdHNzZVhuMTkxTHdYbUdCQzF3cE51Snc&hl=en列出了可用于准确拆分的各种选项。
答案 1 :(得分:0)
在尝试任何操作之前,我会尝试使用avidemux来修复文件。使用基于MP4的容器比AVI还可以获得更好的结果。
至于确保你的指定间隔是否在关键帧上,我建议使用带有-g 1
选项的FFMPEG进行编码,然后再使用下面的分割来确保每个帧实际上都是一个关键帧。 FFMPEG将关键帧称为GOP或图片组。
ffmpeg -i input.avi -g 1 -vcodec copy -acodec copy out.avi
然后多次拆分(使用FFMPEG):
ffmpeg -i input.avi -ss 00:00:10 -t 00:00:30 out1.avi -ss 00:00:35 -t 00:00:30 out2.avi
还有更多选择: