2016-04-29 1 views
0

J'ai regardé partout, mais je n'ai pas encore trouvé de réponse directe à ma question. Quels sont les paramètres de sortie et de segmentation de la ligne de commande FFMpeg minimum requis pour produire un ensemble minimal de toutes les combinaisons de fichiers HLS .m3u8 et .ts requises pour l'approbation par Apple App Store d'un fichier vidéo lu dans une application? ? Remarque: il y a des anciens Q & Comme sur ce qui a été écrit avant FFMpeg ajouté la segmentation native pour HLS. Donc, je suis à la recherche d'une solution 100% FFMpeg pour produire ce que Apple recherche. Je ne me soucie pas du format d'entrée pour cette réponse car FFMpeg lit la plupart des fichiers que nous voulons utiliser.Paramètres de sortie FFMpeg HLS requis pour l'approbation par Apple App Store

Notez que la réponse correcte doit prendre en compte le paramètre pour les exigences de bande passante maximale pour le flux total et etc. qu'Apple recherche. Je parie que quelqu'un a déjà obtenu cette réponse, peut-être même en cours d'exécution dans un code, mais je veux le voir publié pour nous sauver un peu de temps.

Merci!

Répondre

0

Le minimum est un flux vidéo et un flux audio de 64 ko uniquement, avec h.264 et aac. Cela dit, c'est ce que j'utilise, 180p + 360p + 480p + 720p + 1080p + 64aac, il suffit de mettre en place les pièces dont vous avez besoin.

Je reçois des vidéos de toutes tailles afin que mon code touche ou clips tout en 16: 9, retirez-le si vous n'en avez pas besoin.

De plus, vous devez générer le master m3u8 qui pointe vers les autres.

[tout] -> h.264 + AAC

ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i INPUT.FILE 
#180p -movflags faststart -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -filter:v "scale=iw*min(320/iw\,180/ih):ih*min(320/iw\,180/ih), pad=320:180:(320-iw*min(320/iw\,180/ih))/2:(180-ih*min(320/iw\,180/ih))/2" -r:v 30 -s 320x180 -b:v 320k -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfdk_aac -ac 2 -ar 48000 -b:a 64k OUTPUT-180.MP4 
#360p -movflags faststart -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -filter:v "scale=iw*min(640/iw\,360/ih):ih*min(640/iw\,360/ih), pad=640:360:(640-iw*min(640/iw\,360/ih))/2:(360-ih*min(640/iw\,360/ih))/2" -r:v 30 -s 640x360 -b:v 640k -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfdk_aac -ac 2 -ar 48000 -b:a 96k OUTPUT-360.MP4 
#480p -movflags faststart -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -filter:v "scale=iw*min(854/iw\,480/ih):ih*min(854/iw\,480/ih), pad=854:480:(854-iw*min(854/iw\,480/ih))/2:(480-ih*min(854/iw\,854/ih))/2" -r:v 30 -s 854x480 -b:v 680k -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfdk_aac -ac 2 -ar 48000 -b:a 96k OUTPUT-480.MP4 
#720p -movflags faststart -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -filter:v "scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih), pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2" -r:v 30 -s 1280x720 -b:v 1280k -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 3.1 -c:a libfdk_aac -ac 2 -ar 48000 -b:a 128k OUTPUT-720.MP4 
#1080p -movflags faststart -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -filter:v "scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -r:v 30 -s 1920x1080 -b:v 1640k -c:v libx264 -pix_fmt yuv420p -profile:v baseline -level 4.0 -c:a libfdk_aac -ac 2 -ar 48000 -b:a 128k OUTPUT-1080.MP4 
#aac -c:a libfdk_aac -ac 2 -ar 48000 -b:a 64k OUTPUT-AAC.AAC 

MP4 -> TS

#180p ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i OUTPUT-180.MP4 -codec copy -map 0 -f segment -segment_list OUTPUT-180.M3U8 -segment_time 10 -segment_list_type m3u8 -bsf:v h264_mp4toannexb SEGMENT-180%05d.TS 
#360p ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i OUTPUT-360.MP4 -codec copy -map 0 -f segment -segment_list OUTPUT-360.M3U8 -segment_time 10 -segment_list_type m3u8 -bsf:v h264_mp4toannexb SEGMENT-360%05d.TS 
#480p ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i OUTPUT-480.MP4 -codec copy -map 0 -f segment -segment_list OUTPUT-480.M3U8 -segment_time 10 -segment_list_type m3u8 -bsf:v h264_mp4toannexb SEGMENT-480%05d.TS 
#720p ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i OUTPUT-720.MP4 -codec copy -map 0 -f segment -segment_list OUTPUT-720.M3U8 -segment_time 10 -segment_list_type m3u8 -bsf:v h264_mp4toannexb SEGMENT-720%05d.TS 
#1080p ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i OUTPUT-1080.MP4 -codec copy -map 0 -f segment -segment_list OUTPUT-1080.M3U8 -segment_time 10 -segment_list_type m3u8 -bsf:v h264_mp4toannexb SEGMENT-1080%05d.TS 
#aac ffmpeg -y -async 1 -vsync -1 -analyzeduration 999999999 -i OUTPUT-AAC.AAC -codec copy -map 0 -f segment -segment_list OUTPUT-AAC.M3U8 -segment_time 10 -segment_list_type m3u8 -bsf:v h264_mp4toannexb SEGMENT-AAC%05d.TS