2017-06-06 6 views
0

Si je crée trois sorties avec la commande ffmpeg suivante pour un flux HLS crypté, comment puis-je créer une liste de lecture de variantes master.m3u8 (avec BANDWIDTH correct)?Comment puis-je créer une liste de lecture master m3u8 pour mes sous-listes de lecture cryptées (créées avec ffmpeg)?

./ffmpeg -re -i Test_1080p.mp4 \ 
    -c:a aac -b:a 128k -c:v libx264 -s 1920x1080 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 7800k -maxrate 8600k -bufsize 7800k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./1080p/index.m3u8 \ 
    -c:a aac -b:a 128k -c:v libx264 -s 1280x720 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 4500k -maxrate 5000k -bufsize 4500k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./720p/index.m3u8 \ 
    -c:a aac -b:a 64k -c:v libx264 -s 640x360 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 730k -maxrate 800k -bufsize 730k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./360p/index.m3u8 

Voici un exemple que j'ai trouvé, mais je pense que la valeur BANDWIDTH n'est pas correcte pour mes fichiers de sortie. Comment calculer la bande passante correcte?

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=150000,RESOLUTION=640x360 
http://example.com/360p/index.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=240000,RESOLUTION=1280x720 
http://example.com/720p/index.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=640000,RESOLUTION=1920x1080 
http://example.com/1080p/index.m3u8 

Le variantplaylistcreator-outil d'Apple ne fonctionnera pas dans ce cas parce que je dois les fichiers .plist, ffmpeg ne génère pas ces fichiers.

Je pense que ffmpeg ne peut pas créer une liste de lecture master.m3u8 pour les fichiers de sortie générés ..

+0

avez-vous compris? J'ai aussi besoin de créer un fichier master .plist mais je ne peux pas utiliser variantplaylistcreator: / –

Répondre

0

Mise à jour Janvier 2018

Vous pouvez maintenant créer des listes de lecture maître directement avec FFmpeg en utilisant master_pl_name et var_stream_map . Voir le documentation. FFmpeg ne crée pas la liste de lecture principale, mais vous pouvez le faire manuellement, comme dans l'exemple suivant:


L'attribut BANDWIDTH représente le débit maximal de la variante. Pour les flux multiplexés comme le vôtre, la valeur est peak audio bitrate + peak video bitrate + mux overhead (y compris tout remplissage de cryptage). Si vous avez une vidéo/audio séparée, vous devez prendre en compte la combinaison de rendus la plus rapide.

La surcharge de multiplexage est affichée lorsque la commande ffmpeg se termine mais uniquement si vous avez une seule sortie. Une fois que vous avez choisi les paramètres d'encodage, vous pouvez effectuer quelques tests et faire une estimation basée sur les résultats. Une chose à garder à l'esprit est que la valeur mesurée doit être inférieure à 10% de la bande passante déclarée pour la VOD et respectivement inférieure à 25% pour 1 heure de contenu vivant selon les directives d'Apple.