iPhone HTTP Streaming .m3u8 и .ts файлы - как создать с помощью ffmpeg - PullRequest
2 голосов
/ 09 июля 2010

Я пытаюсь получить проверенные Apple медиа-потоки http, используя ffmpeg, и получаю ошибки. Вот несколько примеров ошибок:

ВНИМАНИЕ: Тип контента списка воспроизведения - это «application / x-mpegurl», но должен быть одним из 'application / vnd.apple.mpegurl', 'audio / x-mpegurl' или "Аудио / mpegurl.

ВНИМАНИЕ: 258 сэмплов (88,966%) не имеют меток времени на дорожке 256 (AVC1). 4: us2-1.ts ~~~~~~~~

ВНИМАНИЕ: длительность медиа сегмента вне ожидаемой продолжительности на 47,733 % (5,23 против 10,00 секунд, ограничение составляет 20%). 40: us2-19.ts ~~~~~~~~~

Average segment duration: 10.16 seconds
Average segment bitrate: 320.12 kbit/s
Average segment structural overhead: 175.89 kbit/s (54.94 %)

Video codec: avc1
Video resolution: 320x320 pixels
Video frame rate: 29.72, 29.78, 29.82, 30.00, 29.64 fps
Average video bitrate: 100.66 kbit/s
H.264 profile: Baseline
H.264 level: 3.0

Audio codec: aac 
Audio sample rate: 48000 Hz
Average audio bitrate: 43.57 kbit/s

Вот последний файл, который я отправляю: http://files.chesscomfiles.com/images_users/using/us2.m3u8

Вот файл, который я использовал для создания этого: http://files.chesscomfiles.com/images_users/using/using-computers-1.mp4

Я пробовал эти команды, среди прочего:

ffmpeg -i using-computers-1.mp4 -f mpegts -acodec libfaac -ar 48000 -ab 64k -s 320x320 -vcodec libx264 -vbsf h264_mp4toannexb -b 96k -flags + loop -cmp + chroma -partitions + parti4x4 + partp8x8 + partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_min 16 -ключ sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq 'blurCplx ^ (1-qComp)' -qcomp 0,6 -qmin 10 -qmax 51 -qdiff 4-уровень 30 -g 30 -async 2 us2.ts

ffmpeg -i using-computers-1.mp4 -f mpegts -acodec libfaac -ar 48000 -ab 64k -s 320x320 -vcodec libx264 -vbsf h264_mp4toannexb -b 96k -flags + loop -cmp + chroma -partitions + parti4x4 + partp8x8 + partb8x8 -subq 5 -trellis 1 -refs 1 -coder 0 -me_min 25 -ключ sc_threshold 40 -i_qfactor 0.71 -bt 200k -maxrate 96k -bufsize 96k -rc_eq 'blurCplx ^ (1-qComp)' -qcomp 0,6 -qmin 10 -qmax 51 -qdiff 4-уровень 30 -g 30 -async 2 us1.ts

ffmpeg -i using-computers-1.mp4 -vbsf h264_mp4toannexb -acodec copy -vcodec copy -f выходной файл mpegts.ts

Если кто-то может помочь мне выяснить, какие команды ffmpeg я должен запускать, я действительно ценю это!

Ответы [ 2 ]

4 голосов
/ 19 июля 2010

Относительно первого предупреждения:

ВНИМАНИЕ: Тип контента списка воспроизведения - это «application / x-mpegurl», но должен быть одним из «application / vnd.apple.mpegurl», «audio /x-mpegurl 'или' audio / mpegurl '.

Это может быть из настроек сервера.Следуйте инструкциям шага 4 этого сообщения Ионной пушки :

Подготовка сервера HTTP. Загрузка набора файлов, представляющих поток и файл определения потока (ts и m3u8).,Эти файлы могут быть загружены на веб-сервер на этом этапе, но есть еще один важный шаг, который гарантирует, что они будут загружены правильно, и который настраивает типы пантомимы.Существует два типа MIME, которые важны для потокового контента:

.m3u8 application / x-mpegURL

.ts video / MP2T

Если вы используете Apache, вы быВы хотите добавить следующее в ваш файл httpd.conf:

Приложение AddType / x-mpegURL .m3u8

Видео AddType / MP2T .ts

Если вы используете lighttpd, вызахотелось бы поместить это в ваш файл конфигурации (если у вас есть другие типы MIME, убедитесь, что вы просто добавили их и не устанавливали их):

mimetype.assign = (".m3u8" => "application/ x-mpegURL "," .ts "=>" video / MP2T ")

2 голосов
/ 19 июля 2010

Относительно третьего предупреждения:

ПРЕДУПРЕЖДЕНИЕ: длительность медиа сегмента вне ожидаемой продолжительности на 47,733% (5,23 против 10,00 секунд, ограничение составляет 20%).40: us2-19.ts ~~~~~~~~~

Это обычно происходит, если продолжительность сегмента отличается от продолжительности, указанной в списке воспроизведения для этого сегмента (m3u8).Например, приведенный ниже список воспроизведения имеет один сегмент и указан в списке воспроизведения как 10 секунд.Если фактическая продолжительность этого сегмента слишком сильно отличается (более чем на 20%), то валидатор будет жаловаться.

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10, 
med0.ts 
#EXT-X-ENDLIST

Обычно последний сегмент в списке воспроизведения будет немного отличаться от целевого, и это предупреждение можно игнорировать.

И, как правило, эти сообщения «ПРЕДУПРЕЖДЕНИЕ» можно игнорировать, но к сообщениям «ОШИБКА» следует относиться серьезно.

Однако второе предупреждение выглядит более серьезным и может привести к отказу от Apple.Это могут быть ваши команды сегментатора (используете ли вы mediastreamsegmenter?).

Кроме того, я не использую "-vbsf h264_mp4toannexb".И я использую "-async 50".

Кстати, ссылка на ваш плейлист недействительна.

...