2015-06-22 33 views
0

我想使用ffmpeg獲取輸入視頻的大小,下面是我使用的代碼,我試圖做的是首先將結果存儲到txt文件中,然後然後做一些分析,以獲得視頻的大小:將ffmpeg結果重定向到另一個文件

$ ffmpeg -i TheNorth.mp4 

終端說,「至少有一個輸出文件必須指定」 然後我嘗試這樣的:

$ ffmpeg -i TheNorth.mp4 result.txt 

終端提示「無法找到'size.txt'的合適輸出格式「

那麼我怎樣才能得到結果並保存到指定的文件?

回答

5

可以存儲輸出ffmpeg的產生與管道:

ffmpeg -i TheNorth.mp4 2> result.txt 

這裏需要使用2>,爲的ffmpeg寫至標準錯誤(而不是STDOUT)。

+0

感謝這麼多,它的工作原理。我在哪裏可以找到關於您放在那裏的數字2的信息? –

+1

^^ http://www.tldp.org/LDP/intro-linux/html/chap_05.html – anishsane

1

稍微好一些的想法是用ffprobe

ffprobe -show_format -print_format json TheNorth.mp4 

,將輸出JSON格式化有關的視頻信息。猜測解析比原始輸出更容易。要將輸出重定向到文件,只需使用普通管道> result.txt即可。

+0

那麼我怎麼能知道什麼時候我應該在什麼時候使用2以及什麼時候不使用?謝謝 –

+0

如果您使用>比STDOUT轉到文件,並且如果您使用2> STDERR轉到文件。一點點實驗將幫助你確定你想要記錄的內容。如果你想要兩個去''result.txt 2>&1' –

+0

是的我知道0意味着STDIN,1意味着STDOUT和2意味着STDERR,但我仍然不明白是否有辦法事先知道在哪裏將ffmpeg結果去? –

0

ffprobe

如果你只是想獲得的視頻的大小,那麼你可以得到的,和其他的信息,直接與ffprobe。這將避免重定向,臨時輸出文件和附加解析。

$ ffprobe -v error -select_streams v:0 -show_entries stream=height,width -of default=nw=1 input.mkv 
    width=1280 
    height=720 

有關更多示例,請參閱FFmpeg Wiki: FFprobe Tips

三通

對於誰想要編碼並捕獲產生的控制檯輸出的用戶,我建議使用tee。純重定向的問題是可能會丟失重要的消息,如錯誤消息,失敗和提示。

您可以通過tee顯示在控制檯輸出避免這種情況,並把它保存到一個文件:

ffmpeg -i input … output 2>&1 | tee console.txt 
+0

謝謝,但是&1意味着什麼? –

相關問題