2016-06-29 9 views
1

RTSPストリームをmp4ビデオまたはフレームに変換する必要があります(場合によっては)&をHDFS(Hadoop Filesystem)に保存したいと考えています。ffmpegをHDFSに直接出力する

これは私がffmpegを使ってRTSPストリームをmp4ビデオ/フレームに変換しようとしました&ローカルファイルシステムにビデオ/フレームを保存しています。
ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv -r 1 -f image2 frames/big_frame-%3d.bmp
ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv big_bunny.mp4

そして、putコマンドを使用してHDFSに(ローカルのファイルシステムに格納されている)、ビデオ/フレームを保存する - - 以下のように
hadoop fs -put frames/ /user/maddy/
hadoop fs -put big_bunny.mp4 /user/maddy/

これが働いています。しかし、私は(コマンド以下のような)何かをしようとしたが、それは私がこのエラーを取得する
ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv hdfs://localhost:9000/user/maddy/big_bunny.mp4

が動作していない

(つまり、ローカルのファイルシステムで必要なファイルを保存せずに1つのステップである)、これを直接行いたいです -
hdfs://localhost:9000/user/maddy/big_bunny.mp4: Protocol not found

ffmpegを使用すると、ローカルファイルシステムに保存せずにこれらのファイルを直接hdfsに保存できます。
これを達成するためのツールが他にありますか?

EDIT:@incBrain

によって提案された。しかし、このエラーを受け取ったとして

ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv - | hadoop fs -put - /user/maddy/
をしようとしました -
[NULL @ 0xce37a0] Unable to find a suitable output format for 'pipe:' pipe:: Invalid argument

+1

これを試すことができます: 'ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv - | hadoop fs -put -/user/maddy/'? – incBrain

+0

@incBrainこれを試してみましたが、上記のコマンドを実行した後にエラーが出て問題を編集しました。 –

+1

Hmm次に 'ffmpeg -i rtsp://10.0.37.150:8554/big_bunny.mkv pipe:1 | hadoop fs -put -/user/maddy/'それを行う必要があります。私は願います。そうでなければ、 '>'を使って名前付きパイプにリダイレクトすることが解決策になるかもしれません。 – incBrain

答えて

1

あなたはパイプにffmpegの出力をリダイレクトし、read the input from stdinhadoop fs -put - /user/...を使用することができますこのように:

ffmpeg -i rtsp://10.0.37.150:8554/test.mkv -f avi - | hadoop fs -put - /user/maddy/test.avi 

ffmpegは、私たちのパイプを使用しているので、ファイル拡張子の出力フォーマットを推測できないので、-f <format> optionが必要です。

関連する問題