【问题标题】:Inputting Audio Stream to FFMPEG将音频流输入到 FFMPEG
【发布时间】:2018-07-18 15:18:24
【问题描述】:

我正在使用 C# 和 ffmpeg.exe 构建一个实时聊天应用程序。我的要求是从 Microsoft Speech API 获取内存流并将其实时提供给 ffmpeg 进程。我可以从 Microsoft Speech API 获取内存流。我正在使用以下代码来创建内存流。

        using (MemoryStream stream = new MemoryStream())
        {
            MemoryStream streamAudio = new MemoryStream();
            System.Media.SoundPlayer m_SoundPlayer = new System.Media.SoundPlayer();
            _speechSynthesizerVisemesSender.SetOutputToWaveStream(streamAudio);
            _speechSynthesizerVisemesSender.SetOutputToNull();
            stream.WriteTo(proc.StandardInput.BaseStream);
        }   

我已经在使用另一个数据管道和另一个命令来将视频内容提供给 ffmpeg。但我找不到通过数据管道提供音频的稳定解决方案。 This 文章简要介绍了音频数据管道。我正在使用以下命令来流式传输音频。

"ffmpeg -re -f s16le -i pipe:wav -f mpegts udp://127.0.0.1:1234"

但它不适用于数据管道。如果我尝试使用 mp3 或 wav 文件的命令,它可以工作。

【问题讨论】:

    标签: c# ffmpeg microsoft-speech-api


    【解决方案1】:

    由于 Microsoft Speech API 是为桌面应用程序设计的,不支持 Web 应用程序,因此您无法从语音 API 获得持续的音频流。因此,您唯一的选择是使用 SAPI 创建一个 wav 文件并将音频文件与流结合起来。

    当你有一个音频文件时,你可以在 ffmpeg 中使用音频输入选项。

    ffmpeg -re -f s16le -i pipe:wav -i audio.mp3 -r 10 -vcodec mpeg4 -f mpegts udp://127.0.0.1:1234
    

    但问题是您将无法将音频与视频流进行映射。如果您不必将音频与视频同步,则可以使用上述命令。

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 2021-03-10
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多