2016-12-18 52 views
-1

FFMPEG流更新的形象,我想流圖像使用此命令到fb視頻直播:在環路FB實時視頻

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"

這個命令完全適用於單一的輸入文件。但問題是,我希望ffmpeg能夠傳輸最新和更新版本的「input.jpg」文件,因爲我的應用每隔2-3秒更新一次「input.jpg」,但流傳的圖像是舊版本,不是更新的那個。

如果我嘗試重新啓動此循環,那麼流式傳輸將停止約。 4-5秒足以讓FB直播視頻認爲流式傳輸已停止,然後結束實況視頻。

那麼,是否有可能在此循環中使用最新的可用輸入文件版本進行流式傳輸?我對FFMPEG並不瞭解,我試圖尋找這個問題,但都是徒勞的。

+0

嘗試解答[here](http://stackoverflow.com/q/41132358/5726027)。 – Mulvya

+0

@Mulvya這不適合我。 –

回答

1

我終於想出了一個解決方案。當我直接用我的Rails應用程序覆蓋'input.jpg'文件時,這個過程需要幾個毫秒,但在這段時間內,ffmpeg正在流式傳輸這個文件,這個文件在幾個毫秒內是不完整的。

所以,對於這個問題的解決方案是更新後的圖像先寫像「input.tmp.img」臨時文件,然後使用腳本或者使用終端將該文件移動到原來的文件中像 mv input.tmp.img input.jpg 作爲移動過程幾乎不需要任何時間,這爲我解決了問題。

+0

可能是最簡單的解決方案。 'mv'將會完成它的工作*原子化*:其他進程只會看到舊文件或新文件而不是部分文件。 – LordNeckbeard