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ファイルでコマンドを試すと、機能します。