Ob tem sem ugotovil da je najbolj optimalen quicktime player, ki je že vgrajen. Potrebno je le nekaj štrikarije na serverju, o tem kasneje.
Na koncu mi je uspelo iz VLC (for win) streamati na iPhonea live TV iz USB DVB-T sprejemnika. Zaenkrat nerešljiva težava pri interlaced sourcih (kot je DVB-T) je, da sout modul ne zna pravilno deinterlacat, zaradi česar je slika popačena - preozka po višini (ne združi dveh polframeov v enega). Pri progressive sourcih (npr playout iz datotek) ni težav.
Torej, koda na strani serverja (primer velja za vlc za windows, ki podpira dvb naprave):
Koda: |
vlc dvb-t://frequency=602000000 :dvb-bandwidth=8 :program=1 :sout=#transcode{vcodec=h264,venc=x264{no-cabac,level=3.0,subme=5,trellis=1,merange=16,min-keyint=25,scenecut=40,ipratio=0.71,ratetol=20k,vbv-maxrate=96k,vbv-bufsize=96k,qcomp=0.6,qpmin=10,qpmax=51,qpstep=4,keyint=30,ref=1,deblock=0:0,aud},threads=2,deinterlace,deinterlace-mode=linear,audio-sync,fps=25,width=300,height=240,vb=800,acodec=mp4a,ab=64,channels=2,samplerate=48000}:std{access=http,mux=ts,dst=0.0.0.0:8080/stream.ts} |
Namesto dvb sourca je lahko tudi datoteka, IPTV stream, usb kamera...
S tem bo VLC streamal v navidezni fajl stream.ts na vse interface.
To še ni dovolj za odpreti stream v iPhoneu. Na serverski strani potrebujemo web server. z index.html in stream.m3u8 datoteko.
Aplikacije za streamanje na iPhone uporabljajo tki. "segmenter" ki stream razbijajo v kratke datoteke zaradi hitrejšega indeksiranja. Jaz sem našel način brez segmenterja, tako da sami ustvarimo statično datoteko tipa m3u8.
index.html:
Koda: |
<html> <head> <title>VLC Stream</title> <meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/> </head> <body style="background-color:#FFFFFF; "> <center> <video src="http://<serverip:wwwport>/stream.m3u8" controls autoplay ></video> <object type='application/x-mpegURL' width='300' height='240' style='width:50%; height:40%; padding:25px; margin:25px'> <param name='src' value='http://<serverip:wwwport>/stream.m3u8' /> <param name='scale' value='aspect' /> <param name='autoplay' value='true' /> <param name='controller' value='false' /> </object> </center> </body> </html> |
in stream.m3u8 (spremeni ustrezne ipje in porte):
Koda: |
#EXTM3U #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-TARGETDURATION:10 #EXTINF:1, http://<serverip:wwwport>/segment1.ts #EXTINF:1, http://<serverip:wwwport>/segment2.ts #EXTINF:60, http://<serverip:8080>/stream.ts |
Sedaj je čas za prvi poskus:
1. zaženi vlc stream
2. v iphoneu odpri stran http://serverip:wwwport
3. klikni na link do videa
4. uživaj ali poskušaj še naprej. Ne obupuj, da se.
Pa še to - pri meni zadnja delujoča verzija VLC je 1.0.1.
Dve verziji, ki sta prišli za to, imata očitno neko napako pri kodekih, ker iPhone njunih streamov ne spozna ("video format not supported" - pri istih parametrih!).
Kot rečeno, težava je z deinterlacanjem, če kdo najde rešitev naj objavi.
Z nekaj dodatnega programiranja bi se dalo narediti interaktivno zadevo, podobno eyetv, the tube ali podobnim komercialnim programom.