HTTP поточно предаване на живо, FFMPEG & FFSERVER и iPhone OS 3

В iPhone OS 3 Apple въведе HTTP поточно предаване на живо, което трябва да позволи поточно предаване на видео на живо от интернет. В момента работя с уеб камера, която се захранва към моя сървър и след това се преобразува във 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 Server? - person postalservice14; 20.08.2009
comment
Някой вече ли е успял да работи с поток на живо от dv източник? Опитвам се и продължавам да получавам грешки от сегментатора... - 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... когато wrap е 8).

За повече информация вижте документацията. Моля, имайте предвид, че горните примери премахват аудио с флага -an, тъй като лично аз никога не съм имал нужда от него.

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

Какво не е наред с използването на QuickTime за конвертиране на филми във формат "iPhone"? Просто правите File > Export > iPhone format... Пропускам ли нещо?

След преобразуване във формат на iPhone го нарязвам с mediafilesegmenter (намира се на Връзка с разработчици на Apple, Http инструменти за поточно предаване на живо):

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