VLC - OggTheora streaming hang gond

Fórumok

Erdekes problemaval kuszkodok VLCvel:
Adott egy Hauppauge WinTV PCIos tunerkartya (Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)). S-Videon kapja meg a kepet.
Ezt sikerult is beallitani, hogy VLC kuldje ki a videot Icecast2 szerverre. Gyonyoruen mukodik (hang nelkul).
Azonban ha megprobalom beallitani a hangot is akkor 3-4 masodperc streameles utan megall az egesz. Ilyenkor az Icecast2 webfeluleterol is eltunik.
Jelenleg ezzel a parameterrel probalom:


cvlc -vvv v4l2:// :v4l2-dev=/dev/video0 :v4l2-fps=25 :v4l2-input=3 :v4l2-standard=2 :v4l2-width=720 :v4l2-height=576 :input-slave=alsa://hw:1,0 --sout='#transcode{fps=25,vcodec=theo,vb=1024,scale=0,acodec=vorb,ab=128,channels=2,samplerate=44100}:std{access=shout,mux=ogg,dst=teszt:teszt@192.168.0.1:8000/video.ogv}'

Ezt a logot hozta ossze a VLC: http://syserr.hu/vlc.log
A gepben ket hangkartya van. Egy SB Audigy es egy integralt vacak. Mindkettovel ugyanezt csinalja. Kiprobaltam virtualis videoeszkozzel is (vivi modul), de nem lett jo azzal se.

A rendszer Debian testing, kernel 2.6.31.4, minden csomagbol lett felteve

Help pls!

Hozzászólások

Update:
Upgradeltem 1.0.3-as VLC-re, a helyzet valtozatlan
Az Icecast2 logjanal erre vonatkozo resze:


[2009-12-05  00:33:48] DBUG stats/process_source_event new node audio_samplerate (44100)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node audio_channels (2)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node audio_bitrate (128000)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node ice-bitrate (128)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node video_bitrate (1024000)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node video_quality (12)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node frame_size (720 x 576)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node frame_rate (25.00)
[2009-12-05  00:33:48] DBUG stats/process_source_event new node subtype (Theora/Vorbis)
[2009-12-05  00:33:51] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:33:51] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:33:56] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:33:56] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:34:01] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:34:01] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:34:06] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:34:06] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:34:11] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:34:11] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:34:16] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:34:16] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:34:21] DBUG source/get_next_buffer last 1259969630, timeout 30, now 1259969661
[2009-12-05  00:34:21] WARN source/get_next_buffer Disconnecting source due to socket timeout
[2009-12-05  00:34:21] INFO source/source_shutdown Source "/video.ogv" exiting
[2009-12-05  00:34:21] DBUG source/source_clear_source clearing source "/video.ogv"
[2009-12-05  00:34:21] DBUG format-ogg/format_ogg_free_headers releasing header pages
[2009-12-05  00:34:21] DBUG format-ogg/free_ogg_codecs freeing codecs
[2009-12-05  00:34:21] DBUG format-theora/theora_codec_free freeing theora codec
[2009-12-05  00:34:21] DBUG format-vorbis/vorbis_codec_free freeing vorbis codec
[2009-12-05  00:34:21] DBUG source/source_free_source freeing source "/video.ogv"
[2009-12-05  00:34:21] DBUG stats/modify_node_event update node total_bytes_read (187219)
[2009-12-05  00:34:21] DBUG stats/modify_node_event update node total_bytes_sent (0)
[2009-12-05  00:34:21] DBUG stats/process_source_event delete source node /video.ogv
[2009-12-05  00:34:21] DBUG stats/modify_node_event update node clients (0)
[2009-12-05  00:34:21] DBUG stats/modify_node_event update node sources (0)

Ezutan a vlc latszolag fut tovabb, egyebkent innentol nem megy egy arva bit se a szerver fele.
Kiprobaltam azt is, hogy nem Icecast2 szerverre kuldom a videot hanem egy fileba, es erdekes modon ugy tokeletesen jo.
Na, akkor gondoltam, hogy csinalok mkfifo-val out.ogg filot majd eloszedtem a http://hup.hu/node/60255 -ban talalt OGG-rol AACra transkodolo perl scriptet (ami a mai napig tokeletesen mukodik) es ezt atirva hasznalom a video kuldesere, es itt mar ereztem is hogy valami nem lesz jo (es biztos voltam benne, hogy nem a perl script-tel lesz a gond). Na innentol a VLC kitalalta hogy o biza nem akar irni az mkfifo-val letrehozott fileba. Helyette ugy csinal mintha minden ok lenne, de nem kuld a VLC abba se semmit se.
Erdemes egyaltalan Linux alatt foglalkozni video streamingel vagy inkabb maradjak a WinXP + NSV videonal?
Pedig pont az NSVt akarom levaltani OGV-re pont amiatt mert a Firefox alapbol lejatsza az OGV-t oprendszertol fuggetlenul es igen, nem kell Flash se neki.

