2015-08-12 6 views
0

Я получаю поток HLS/AppleHTTP с FFmpeg. Поток источника выглядит так:Вперед HLS Stream - требуется решение

Input #0, hls,applehttp, from 'http://example.com/hls/index.m3u8': 
    Duration: 00:00:00.09, start: 42870.540944, bitrate: 91 kb/s 
    Program 0 
    Metadata: 
     variant_bitrate : 0 
    Stream #0:0: Video: h264 (High) ([27][0][0][0]/0x001B), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 12.50 fps, 25 tbr, 90k tbn, 50 tbc 
    Stream #0:1: Audio: aac ([15][0][0][0]/0x000F), 48000 Hz, stereo, fltp, 114 kb/s 
    Stream #0:2: Unknown: none ([21][0][0][0]/0x0015) 

Мне нужно переправить этот поток с помощью FFmpeg на Stream Server. Моя проблема заключается в том, как это сделать с FFmpeg без кодирования и иметь высокую загрузку процессора (думаю, видео-копирование -аудио-копия). Во-вторых, какое потоковое серверное программное обеспечение является лучшим (с низким потреблением процессора) для получения потока и отправки его пользователям в виде потока HLS?

ответ

3

HLS предназначенный для HTTP Live Streaming. Вам не нужен специальный сервер для отправки его клиентам, просто обычный веб-сервер, такой как Nginx (один из ваших тегов).

Вы можете сделать:

ffmpeg -i http://example.com/hls/index.m3u8 -c copy /path/to/web/dir/index.m3u8

Команда будет создавать список воспроизведения и копирования сегментов /path/to/web/dir, который находится в корневом каталоге веб-сервера. Клиентам нужен только новый URL.

Все будет сложнее, если входной список воспроизведения является основным списком воспроизведения, содержащим несколько вариантов потоков. В этом случае вам нужно записать все отдельные потоки в разные каталоги и написать новый мастер-плейлист на вашей стороне, чтобы перегруппировать разные потоки.

+0

спасибо большое за это отличное решение! я не знал, что ffmpeg будет постоянно «загружать» сегменты и создавать файл index.m3u8. Это действительно здорово. Еще раз спасибо. – Chris

+0

Я только что протестировал ваше решение, идея отличная, но ... когда я играю в VLC, сегменты меняются каждые 2 секунды ... я уже добавил опцию -segment_time 30, но без изменений ... здесь моя вся команда ffmepg: ./ffmpeg -ih ** p: //example.com/hls/index_2500.m3u8 -c copy -hls_wrap 18 -hls_list_size 9 -segment_list_flags + live -segment_time 30/var/www/hls/index .m3u8 ... и поток похож на замораживание при каждом изменении файла ... знаете ли вы, как его решить? Кстати. Я использую lighty вместо nginx .. Может быть, это проблема? – Chris

+3

Решенный. добавили -hls_time './ffmpeg -i http://example.com/index.m3u8 -c copy -segment_list_flags + live -hls_time 10 -hls_list_size 6 -hls_wrap 10 -segment_list_type m3u8 -map 0: 0 -map 0: 1 -segment_time 10/var/www/hls/index.m3u8' Спасибо за поддержку. – Chris

0

лучше работал со мной, изменилось hls_wrap быть равна hls_list_size, также hsl_time равна segment_time

./ffmpeg -i http://example.com/index.m3u8 -c copy -segment_list_flags +live -hls_time 4 -hls_list_size 6 -hls_wrap 6 -segment_list_type m3u8 -map 0:0 -map 0:1 -segment_time 4 /var/www/hls/index.m3u8 

 Смежные вопросы

  • Нет связанных вопросов^_^