ffmpeg-Transkodierung und HLS

1463
vayvanne

Transcodierung des Eingabestroms in kleinere Paare:

ffmpeg -re -v info -i "rtmp://localhost/live/stream live=1" \ -c:v libx264 -b:v 500k -vf scale=540:-1 -preset faster -copyts \ -c:a aac -b:a 64k -ac 2 -flags +global_header \ -f flv "rtmp://localhost/live/500k live=1" \ -c:v libx264 -b:v 800k -vf scale=720:-1 -preset faster -copyts \ -c:a aac -b:a 64k -ac 2 -flags +global_header \ -f flv "rtmp://localhost/live/800k live=1" 

Dann muss ich sie an AMS livepkgr HLS app weiterleiten:

ffmpeg -re -v info \ -i "rtmp://localhost/live/500k live=1" \ -c copy -copyts -flags +global_header \ -f flv "rtmp://localhost/livepkgr/500k?adbe-live-event=liveevent" \ -i "rtmp://localhost/live/800k live=1" \ -c copy -copyts -flags +global_header \ -f flv "rtmp://localhost/livepkgr/800k?adbe-live-event=liveevent" 

Die resultierenden Streams sind nicht nach Keyframes ausgerichtet. Irgendwelche Chance, dann so mit ffmpeg wie FMLE Encoder zu machen? Vielen Dank für Ihre Aufmerksamkeit

0
Fügen Sie jeder Kodierung "-g" * "value" * hinzu. Gyan vor 8 Jahren 0
Vielen Dank. -g scheint veraltet zu sein. Ich habe -x264opts keyint = 8 gefunden: min-keyint = 8: no-scenecut, aber das Problem liegt nicht darin, den Keyframe zu setzen, sondern ihn in beiden Streams auszurichten. Die obige ffmpeg-Transkodierung startet nicht beide Streams gleichzeitig, es erfolgt eine geringfügige Verschiebung. Im Fall von FMLE erzeugt die livepkgr-App bis zu 3 Streams, aber ffmpeg nicht. Sollte ein Trick sein, wenn die livepkgr-App ordnungsgemäß ausgerichtete Streams-Dateien produzieren soll, wie dies der Fall ist, wenn der Encoder FMLE ist. vayvanne vor 8 Jahren 0

1 Antwort auf die Frage

0
Gyan

Versuchen

ffmpeg -re -v info -i "rtmp://localhost/live/stream live=1" \ -filter_complex "[0:v]split[a][b];[a]scale=540:-1[oa];[b]scale=720:-1[ob]" \ -map [oa] -c:v libx264 -b:v 500k -preset faster -copyts \ -map 0:a -c:a aac -b:a 64k -ac 2 -flags +global_header \ -f flv "rtmp://localhost/live/500k live=1" \ -map [ob] -c:v libx264 -b:v 800k -preset faster -copyts \ -map 0:a -c:a aac -b:a 64k -ac 2 -flags +global_header \ -f flv "rtmp://localhost/live/800k live=1" 
Beeindruckend. Danke für die großartige Idee mit filter @ Mulvya. Es scheint, dass die Verschiebung durch ein Relay-Skript eingeführt wird, über das die Ausgabeströme nicht wirklich gleichzeitig gestartet werden. Ich habe die gleiche Idee des Splits / Mappings auch für livepkgr implementiert und es funktioniert perfekt. Testplayer ist hier [link] (goo.gl/g97FuM) zu überprüfen. Dies verdoppelt jedoch die CPU-Auslastung beim Transcoding. Jede Chance, den doppelten Transcodierungsjob zu vermeiden und gleichzeitig Ausgabeströme für das oben beschriebene Relay-Szenario zu starten? Für den Fall, wenn die Ausgabe aus drei Streams besteht? vayvanne vor 8 Jahren 0