Kozben kiprobaltam egy Canopus ACEDVio kartyaval is a dolgot, de most nem VLCvel hanem e leiras szerint: http://en.flossmanuals.net/FFmpeg2Theora/StreamingDV
Maga a kartya egy olyan Firewire kartya aminek van analog bemenete es kimenete is. Ennel is rossz eloerzetem volt, ezert elotte XP alatt direkt kiprobaltam, radugtam az analog jelet, tokeletesen ott volt a kep, ment a felvetel is.
Debian alatt meg elintezte egy `Waiting for DV...` uzenettel.
Otlet?

Na, masik geppel is kiprobaltam, Ugyanaz a helyzet VLCvel. 5-6 masodperc utan megall, Icecast2 ledobja azt a mountpointot, a VLC meg ugy csinal mintha mi sem tortent volna. CPU terheles is ugyanannyi.
Kiprobaltam egy ilyet is:


ffmpeg2theora /dev/video0 -f video4linux --inputfps 25 -x 320 -y 240 -o - | oggfwd 192.168.0.8 8000 teszt /teszt.ogg

Es nincs hang! Alsamixerben a tunerkartyan pedig be van allitva. 720*576-os felbontasra meg ezt hazudja:


[video4linux @ 0x8066bd0]VIDIOCMCAPTURE: Invalid argument

File `/dev/video0' does not exist or has an unknown data format.
oggfwd: Connected to server
oggfwd: Quitting ...
oggfwd: Total bytes read: 0

Mar nagyon kozel vagyok a feladashoz :(

Nos, rögtön az elején leszögezném, hogy konkrétan ilyennel még nem foglalkoztam (tunerről streamelés Icecast szervernek), de megpróbálok segíteni.

A VLC logból számomra egyértelműen látszik, hogy valami miatt nem tudja a VLC elég gyorsan olvasni a hangbemenetet (ALSA read overrun). Első körben szerintem próbáld megnövelni az alsa pufferét (--alsa-caching 3000). Ha ez nem segít, egészítsd ki a transcode paramétereket egy audio-sync opcióval:

cvlc -vvv v4l2:// :v4l2-dev=/dev/video0 :v4l2-fps=25 :v4l2-input=3 :v4l2-standard=2 :v4l2-width=720 :v4l2-height=576 :input-slave=alsa://hw:1,0 --sout='#transcode{fps=25,vcodec=theo,vb=1024,scale=0,acodec=vorb,ab=128,channels=2,samplerate=44100,audio-sync}:std{access=shout,mux=ogg,dst=teszt:teszt@192.168.0.1:8000/video.ogv}'

Következő lépésként elgondolkoznék azon, hogy érdemes-e egy kísérleti stádiumban lévő opcióval próbálkozni (vlc -H | grep input-slave). Lehet (több mint valószínű), hogy ez a feature még kiforratlan, úgyhogy szerintem próbálkozz más megoldással, pl. a VLM használatával. A VLM-mel több streamet tudsz egyidejűleg szórni, anélkül, hogy külön VLC-példányt kéne futtatnod minden bemenethez. Készíts egy VLM-konfigot, ami például így nézhet ki, alapul véve a fenti paramétereket:

new video broadcast enabled
setup video input v4l2:///dev/video0:width=720:height=576:standard=2:input=3:fps=25
setup video output #transcode{sfilter=mosaic,fps=25,vcodec=theo,vb=1024,scale=1}:bridge-in{id-offset=100}:std{access=shout,mux=ogg,dst=teszt:teszt@192.168.0.1:8000/video.ogv}

new audio broadcast enabled
setup audio input alsa://hw:1,0
setup audio output #transcode{acodec=ogg,samplerate=44100,channels=2,ab=128}:bridge-out
#ha nem jo a hang, probald meg ezt:
#setup audio option alsa-caching=3000

control video play
control audio play

Ha kész, mentsd el vlm.conf néven, majd add be a vlc-nek:

vlc -vv --vlm-conf vlm.conf

Remélem, tudtam segíteni!

Kozben masik gepen tudom folytatni a probalkozast. Minden ugyanaz csak itt integralt hangkari van.
Ezzel a configgal el is indul


new video broadcast enabled
setup video input v4l2:///dev/video0:width=720:height=576:standard=2:input=3:fps=25
setup video output #transcode{sfilter=mosaic,fps=25,vcodec=theo,vb=1024,scale=1}:bridge-in{id-offset=100}:std{access=shout,mux=ogg,dst=teszt:teszt@192.168.0.8:8000/video.ogv}

new audio broadcast enabled
setup audio input alsa://hw:0,0
setup audio output #transcode{acodec=ogg,samplerate=44100,channels=2,ab=128}:bridge-out
setup audio option alsa-caching=3000

control video play
control audio play

, de most egy ilyen hibauzenetet ad:


ALSA lib pcm_hw.c:1433:(_snd_pcm_hw_open) Invalid value for card
[0x8122928] [Média: audio] access_alsa demux error: cannot open device hw:0,0 for ALSA audio (Nincs ilyen f?jl vagy k?nyvt?r)
[0x812dcf8] [Média: audio] main access error: no access module matched "alsa"
[0x80fbc18] [Média: audio] main input error: open of `alsa://hw:0,0' failed: no access module matched "alsa"
[0x80fbc18] [Média: audio] main input error: A bemenet nem nyitható meg
[0x80fbc18] [Média: audio] main input error: A VLC nem képes megnyitni a(z) ???alsa://hw:0,0??? MRL-t.
[0x8118ad0] [Média: video] mux_ogg mux: Open

