2010-06-14 40 views
2

Hallo。關鍵幀上的分割視頻(avi/h264)

我有一個大的視頻文件。 ffmpeg,tcprobe等工具說,它是一個AVI容器中的h264流。

現在我想從視頻中剪出小塊。

  1. 問題:視頻接縫的索引損壞/毀壞。我通過mplayer -forceidx -saveidx <IndexFile> <BigVideoFile>解決了這個問題。這裏的問題是,我現在堅持使用可通過-loadidx <IndexFile>使用此索引文件的mplayer/mencoder。我試圖修正man aviindexmplayer -frames 0 -saveidx mpidx broken.avi ; aviindex -i mpidx -o tcindex ; avimerge -x tcindex -i broken.avi -o fixed.avi)中描述的索引,但是這並沒有解決我的視頻 - 這意味着我測試過的大多數工具都無法在視頻文件中搜索。

  2. 問題:我通過以下命令刪除了部分視頻: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。現在問題是,一些視頻在一開始就被破壞了。我認爲這是因爲事實,我不一定在關鍵幀上切換。

問題:

  1. 什麼是修復一個avi「內聯」的索引,使與它預期的每一個工具可以重新工作的最佳方式?

  2. 如何分割關鍵幀?有沒有mencoder選項?

  3. 關鍵幀是否出現頻率?如何找出這個頻率? (所以有點數學應該有可能計算下一個關鍵幀,並在那裏切割)

  4. 也許這可能是一些完全的其他方式來分裂這部電影嗎?做手工是沒有選擇的,我要切出1000+塊...

非常感謝!

回答

0

我會嘗試在做任何事情之前使用avidemux來修復文件。使用基於MP4的容器比AVI可能會有更好的效果。對於確保您指定的時間間隔在關鍵幀處於正確位置,我建議在使用下面的分組之前使用FFMPEG進行編碼:-g 1,以確保每個幀實際上都是關鍵幀。 FFMPEG將keyframs引用爲GOP或圖片組。

ffmpeg -i input.avi -g 1 -vcodec copy -acodec copy out.avi 

然後多個Split(與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 

有些選項嘗試:可分割準確

x264 Mapping FFMPEG encoding in linux

+0

作爲輸入I; m卡在AVI容器中。我從網絡攝像頭獲得它,這是唯一的選擇。作爲輸出格式,我想用h264/mp4。 我會嘗試avidemux(必須RTFM)修復索引,然後ffmpeg -g 1 - 但我想知道這將如何增加我的文件大小。我的輸入視頻已經有大約10GB。 非常感謝您的意見! – 2010-06-16 13:53:20