2016-04-29 17 views
0

Ich habe überall gesucht, aber ich habe bisher keine direkte Antwort auf meine Frage gefunden.FFMpeg HLS Ausgabeeinstellungen für die Genehmigung durch den Apple App Store

Was sind die mindestens erforderlichen FFMpeg-Befehlszeilenausgabe- und Segmentierungseinstellungen, die eine Mindestmenge aller erforderlichen .m3u8- und .ts-Dateikombinationen ergeben, die für die Genehmigung durch den Apple App Store für eine in einer App wiedergegebene Videodatei benötigt werden ?

Hinweis es gibt ältere Q & Wie hier, die vor FFMpeg geschrieben wurden native Segmentierung für HLS hinzugefügt. Also suche ich nach 100% FFMpeg-Lösung, um auszugeben, wonach Apple sucht. Das Eingabeformat für diese Antwort interessiert mich nicht, da FFMpeg die meisten Dateien liest, die wir verwenden möchten.

Beachten Sie, dass die richtige Antwort die Einstellung für maximale Bandbreitenanforderungen für den Gesamtstream und usw., nach denen Apple sucht, berücksichtigen sollte.

Ich wette, jemand hat das schon beantwortet, vielleicht sogar in einem Code, aber ich möchte es gepostet sehen, um den Rest von uns zu speichern.

Danke!

Antwort

0

Das Minimum ist ein Video-Stream und ein 64k Audio-Stream nur mit H.264 und AAC. Das heißt, das ist, was ich benutze, 180p + 360p + 480p + 720p + 1080p + 64aac, nur die Teile zusammen, die Sie brauchen.

Ich bekomme Videos aller Größen, also meine Code-Pads oder Clips alles bis 16: 9, entfernen Sie es, wenn Sie es nicht brauchen.

Außerdem müssen Sie den Master m3u8 generieren, der auf die anderen verweist.

[was auch immer] -> 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