Nemi alsa informacio:


teszt:~# cat /proc/asound/cards
 0 [V8235          ]: VIA8233 - VIA 8235
                      VIA 8235 with ALC655 at 0xe400, irq 10
 1 [CX8811         ]: CX88x - Conexant CX8811
                      Conexant CX8811 at 0xde000000
teszt:~# cat /proc/asound/devices
  0: [ 0]   : control
  1:        : sequencer
 16: [ 0- 0]: digital audio playback
 17: [ 0- 1]: digital audio playback
 24: [ 0- 0]: digital audio capture
 25: [ 0- 1]: digital audio capture
 32: [ 1]   : control
 33:        : timer
 56: [ 1- 0]: digital audio capture
teszt:~#

Line-in engedelyezve van, ez volt az elso amit megneztem.
Kiprobaltam amit irtal:


[0x8123360] [Média: audio] v4l demux error: cannot get capabilities (?rv?nytelen param?ter)
[0x8122570] [Média: audio] main access error: no access module matched "v4l"
[0x80fa948] [Média: audio] main input error: open of `v4l:///dev/dsp' failed: no access module matched "v4l"
[0x80fa948] [Média: audio] main input error: A bemenet nem nyitható meg
[0x80fa948] [Média: audio] main input error: A VLC nem képes megnyitni a(z) ???v4l:///dev/dsp??? MRL-t.
[0x8117338] [Média: video] mux_ogg mux: Open
[0x8399478] [Média: video] main filter error: couldn't set priority of non-existent thread

/dev -ben ott van a dsp es hogy biztosra menjek a jogokat is atallitottam 777-re
Kiprobaltam a v4l2-vel is, hatha...


[0x8121f48] [Média: audio] v4l2 demux error: cannot get video capabilities (?rv?nytelen param?ter)
libv4l2: error getting capabilities: Érvénytelen paraméter
[0x8121f48] [Média: audio] v4l2 demux error: cannot get video capabilities (?rv?nytelen param?ter)
[0x8121f38] [Média: audio] v4l2 access error: cannot get video capabilities (?rv?nytelen param?ter)
libv4l2: error getting capabilities: Érvénytelen paraméter
[0x8121f38] [Média: audio] v4l2 access error: cannot get video capabilities (?rv?nytelen param?ter)
[0x80fa9c0] [Média: audio] main input error: open of `v4l2:///dev/dsp' failed: (null)
[0x80fa9c0] [Média: audio] main input error: A bemenet nem nyitható meg
[0x80fa9c0] [Média: audio] main input error: A VLC nem képes megnyitni a(z) ???v4l2:///dev/dsp??? MRL-t.
[0x8121f38] [Média: video] mux_ogg mux: Open
[0x83985d8] [Média: video] main filter error: couldn't set priority of non-existent thread

