2016-12-18 15 views
-1

私は、このコマンドを使用してライブ映像をFBに画像をストリーミングしようとしています:ループでFFMPEGストリーミング更新画像

ffmpeg -loop 1 -re -i "input.jpg" -pix_fmt yuv420p -profile:v baseline -s 720x480 -bufsize 6000k -vb 400k -maxrate 1500k -deinterlace -t 60 -vcodec libx264 -preset veryfast -g 30 -r 30 -f flv "rtmp_link"

このコマンドは、1つの1つの入力ファイルのために完璧に動作します。しかし問題は、私のアプリがこの "input.jpg"を2〜3秒後に更新しているが、ストリーミングされている画像が古いバージョンであるため、ffmpegに最新の "input.jpg"更新されたものではありません。

このループを再開しようとすると、ストリーミングが約1秒間停止します。 FBライブビデオがストリーミングが停止されたとみなすのに十分な4-5秒で、ライブビデオを終了します。

このループでは、最新の入力ファイルをストリーミングに使用できますか?私はFFMPEGについてあまりよく分かりません。私はこの問題を検索しようとしましたが、すべて無駄にしました。

+0

お試しください[こちら](http://stackoverflow.com/q/41132358/5726027)。 – Mulvya

+0

@Mulvyaこれは私にとってはうまくいかなかった。 –

答えて

1

私はこのための解決策を最終的に見つけました。私のレールアプリを使って 'input.jpg'ファイルを直接上書きすると、このプロセスは数ミリ秒かかりましたが、この間もffmpegは数ミリ秒間不完全であったこのファイルをストリーミングしていました。

ので、この問題の解決策は、最初の「input.tmp.img」のような一時ファイルに更新されたイメージを書き込み、移動などのスクリプトを使用するか、または mv input.tmp.img input.jpg のように、端末を使用して、元のファイルにこのファイルを移動することですプロセスはほとんど時間がかからず、これが私の問題を解決しました。

+0

おそらく最も簡単な解決策です。 'mv'は自分の仕事を*原子的に*行います:他のプロセスは古いファイルと新しいファイルのどちらかしか見えず、部分ファイルも見えません。 – LordNeckbeard