2011-11-27 149 views
24

我知道FFMPEG有可能,但如果我有一個部分文件(如沒有開始和結束),該怎麼辦。是可以從中提取一些幀?從MP4/FLV中提取幀?

回答

61

命令

ffmpeg -ss 00:00:25 -t 00:00:00.04 -i YOURMOVIE.MP4 -r 25.0 YOURIMAGE%4d.jpg 

將提取幀

  • 停止之後第二25 -ss○點00分25秒]
  • 0.04秒[-t 00開始:00:00.04 ]
  • 從輸入文件中讀取YOURMOVIE.MP4
  • 僅使用每秒25.0幀,即每1/25秒[-r 25.0]一幀
  • 爲JPEG圖像,名稱分別YOURIMAGE%04d.jpg,其中%4d是用前導零
  • 一個4位數字自動增量數

檢查你的電影在應用選項[-r]之前的幀速率,除非您想用自定義速率提取幀,否則適用於[-t]。

儘管如此,從來沒有嘗試過裁剪(損壞?)輸入文件。 值得嘗試。

+4

我們如何指定提取的JPG圖像的質量? – Rasoul

+0

感謝dawg,這使它成爲我的中介插件(https://github.com/docdawning/mediadrop-handbrake-bot)。 –

+4

使用'-q:v 2'獲得最佳質量(http://stackoverflow.com/questions/10225403/how-can-i-extract-a-good-quality-jpeg-image-from-an-h264 -video-file-with-ffmpeg) – chiliNUT

1

這可能是非常困難的。 MP4文件格式包括具有指向音頻和視頻「樣本」的指針的'moov'原子。如果你有的mp4文件的片段沒有moov原子,你的工作將會複雜得多。您必須開發邏輯來檢查'mdat'原子(其中包含所有音頻和視頻樣本),並使用有根據的猜測來查找音頻和視頻邊界。

更糟糕的是,如果沒有moov原子,您將不需要解碼片的SPS和PPS。你必須綜合替換;如果您知道用於創建MP4的編解碼器,那麼您可能能夠從類似編碼的文件中複製SPS和PPS;如果不是,則這可能是一個痛苦的嘗試和錯誤的過程,因爲片的語法(H.264編碼的圖片)取決於在SPS和PPS中指定的值。

+1

儘管您的回答很充分,但它是實際上使用FFMPEG等工具可以非常簡單地提取幀和/或編輯視頻。 –

+2

Dayne,重讀有關源文件缺少開頭或結尾的問題的一部分。 –