【问题标题】:How to redirect an audio stream to a virtual pulseaudio microphone with ffmpeg?如何使用 ffmpeg 将音频流重定向到虚拟脉冲音频麦克风?
【发布时间】:2020-09-11 09:47:11
【问题描述】:

如何用 ffmpeg 创建一个虚拟的 pulseaudio 麦克风?

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

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

现在,同时我想将音频流重定向到虚拟脉冲音频麦克风(而不是输出设备)。我怎样才能做到这一点?

【问题讨论】:

    标签: audio video ffmpeg audio-recording pulseaudio


    【解决方案1】:

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

    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”。

    您可以使用 -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 $!
    
    • 需要-nostdin 才能在后台运行。
    • PULSE_SINK=virtual_speaker 可用于任何音频播放器。
    • "stream name" 只是音频流将获得的显示名称。
    • 如果音频编码器退出,kill $! 将终止视频编码器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      相关资源
      最近更新 更多