2016-12-18 5 views
-1

Je suis en train de diffuser l'image de la vidéo en direct fb en utilisant cette commande:FFMPEG l'image en streaming mis à jour en boucle FB Live Video

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"

Cette commande fonctionne parfaitement pour un fichier d'entrée unique. Mais le problème est que je veux que ffmpeg diffuse la version la plus récente et mise à jour du fichier "input.jpg" parce que mon application met à jour cette "input.jpg" toutes les 2-3 secondes mais l'image qui est diffusée est l'ancienne, pas celui mis à jour.

Si j'essaie de redémarrer cette boucle, le streaming s'arrête pendant env. 4-5 secondes, ce qui est suffisant pour que la vidéo en direct FB considère que la diffusion en continu a été arrêtée et que la vidéo en direct se termine alors.

Alors, est-il possible d'utiliser la dernière version disponible du fichier d'entrée pour le streaming dans cette boucle? Je ne connais pas grand chose à propos de FFMPEG et j'ai essayé de chercher ce problème mais en vain.

+0

Essayez de répondre [ici] (http://stackoverflow.com/q/41132358/5726027). – Mulvya

+0

@Mulvya cela n'a pas fonctionné pour moi. –

Répondre

1

J'ai finalement trouvé une solution pour cela. Lorsque j'écrivais directement le fichier 'input.jpg' en utilisant mon application rails, ce processus prenait quelques millisecondes mais pendant ce temps aussi, ffmpeg diffusait ce fichier qui était incomplet pendant quelques millisecondes.

Ainsi, la solution de ce problème est que d'abord écrire l'image mise à jour à un fichier temporaire comme « input.tmp.img » puis déplacez ce fichier dans le fichier d'origine en utilisant un script ou en utilisant des terminaux comme mv input.tmp.img input.jpg En mouvement processus prend à peu de temps, cela a résolu le problème pour moi.

+0

Probablement la solution la plus simple. 'mv' fera son travail * atomiquement *: les autres processus ne verront que l'ancien ou le nouveau fichier et non un fichier partiel. – LordNeckbeard