mocp -vel direkt megneztem hogy ugyan mukodik-e a hangkari, de az ment rogton elsore.

hw:0,1 -el tokeletesen mukodik!
Es ha mar minden megy akkor feltettem az eles gepre is a cuccot. Es NINCS HANG.
Az mplayer ezt adja ki ha le akarom jatszani:


teszt:~# mplayer -vo null http://192.168.1.31:8000/video.ogv
MPlayer SVN-r29142-4.3.3 (C) 2000-2009 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing http://192.168.1.31:8000/video.ogv.
Connecting to server 192.168.1.31[192.168.1.31]: 8000...
Name   : VLC media player - Live stream
Genre  : Alternative
Website: http://www.videolan.org/vlc
Public : no
Cache size set to 320 KBytes
Cache fill:  0.00% (0 bytes)
[Ogg] stream 0: video (Theora v3.2.1), -vid 0
Ogg file format detected.
VIDEO:  [theo]  720x576  24bpp  25.000 fps    0.0 kbps ( 0.0 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
[theora @ 0xb5f69860]Missing extradata!
Could not open codec.
VDecoder init failed :(
Opening video decoder: [theora] Theora/VP3
VDec: vo config request - 720 x 576 (preferred colorspace: Planar YV12)
VDec: using Planar YV12 as output csp (no 0)
Movie-Aspect is 1.33:1 - prescaling to correct movie aspect.
VO: [null] 720x576 => 768x576 Planar YV12
Selected video codec: [theora] vfm: theora (Theora (free, reworked VP3))
==========================================================================
Audio: no sound
Starting playback...
Ogg : bad packet in stream 0
V:   0.1   3/  3 ??% ??% ??,?% 0 0 13%

Tehat itt mar nem hangkartya gond, hanem maga a VLC nem akarja beletenni a hangot a stream-be, mivel mar a VLC-nel is megszunt az osszes hanggal kapcsolatos gond es nincs mar hibauzenet sem

A vlm.conf most igy nez ki:


new video broadcast enabled
setup video input v4l2:///dev/video32:width=720:height=576:standard=6:input=1:fps=25
setup video output #transcode{fps=25,vcodec=theo,vb=512,scale=1}:bridge-in{id-offset=100}:std{access=shout,mux=ogg,dst=teszt:teszt@192.168.1.31:8000/video.ogv}

new audio broadcast enabled
setup audio input alsa://hw:0,1
setup audio output #transcode{acodec=vorbis,samplerate=44100,channels=2,ab=128:bridge-out
setup audio option alsa-caching=3000

control video play
control audio play

Ujra van idom ezzel foglalkozni.
Es most mar van hang, azt en se vettem eszre :)
Viszont hogy ne legyen egyszeru a dolog: Csak nehany masodpercig jo veteli oldalon, utana megall a kep, de a hang megy tovabb. Ha ujracsatlakozok a lejatszoval akkor nagyon nehezen csatlakozik fel, ekkor mar a kep megy duplasebesseggel (amig ki nem fogy a buffer) es mindezt hang nelkul.
Most a tesztgep egy Core2duo E7400 2.8->4.0Ghz es siman eszik a vlc 100% procit az egyik magon. Ekkora procizabalas egy 25 FPS-es 720*576-os felbontasnal kicsit sok szerintem. (Ugyanilyen minoseget WinXP alatt az NSVCap 15-20% procihasznalattal oldja meg egy E5200-es procin)
Otlet?

+subscribe
____________________
Ha igen akkor miért nem...
Linux 2.6.30-gentoo-r4 i686 Intel(R) Core(TM)2 Duo CPU E6550 @ 2.33GHz GenuineIntel GNU/Linux

Sziasztok.

Próbálnék egy olyat összehozni, hogy "A" helyről egy webkamera képét küldeném streamként "B" helyen levő icecast2 szerverre. Azt szeretném, hogy a user-ek a szerverre csatlakozva nézhessék online a stream-et.

A stream-et a vlc-vel küldeném. Tud valaki icecast2 beállításában segíteni, mert nem nagyon jutok vele dűlőre. Az is jó lenne, ha valaki tudna egy példa icecast.xml-t mutatni.

köszönöm

<= Powered By Ubuntu & Gentoo Linux =>

'Software is like sex: It's better when it's free!'
By Linus Torvalds