2009-07-07 2 views
19

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

ответ

22

Вам нужно будет создать копию 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, чтобы получить результаты, которые вам нужны.

+0

Какие-либо решения для серверов Windows? – postalservice14

+0

Кто-нибудь получил это на самом деле работает с живым потоком из источника dv? Я пытаюсь и продолжаю получать ошибки от сегментатора ... –

+0

Я обнаружил, что версия FFmpeg SVN-r21627 работает с клиентом с открытым исходным кодом http://code.google.com/p/httpsegmenter/ Кто-нибудь имеет представление о том, что изменилось с этой версии? –

12

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

0

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

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

mediafilesegmenter -t 10 -f folderName/ nameOfInputFile.m4v 

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

Затем указать свой iPhone на веб-сайт с

<video src='folderName/prog_index.m3u8' height=45 width=70 
     controls='on'>Your browser does not support the video tag</video> 
+3

Не все используют Mac, а инструменты Apple работают только на Mac. – Haqa

+1

@yujean Ваша ссылка мертва. – Brad

3

Это довольно старая тема, но поддержка 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).

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

+0

Идеальный ответ ... Работает нормально –

+0

Выглядит неплохо, но кажется, что формат вывода неверен для HLS; Я получаю «Отсутствующий плагин» при просмотре файла m3u8 с помощью Safari? – Jonny