2016-02-16 1 views
1

Je suis en train de convertir une vidéo mp4 de base dans une vidéo HLS en utilisant ffmpeg (en cours d'exécution sur OSX) en utilisant la commande suivante:FFMPEG HLS Transcodage vidéo Génération Playlist partielle

ffmpeg -i SampleVideo_1280x720_10mb.mp4 -codec:v libx264 -codec:a aac -strict experimental -start_number 1 out.m3u8 

Il réussit à générer tous les fichiers de segments .ts, mais le fichier de playlist .m3u8 qui en résulte ne répertorie que les quatre derniers fichiers de segment, en supprimant les segments précédents. Aidez-moi?

Répondre

0

Selon le ffmpeg documentation, les paramètres par défaut de liste de lecture à 5 entrées et une durée de segment de 2 secondes. Cela explique probablement pourquoi vous ne voyez qu'un nombre limité d'entrées dans la liste de lecture. Essayez de définir la longueur de la liste de lecture (-hls_list_size) sur 0, qui comprendra tous les segments. Apple recommends une durée de segment de 10 secondes. Vous pouvez définir la durée du segment avec l'option -hls_time.

Pour référence, vous pouvez également utiliser le muxer segment. Voici la commande que j'utilise habituellement lorsque segmenting video with ffmpeg:

ffmpeg -y \ 
-i input.mov \ 
-codec copy \ 
-bsf h264_mp4toannexb \ 
-map 0 \ 
-f segment \ 
-segment_time 10 \ 
-segment_format mpegts \ 
-segment_list "/Library/WebServer/Documents/vod/prog_index.m3u8" \ 
-segment_list_type m3u8 \ 
"/Library/WebServer/Documents/vod/fileSequence%d.ts" 

Dans ce cas, la vidéo d'entrée contient la vidéo H.264 et audio AAC donc il n'a pas besoin d'être transcodé.

+1

Le drapeau 'hls_list_size' l'a résolu parfaitement, merci. J'ai vu cela dans les docs et je l'ai ignoré parce que j'ai supposé qu'ils utiliseraient simplement (à moi) le défaut sensé qui inclurait tous les fichiers. Merci! – moberemk

1

Essayez

ffmpeg -i SampleVideo_1280x720_10mb.mp4 -c:v libx264 -c:a aac -strict -2 -start_number 1 -hls_list_size 0 out.m3u8