2017-03-25 8 views
1

Ich versuche eine Web-App (mit Primefaces) zu bauen, die Echtzeit-Video auf einer HTML-Seite streamt. Das Video wird mit einem HDMI-zu-IP-Encoder (TBS2603) aufgenommen, der den Stream an HTTP ausgibt. Das Video ist Show auf der Seite mit:ffmpeg Codierung für HTML

<embed type="application/x-vlc-plugin" name="video" autoplay="yes" width="1024" height="768" target="http://myip:8080/hdmi" /> 

aber das Video zeigt, nicht auf der Seite mit <video>-Tag. Da ich auf mobilen Geräten streamen möchte und <video> streamen muss. Daher muss ich den Stream mit ffmpeg (nicht ffserver - wie es in zukünftigen Releases veraltet sein wird) transcodieren und auf Tomcat in einem anderen Kontext publizieren, der das Auflisten erlaubt.

I 3-Streams auf 3 Dateien erschaffe (ogg/mp4/WebM)

MP4

ffmpeg -i http://ip:8080/hdmi -vcodec libx264 -b:v 8192k -f segment -segment_time 4 -segment_list_size 0 -segment_list test.m3u8 -segment_format mpegts stream%05d.ts 

OGG

ffmpeg -i http://ip:8080/hdmi -acodec vorbis -vcodec libtheora test.ogg 

WEBM

ffmpeg -i http://ip:8080/hdmi -vcodec libvpx -acodec libvorbis test.webm 

Die Ströme werden auf JSF geladen:

<video width="640" height="480" controls="controls"> 
    <source src="#{testBean.video1}" type="video/mp4"/> 
    <source src="#{testBean.video2}" type="video/ogg" /> 
    <source src="#{testBean.video3}" type="video/webm" /> 
    Your browser does not support the video tag. 
    </video> 

Auf diese Weise ich die Ausgabe von den codierten Dateien erhalten - wie kann ich den Echtzeit-Stream aus dem Encoder bekommen?

Antwort

0

ich es geschafft, die HLS zu beheben, die entsprechende ffmpeg Befehl:

ffmpeg -y -i http://ip:8080/hdmi -codec copy -map 0 -f segment -segment_time 10 -segment_format mpegts -segment_list_flags +live -segment_list test.m3u8 -segment_list_type m3u8 stream%05d.ts 

Meine Frage bleibt nach wie vor das Ogg & webm zur Befestigung.