2017-01-01 9 views
0

私はyoutube-dlの出力をffmpegにパイプで入力しようとしていますが、パイプ部分が機能しないようです。通常のcmdでは、私はC#を使用して出力ストリームを取得する

のようにすることができますが、これは動作しません。 (YTは、プロセス名です問題が{yt.StandardOutput}である

ffmpeg -i {yt.StandardOutput} -f s16le -ar 48000 -ac 2 pipe:1 

をffmpegのためのユーチューブ-DL

C:\YT\youtube-dl.exe -o - https://www.youtube.com/watch?v=L4aLQ0ki9Tk 

と別のため

1:現在、私はC#は2つのプロセスを作成していyoutube-dlプロセスと-iは入力ファイル/ストリームを指定します)。パイプを使用する:0も動作しませんし、最初のパイプ出力を2番目の入力にリンクする方法がわかりません。

+0

参照[このSO](http://stackoverflow.com/questions/13806153/example-of-named-pipes.aspx):

は、実際には、わずかのGithub上の例を発見しました。しかし、名前付きパイプには多くのオーバーヘッドがあります。 C#デモコードの匿名パイプに関するこの[msdn記事](https://msdn.microsoft.com/en-us/library/bb546102(v=vs.110).aspx)をお読みください。 – RamblinRose

答えて

0

あなたの処理を行う代わりに、別のプロセスは、あなたが別のプログラムからコンテキストを流すパイプを使用できるようになりますcmd.exe /Cこれを使用してコードからコマンドシェル自体を始めるとyoutube-dl.exeffmpegを開始します。

var proc = Process.Start("cmd.exe", 
         "/C C:\YT\youtube-dl.exe -o - https://www.youtube.com/watch?v=L4aLQ0ki9Tk | ffmpeg -i pipe:0 -f asf pipe:1"); 
0

パイプ:0あなたは真のRedirectStandardInput =を設定することができffmpeg.exe作業を開始するときに、あなたはその後、StandardOutputにこれをフックすることができ、書き込み先のストリームを取得するプロセスStandardInputプロパティを使用し、標準入力ですStreamReader + StreamWriter +バイト配列バッファを持つ他のプロセスのプロパティ。 https://github.com/theogeer/aaxtomp3/blob/b05514036dff85d9c395bfa5d9bf272f6361e729/AaxToMp3GUI/AaxToMp3GUI/Converter.cs

関連する問題