如何使用 ffmpeg 创建虚拟脉冲音频麦克风?
我有一个mkv
文件并使用 v4l2 我可以将视频流重定向到虚拟网络摄像头设备,在这里/dev/video0
.
ffmpeg -i myfile.mkv -f v4l2 /dev/video0
现在,同时我想将音频流重定向到虚拟脉冲音频麦克风(而不是输出设备)。我怎样才能实现这个目标?
创建一个虚拟输出设备,并从其监视器创建一个虚拟源。
pactl load-module module-null-sink sink_name="virtual_speaker" sink_properties=device.description="virtual_speaker"
pactl load-module module-remap-source master="virtual_speaker.monitor" source_name="virtual_mic" source_properties=device.description="virtual_mic"
任何播放到“virtual_speaker”的声音都将发送到“virtual_mic”。
您可以直接从 ffmpeg 播放声音-f pulse
,但将其与-re
(您想要将视频播放到虚拟网络摄像头)似乎会为音频添加几秒钟的延迟......
在我的测试中,这也导致视频输出滞后(仍然显示它以 1x 运行)。我能够获得流畅的音频和视频的唯一方法是并行运行两个 ffmpeg 实例......这不是一个很好的解决方案。
ffmpeg -nostdin -re -i myfile.mkv -f v4l2 /dev/video0 &
PULSE_SINK=virtual_speaker ffmpeg -i myfile.mkv -f pulse "stream name"
kill $!
-
-nostdin
它需要在后台运行。
-
PULSE_SINK=virtual_speaker
可以与任何音频播放器一起使用。
-
"stream name"
只是音频流将获得的显示名称。
-
kill $!
如果音频编码器存在,将杀死视频编码器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)