我正在使用 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。但是我找不到通过数据管道提供音频的稳定解决方案。本文简要介绍了音频数据管道。我正在使用以下命令来流式传输音频。
"ffmpeg -re -f s16le -i pipe:wav -f mpegts udp://127.0.0.1:1234"
但它不适用于数据管道。如果我尝试使用 mp3 或 wav 文件的命令,它可以工作。