我正在尝试使用 ffmpeg 在 Windows 10 中录制桌面视频和音频。
我使用这个命令:
ffmpeg -f gdigrab -framerate 30 -i desktop -f dshow -i audio="Stereo Mix (Synaptics SmartAudio HD)" d:\output.mkv
但是当我从终端使用 q 命令退出时出现此错误:
[q] command received. Exiting.
[out#0/matroska @ 0000018ee98392c0] video:2862kB audio:186kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 0.357037%
frame= 82 fps=8.8 q=-1.0 Lsize= 3058kB time=00:00:18.00 bitrate=1391.3kbits/s speed=1.92x
...
[libx264 @ 0000018ee98a9200] ref P L0: 48.9% 7.8% 34.7% 8.6%
[libx264 @ 0000018ee98a9200] ref B L0: 73.7% 22.0% 4.3%
[libx264 @ 0000018ee98a9200] ref B L1: 94.2% 5.8%
[libx264 @ 0000018ee98a9200] kb/s:1283.08
Conversion failed!
视频很不流畅,没有音频。R
ffmpeg的版本是:
ffmpeg version 2023-07-19-git-efa6cec759-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers
并且我在 Windows 中启用了立体声混音。
知道如何修复它吗?
谢谢
答案1
我运行的是 Windows 7,但以下内容应该可以在 Windows 10 上运行。
运行 List Devices 脚本。麦克风必须插入。
ffmpeg -list_devices true -f dshow -i dummy
生成的 cmd 输出应该包含类似如下的信息。
[dshow @ 0000000000177e00] Could not enumerate video devices (or none found).
[dshow @ 0000000000177e00] "Microphone (3- USB Microphone)" (audio)
[dshow @ 0000000000177e00] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD
43-00A0C911CE86}\Microphone (3- USB Microphone)"
我的麦克风被列为“麦克风(3- USB 麦克风)”,您的麦克风当然会有所不同。将其添加到屏幕音频脚本中,如下所示:
ffmpeg -f dshow -i audio="Microphone (3- USB Microphone)" -f gdigrab -i desktop -pix_fmt yuv420p -r 30 -crf 18 -preset superfast -c:a aac -ac 1 out.mkv
输出参数可进行调整以适应。
如果您想在启动后延迟录制,请在屏幕音频脚本上方添加以下内容。调整时间(以秒为单位)以适应。
timeout /t 5
如果存在延迟或视频和音频同步问题,可以使用以下脚本进行纠正。
ffmpeg -i out.mkv -itsoffset -0.6 -i out.mkv -map 0:0 -map 1:1 -c:a: copy -c:v copy output.mkv
正值:视频前进(音频后退)。负值:视频后退(音频前进)。
编辑:
以下仅可用于录制视频:
ffmpeg -f gdigrab -i desktop -pix_fmt yuv420p -r 30 -crf 18 -preset veryfast out.mkv
仅限音频:
ffmpeg -f dshow -i audio="Microphone (2- USB Microphone)" -c:a aac -ac 1 out.aac