Ffmpeg
ffmpeg 命令>> out.log 2>>error.log
我在跑:
ffmpeg -i rtmp://localhost/test -crf 20 -t 00:10:00 ./video/hq/1503411993750.mp4 >> out.log 2>>error.log
並期望
>> out.log 2>>error.log
導致stdout
toout.log
和stderr
toerror.log
。當我在此過程中跟踪這兩個文件時,我得到了意想不到的結果。的內容
error.log
似乎包含stdout
. 我得到源源不斷的:frame=191 fps=190 q=26.0 size=229kB time=00:00:04.63 bitrate=404.1 frame=227 fps=149 q=26.0 size=273kB time=00:00:05.83 bitrate=382.8 frame=242 fps=120 q=26.0 size=288kB time=00:00:06.33 bitrate= 372.6 frame=258 fps=101 q=26.0 size=306kB time=00:00:06.86 bitrate= 365.2 frame=273 fps=89 q=26.0 size=324kB time=00:00:07.36 bitrate= 360.1 # ... continued
以上不應該在
out.log
嗎?是我如何編寫命令的問題還是ffmpeg的不尋常之處?
顯然,所有診斷消息
ffmpeg
都發送到stderr
,所以問題不在於語法。-即使沒有錯誤,正常執行的 ffmpeg 任務似乎也將其所有輸出(即使沒有錯誤)發送到 STDERR。
這取決於您對“輸出”的含義:ffmpeg 將所有診斷消息(“控制台輸出”)發送到 stderr,因為它的實際輸出(媒體流)可以進入標準輸出,並且將診斷消息與媒體流混合會阻止輸出。
來自:https ://lists.ffmpeg.org/pipermail/ffmpeg-user/2014-March/020605.html
另一件事我不確定。如果上述情況屬實,則不應
out.log
包含影片數據,而是始終為空。(我想這是因為我已經指定將其發送到
./video/hq/1503411993750.mp4
)