2014-09-20 83 views
0

我試圖捕獲幻燈片演示視頻。我使用下面的命令來抓取屏幕ffmpeg無法捕獲屏幕上運行的視頻

ffmpeg \ 
    -f x11grab -s 1024x768 -r 25 -i $DISPLAY \ 
    -f alsa -i pulse \ 
    -vcodec libx264 -preset ultrafast -vb 1000k \ 
    -acodec libmp3lame -ab 128k \ 
    test.avi 

此作品(屏幕上的應用程序窗口是可見和聲音被記錄在test.avi),但問題是:屏幕上顯示的任何視頻(例如,在瀏覽器窗口中運行的YouTube視頻,但也包括由mplayer播放的視頻)在播放捕獲的視頻(test.avi)時僅顯示爲空(例如綠色)框。

我在使用nvidia-331驅動程序的Ubuntu 12.04.5 LTS上使用ffmpeg 0.8.16-4版本:0.8.16-0ubuntu0.12.04.1(效果與舊版nvidia-304相同)。

我真的很感激任何建議,非常感謝!

回答

0

禁用視頻播放器的視頻加速。目前,視頻被視頻硬件覆蓋,而不是使用軟件繪製,因此無法通過簡單的截圖進行捕捉。

0

我偶然發現問題的解決方案,即使我沒有得到它。這似乎取決於您使用的窗口管理器。我要麼使用「Gnome Classic」或「Gnome Classic(無效果)」(在登錄框中選擇)。

捕獲在屏幕上運行的視頻失敗,出現「無效」版本(您在錄音中看到一個空白框),但它在另一個下無法正常工作(對播放器或ffmpeg沒有任何更改)。

這解決了我的問題,但我會好奇窗口管理器如何影響捕獲問題。我瞭解到「Gnome Classic(無效)」使用Metacity,而「Gnome Classic」使用Compiz(參見http://wiki.ubuntuusers.de/GNOME3_Fallback-Modus,德文)。

我認爲njahnke是正確的是與硬件加速有關(感謝您的答案),但與窗口管理器的關係不清楚。

也許這對知道遇到同樣問題的人很有用。在「Gnome Classic(無效果)」中,所謂的「Gnome Classic(無效果)」,合成「被關閉,即單獨的窗口直接繪製到緩衝區中,這些緩衝區被圖形卡完全管理和可視化(這防止了窗口管理器訪問窗口內容)通過」合成「,窗口被拖入緩衝區(軟件可能會添加效果),然後才傳輸到幀緩衝區,然後顯卡只顯示最終的幀緩衝區,而不是單個窗口,因此該幀緩衝區也可以通過ffmpeg訪問。