2015-08-11 3 views
2

У меня есть прямой поток из Unreal Media Server, который мне нужно отобразить на странице HTML5 с тегом <video>. До сих пор я подумываю об использовании библиотек ffmpeg для перекодирования потока с кодеком H.264 и вывода его в файл .mp4, а затем получить доступ к нему через http-протокол следующим образом: http://ip_addr/output_from_ffmpeg.mp4 Я, однако, не уверен, что это будет играть весь вывод файл с самого начала или поток в прямом эфире. Моя текущая команда FFmpeg для перекодирования потока:Прямая трансляция RTMP в HTML5

ffmpeg -i rtmp://IP_addr_of_rtmp_stream:5119/live/Roulette -c:v libx264 -maxrate 1000k -bufsize 2000k -g 50 output.mp4 

Может кто-нибудь мне точку в правильном направлении? Я также прочитал в документах, что ffserver может это сделать, но для них нет сборки Windows.

ответ

1

Я закончил с использованием VLC Player (который использует FFmpeg) для перекодирования потока RTMP с H.264 кодека и его отображения в формате .ogg со встроенным HTTP сервером VLC. Также я начал еще один экземпляр VLC для потоковой передачи HLS для устройств Apple. Вот две команды для H.264 и HLS соответственно (примечание: я сделал это на окнах, и используется wamp для HLS потоковом, как VLC не обеспечивает средства для перевозки в данном случае):

vlc.exe -I dummy rtmp://_ip_addr_of_the_rtmp_stream :network-caching=0 :sout=#transcode{vcodec=theo,vb=512,scale=1,acodec=none}:http{mux=ogg,dst=:8181/stream.ogg} :no-sout-rtp-sap :no-sout-standard-sap :sout-keep 

vlc.exe -I dummy rtmp://_ip_addr_of_the_rtmp_stream :network-caching=0 :sout="#transcode{vcodec=h264,vb=500, venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1}, aenc=none} :std{access=livehttp{seglen=10,delsegs=true,numsegs=5, index=C:\wamp\www\stream.m3u8, index-url=http://_ip_addr_of_your_web_server/stream-########.ts}, mux=ts{use-key-frames}, dst=C:\wamp\www\stream-########.ts}" 

Затем в HTML-страницы просто:

<video width="320" height="240" controls autoplay> 
    <source src="http://_ip_addr_of_your_web_server/stream.m3u8" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'/> 
    <source src="http://_ip_addr_of_your_web_server:8181/stream.ogg" type="video/ogg"> 
    Your browser does not support the video tag. 
</video> 

Дальнейшее чтение:

https://wiki.videolan.org/Documentation:Streaming_HowTo/Streaming_for_the_iPhone/

+0

Это не работает в Internet Explorer, к сожалению, если вы настроите таргетинг на все браузеры/устройства. – aergistal

+0

В случае IE и некоторых других, я бы порекомендовал fallback для flash/flv – astralmaster

+0

Flash fallback требует Flash-плеера, он не будет работать только с тегами HTML5. – aergistal

2

Вы не можете жить потоком, используя формат mp4, и вы не можете жить потоком, используя только теги HTML5. Ваша команда записывает поток в статический файл mp4, который будет передаваться через прогрессивную загрузку HTTP.

RTMP требует наличия Flash-плеера. Альтернативы включают в себя HLS и веб-плеер, который поддерживает флэш-резерв для рабочих столов (например, Clappr, JWPlayer, Flowplayer) или DASH через расширения источников мультимедиа (MSE) в браузерах, которые его поддерживают.

0

Unreal Медиа S erver v12 (выпущен 15 сентября 2016) поддерживает именно то, что вам нужно. Вам не нужно перекодировать что-либо. Та же самая трансляция, которая воспроизводилась через RTMP, теперь может воспроизводиться в теге HTML5.

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