Ffmpeg/avconvからssh経由で出力をファイルにパイプするのが好きです。こういうことをしたいです。
_ssh USER_NAME@SERVER_IP "avconv -i "http://svtplay20k-f.akamaihd.net/i/se/open/20141013/1368164-001A/EPISOD-1368164-001A-c49ff75135a27611_,144,252,360,468,892,1584,2700,.mp4.csmil/index_6_av.m3u8?null=" -acodec copy -vcodec copy -bsf aac_adtstoasc -f mp4 pipe:1" | cat > pipeOutput.mp4
_
上記を試しましたが、Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted
を取得します
_-f avi
_と_pipeOutput.avi
_に変更してみました。それは私に非常に大きいが機能しないファイルを与えました。
私が間違っていることについて何か提案はありますか?
FfmpegがMP4ファイルに書き込むには、出力がシーク可能である必要があります(必要なMP4アトムを作成するため)。ただし、MP4はストリーミング可能なコンテナではありません。つまり、SSH接続または通常のUnixパイプを介して「生の」MP4データをパイプすることはできません。
Matroskaをフォーマットとして使用できます。
ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -f matroska pipe:1" | cat > out.mkv
または、MPEG-2トランスポートストリームを使用しますが、パケット化できるH.264 AnnexBバイトストリームへのMP4ビットストリームのフィルタリングが必要です。
ssh USER_NAME@SERVER_IP "ffmpeg -i "..." -c copy -bsf:v h264_mp4toannexb -f mpegts pipe:1" | cat > out.ts
注:ffmpeg
をテストできないため、ここではavconv
を使用しました。