如何使用ffmpeg将音频流重定向到虚拟pulseaudio麦克风?

如何使用ffmpeg将音频流重定向到虚拟pulseaudio麦克风?,audio,video,ffmpeg,audio-recording,pulseaudio,Audio,Video,Ffmpeg,Audio Recording,Pulseaudio,如何使用ffmpeg创建虚拟pulseaudio麦克风 我有一个mkv文件,使用v4l2我可以将视频流重定向到虚拟网络摄像头设备,这里是/dev/video0 ffmpeg -i myfile.mkv -f v4l2 /dev/video0 现在,我想将音频流重定向到虚拟pulseaudio麦克风(而不是输出设备)。如何实现这一点?创建一个虚拟输出设备,并从其监视器创建一个虚拟源 pactl load-module module-null-sink sink_name="virtua

如何使用ffmpeg创建虚拟pulseaudio麦克风

我有一个
mkv
文件,使用v4l2我可以将视频流重定向到虚拟网络摄像头设备,这里是
/dev/video0

ffmpeg -i myfile.mkv -f v4l2 /dev/video0

现在,我想将音频流重定向到虚拟pulseaudio麦克风(而不是输出设备)。如何实现这一点?

创建一个虚拟输出设备,并从其监视器创建一个虚拟源

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"
向“虚拟扬声器”播放的任何声音都将发送到“虚拟麦克风”

您可以使用
-f pulse
直接播放来自ffmpeg的声音,但将其与
-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 $!
  • -需要nosdin
    才能在后台运行
  • PULSE\u SINK=虚拟扬声器
    可用于任何音频播放器
  • “流名称”
    只是音频流将获得的显示名称
  • kill$将关闭视频编码器