2016-09-23 764 views
0

我試圖從網絡攝像頭捕獲視頻,並且我發現當我使用-vcodec copy選項時,它的效果非常好(遠遠優於任何我試過的其他軟件)。但是,我希望我的文件稍微小一些,而且我似乎每次嘗試壓縮視頻都會導致視頻劇烈跳動。例如,如果我將輸出的vcodec切換到mjpeg,它會從報告15 fps更改爲報告3和4 fps之間的報告。難道我做錯了什麼??這裏是-vcodec copy的呼叫:ffmpeg:使用-vcodec mjpeg捕獲幀率低,但不使用-vcodec拷貝時幀速率低

ffmpeg -y -f dshow -vcodec mjpeg -s 1184x656 -framerate 25 -i video="HD 720P Webcam" -vcodec copy test.avi 

- 它讓我得到15 fps。但是,如果我更改爲mjpeg,我得到的只有3-4 fps的:

ffmpeg -y -f dshow -vcodec mjpeg -s 1184x656 -framerate 25 -i video="HD 720P Webcam" -vcodec mjpeg test.avi 

實驗性的嘗試把-framerate 25-r 25test.avi之前也沒有幫助的情況。在嘗試使用mpeg4libx264時,我沒有獲得更流暢的視頻。只有copy選項爲我提供了流暢的視頻(順便說一句,我拍攝我的手彈鋼琴,所以視頻中有很多快速運動)。

幫助!!!!謝謝你......

回答

1

我不明白爲什麼幀率下降這麼多,但你可以嘗試2個回合方法,你先用-vcodec副本(如你在問題中粘貼)記錄它

ffmpeg -y -f dshow -vcodec mjpeg -s 1184x656 -framerate 25 -i video="HD 720P Webcam" -vcodec copy test.avi 

然後對其進行轉碼成MJPEG一旦完成(像這樣):

ffmpeg -i test.avi -vcodec mjpeg test.mjpeg 

注:我沒有實際測試過上述任何命令行。

+0

感謝您的建議bluemonki!現在ffmpeg報告它給了我30fps,但製作的視頻具有與其他方法完全相同的品質:僅有一個幀存在巨大差距(即使在一個地方超過半秒),但不超過約在任何給定的第二個6幀...(在原始帖子中的方法的視頻也出現了這樣)。所有幫助非常感謝! – justme

+0

我看到的其他例子涉及使用'-r'作爲@Mulvya建議並可能使用'-use_wallclock_as_timestamps',它應該強制ffmpeg加入系統時鐘以獲得時間戳,以防止它被可變幀率視頻混淆 – bluemonki

0

聽起來像您的攝像頭正在輸出可變的幀速率流。嘗試在您的copy捕獲的文件之一下面。

ffmpeg -i test.avi -vcodec libx264 -r 30 test.mp4 

(你應該避免捕捉到AVI,MKV使用代替)