5

ffmpeg.exe からの標準出力をその場で Web 応答ストリームに直接ストリーミングする必要があります。Process/RedirectStandardOutput/etc を使用してコマンド ラインを設定し、出力ストリームをパイプするのに問題はありません。

ただし、Process.StandardOutput からの出力が正しい raw 形式ではないことが問題のようです。このようなもの(疑似コード):

var ffpsi = new ProcessStartInfo("ffmpeg.exe", "-i input.mp3 -acodec copy -f mp3 -")
ffpsi.UseShellExecute = false;
ffpsi.RedirectStandardOutput = true;
var ffmpegProcess = new Process();
ffpmpegProcess.StartInfo = ffpsi;

ffmpegProcess.Start();

var outputFile = new FileStream("out.mp3");
ffmpegProcess.StandardOutput.BaseStream.CopyTo(outputFile);

元のファイルより少し大きいファイルが作成され、明らかに有効な MP3 ではありません。

基本ストリームを使用して戦略をコピーし、非同期コールバックからデータを取得するさまざまなエンコーディングを試してみましたが、何も機能していないようです。

ここに何かアイデアはありますか?これは、ffmpeg stdout から応答ストリームに渡すことができる .NET ストリームに生のバイナリ出力を取得する方法に帰着すると思いますか?

4

0 に答える 0