HTTP Live Streaming, FFMPEG и FFSERVER и iPhone OS 3

В iPhone OS 3 Apple представила , что позволит транслировать потоковое видео из Интернета. В настоящее время я использую веб-камеру, которая поступает на мой сервер, а затем преобразуется в поток flv с помощью ffmpeg и передается обратно с помощью ffserver. Кто-нибудь знает, как настроить видеопоток, который iPhone может использовать с помощью ffmpeg и ffserver? Я должен иметь возможность перекодировать практически в любой формат на лету.


person jcnnghm    schedule 07.07.2009    source источник


Ответы (4)


Вам нужно будет создать копию ffmpeg с версией> = e109a29d6ddb02b2dd58c6c385ebec27f2d23b58 (git) или 18793 (svn). Убедитесь, что вы также указали флаг --enable-libx264 при сборке. После того, как вы его настроите и запустите, вы можете сделать примерно следующее:

ffmpeg -i <input video> -acodec libmp3lame -ac 1 -vcodec libx264 -s 320x240 \
       -level 30 -f mpegts - | \
segmenter - 10 test test.m3u8 http://example.com/path/to/your/files/

то есть перенести входной файл или поток в ffmpeg и передать видео H.264 со звуком MP3 в сегментатор Apple. Сегментатор выдает сегментированные видеофайлы и списки воспроизведения M3U, указывающие на сегментированные файлы. Вы будете обслуживать сегментированные файлы и списки воспроизведения через веб-сервер, такой как Apache.

Очевидно, вы захотите существенно настроить параметры ffmpeg и segmenter, чтобы получить желаемые результаты.

person Nathan de Vries    schedule 08.07.2009
comment
Какие-нибудь решения для серверов Windows? - person postalservice14; 20.08.2009
comment
У кого-нибудь есть это, действительно работающее с живым потоком из источника dv? Я пытался и продолжаю получать ошибки от segmenter ... - person Robert Swisher; 10.09.2009
comment
Я обнаружил, что версия FFmpeg SVN-r21627 работает с сегментером с открытым исходным кодом http://code.google.com/p/httpsegmenter/ Кто-нибудь знает, что изменилось после этой версии? - person André van Toly; 21.10.2010
comment
Как установить некоторую продолжительность или размер для ffmpeg / ffserver, этот файл создания очистки и снова сделать его с 0 размера / времени и снова очистить его, если размер / время больше, чем X, и строить его снова и снова и ...? - person Dr.jacky; 15.08.2015

Для тех, кому интересно, я связал сегментатор с открытым исходным кодом со сценарием, который позволит вам использовать для этого ffmpeg, см. Мой сегментированная потоковая передача в проекте iphone. Он может создавать сегменты с несколькими битрейтами для входных потоков и передавать сегменты потока в настраиваемое место назначения через scp, ftp и даже до aws s3.

person carson    schedule 30.07.2009

Это довольно старая тема, но поддержка HLS, казалось бы, новая функция FFmpeg может кому-то пригодиться.

Пример использования будет следующим:

ffmpeg -i <input_file> -c:v libx264 -preset slow -map 0 -an -flags -global_header -f hls -hls_time <segment_length> <m3u8_file>

Если вы хотите вести прямые трансляции, это будет еще один пример:

ffmpeg -i <input_stream> -c:v libx264 -preset ultrafast -map 0 -an -flags -global_header -f hls -hls_time <segment_length> -hls_list_size <playlist_entries> -hls_wrap <wrap> <m3u8_file>

Аргумент -hls_list_size ограничивает количество файлов в списке воспроизведения, а аргумент -hls-wrap ограничивает общее количество файлов и переносит имена файлов, как только он достигает этой точки (например, test0.ts, test1.ts ... test7.ts, test0 .ts, test1.ts ... при обертке 8).

Для получения дополнительной информации см. документацию. Обратите внимание, что в приведенных выше примерах звук удаляется с помощью флага -an, так как лично мне он никогда не был нужен.

person polandeer    schedule 18.05.2014
comment
Выглядит неплохо, но кажется, что выходной формат неверен для HLS; При просмотре файла m3u8 в Safari появляется сообщение "Отсутствует плагин"? - person Jonny; 21.03.2017

Что плохого в использовании QuickTime для преобразования фильмов в формат «iPhone»? Вы просто делаете Файл> Экспорт> Формат iPhone ... Я что-то упустил?

После преобразования в формат iPhone я нарезаю его с помощью mediafilesegmenter (находится по адресу Apple Developer Connection, Http Live Streaming Tools):

mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v

(Примечание: имя папки / папка должна существовать)

Затем направьте свой iPhone на веб-сайт с

<video src='folderName/prog_index.m3u8' height=45 width=70 
       controls='on'>Your browser does not support the video tag</video>
person yujean    schedule 23.04.2010
comment
@yujean Ваша ссылка мертва. - person Brad; 17.11.2014