2010-12-29 3 views
14

私の目標はwgetを使ってflvファイルをダウンロードし、出力をffmpegにパイプしてMP3に変換することです。この方法で、ユーザーは最初にFLVが自分のサーバーにダウンロードされるのを待たずにMP3をダウンロードできます。私はそれを使って遊んできました.ffmpegは生のビデオでのみパイピングすることができます。だから私はこのような何かで働いていた:ffmpegで配管を使用するにはどうすればいいですか?

wget -O - 'videoinput.flv' | ffmpeg -y -i - -vcodec rawvideo -f yuv4mpegpipe - | ffmpeg -y -i - -ab 128k audiooutput.mp3 

誰もがオンザフライffmpegの符号化処理のこのタイプの経験がありますか?

+0

を参照してください。 – marcog

答えて

2

"ffmpegは生のビデオでのみパイプすることができます" < - そうではありません。

どのようなフォーマットのffmpegもサポートしています。

コマンドラインの例では、FLVから生のビデオを抽出し、MP3にエンコードします。 これは決してこのようにすることはできません。

2

あなたが遭遇する問題の一部は、ファイルの末尾に重要なファイルコンテナ情報があることです。です。したがって、ファイルが完全にダウンロードされる前に、ffmpegが突然停止する可能性があるため、wget呼び出しをffmpegに直接パイプすることは潜在的なファイルブレーカーです。

一連のコマンドを調べる方が良いでしょう。ファイルをwgetしてからffmpegを実行する方がよいでしょう。パイプの機能は無視されますが、それは特定のファイルを扱う際の問題です。 mkfifoを使用して動画をパイプやFLVのを連結する際

また、私は方法の1セットに関するFFMPEGのサイトからこのFAQの答えを見てみましょう:http://www.ffmpeg.org/faq.html#TOC27

15

私はこれをテストしていませんが、このようなことか、非常にすべきです閉じる。

wget [URL] | ffmpeg -i pipe:0 -vcodec mpeg4 -s qcif -f m4v -y output.flv 
2

別のHTTPクライアントからの配管では、ffmpegに内蔵されているものを使用する方が良い可能性があります。少なくとも新しいバージョンでは入力ファイルの引数としてURLを取ることができます。このようにしてFFmpegはファイル自体をプルダウンすることができます。また、ファイルの終わり近くにコンテナデータがある形式の場合、(サーバがサポートしている場合)カールやwgetからのパイプとは異なり、ファイルの最初の部分を取得できます。ファイルを順番に読み込みます。 http://ffmpeg.org/ffmpeg-all.html#http

+1

「youtub-dl」を使用して動画をダウンロードするときなど、リンクがないことがあります。 –

+0

huh、youtube-dlがビデオを標準出力にダンプすることができるTIL – dn3s

+0

はい、オプション-oを使用すると、stdoutに出力されます –

関連する問題