FFMPEG x11grab/脈衝 AV 捕獲:非單調 DTS

FFMPEG x11grab/脈衝 AV 捕獲:非單調 DTS

我擺弄了很多選項試圖解決這個問題,但我認為最好從一開始就從我想要的開始並尋求幫助。我想捕捉一些模擬的遊戲鏡頭,通常解析度為256*240,所以當我這樣做時,我想我也可以無損地捕捉鏡頭,而不需要重新縮放。我使用這個命令列:

ffmpeg -f x11grab -i :0.0 -f pulse -i alsa_output.pci-0000_08_00.3.analog-stereo.monitor -ac 2 -c:v libx264rgb -pix_fmt bgr0 -c:a copy -y /tmp/capture.mkv

(順便說一句,我使用 /tmp 作為 ram disk/tmpfs 分區,我不確定這是否會影響事情。)

但是,我總是遇到某種時間戳問題,並出現如下所示的警告:

[matroska @ 0x55b042f269b0] Non-monotonous DTS in output stream 0:1;
previous: 144, current: 141; changing to 144. This may result in
incorrect timestamps in the output file.

生成的視頻具有不同步的音頻/視頻,並且在播放時,視頻會隨機凍結並加速,音頻失真,最終可能會在播放過程中完全停止。單獨錄製影片或音訊工作正常,但當 ffmpeg 嘗試同步它們時,問題似乎開始出現。

我已經嘗試了論壇帖子中的各種選項,特別是在 StackExchange 網路上,但唯一似乎朝著正確方向工作的選項是-async 1/-af aresample=async=1:min_hard_comp=0.100000:first_pts=0

ffmpeg -f x11grab -i :0.0 -f pulse -i alsa_output.pci-0000_08_00.3.analog-stereo.monitor \
    -ac 2 -c:v libx264rgb -pix_fmt bgr0 -c:a pcm_s16le \
    -af aresample=async=1:min_hard_comp=0.100000:first_pts=0 -y /tmp/capture.mkv

這不會列印任何與 DTS 相關的警告,但我實際上在遊戲過程中遇到了音訊/視訊凍結的情況,並且生成的視訊仍然不是很好。我有點懷疑,但可能是我的硬體無法同時處理遊戲模擬、記錄和編碼的開銷。也許如果可以將 vcodec 和 acodec 設置為“複製”,將其復用為 .nut(顯然,mkv 不喜歡原始視頻),並以某種方式在後期重新同步視頻和音頻,我可以確認它是否是這類問題。

這個問題可能不太好回答,對此我很抱歉,但我已經無能為力了。我認為最好自己提出一個問題,從我的目標開始,然後介紹一些我嘗試過的事情。我想排除故障,再次嘗試不同的建議,並評估我想要做的事情是否真的可以用我的硬體實現。這個數字可能有點過於樂觀了,因為如果提問者認為他們的問題沒有在 5 小時內得到解決並且沒有人能夠提供任何其他信息,那麼大多數 stackexchange 問題似乎都會消失。

根據“neofetch”,這些是相關的外觀規格:

CPU: AMD Ryzen 5 1600 (12) @ 3.200GHz
GPU: NVIDIA GeForce GTX 970
Memory: 2910MiB / 16017MiB

相關內容