luni, 30 aprilie 2012

Compilare rtmpdump (patch by Xeebo) pe Linux

TV-Maxe 0.07 a introdus suport pentru stream-uri RTMP via rtmpdump, ceea ce a deschis poarta către o mulţime de stream-uri TV disponibile prin acest protocol. Problema este că rtmpdump oficial este învechit, aşa că nu prea funcţionează (stream-ul va fi redat câteva secunde după care... gata, somn). Din fericire cineva a făcut un patch care corectează acest comportament; din păcate va trebui să compilăm noi această versiune de rtmpdump. Urmează un scurt tutorial despre cum se face acest lucru:


  • Întâi instalaţi dependinţele necesare compilării. Pe Ubuntu asta ar însemna să rulăm:
sudo apt-get install build-essential gcc make subversion libssl0.9.8 libssl-dev libssl0.9.8 wget

  •  Descărcaţi versiunea patch-uită:
# link eliminat din cauza unor nereguli de ordin legal. Va fi necesar să căutaţi manual patch-ul lui Xeebo pentru librtmp.

  •  Dezarhivaţi conţinutul arhivei:
unzip rtmpdump-v2.5.zip -d rtmpdump

  •  chdir în folder-ul unde se află sursele:
cd rtmpdump/

  •  compilaţi şi instalaţi:

make SYS=posix XLIBS="-lm" SHARED="no"
sudo make install prefix="/usr"
Cam asta ar fi toată povestea. Pentru a vă asigura că totul a decurs cum trebuie, executaţi:
rtmpdump --help 2>&1 | grep RTMPDump
din consolă. Dacă vă apare RTMPDump v2.5 GIT-2012-03-31 (Handshake 10 support by Xeebo) înseamnă că aţi compilat şi instalat cu succes versiunea patch-uită de rtmpdump iar TV-Maxe va fi capabil să redea corect acest tip de stream-uri. Baftă!







18 comentarii :

marcelbanu spunea...

Instalat cu succes, dar nu pot testa momentan, nu am conexiune la net decît prin modem mobil...

comunistu spunea...

In sfirsit merge si TVR Cluj

comunistu spunea...

Revin cu o completare: imaginea pe TVR Cluj merge bine ,dar sunetul este sacadat.De ce oare?

Ovidiu spunea...

@comunistu - ţine de cum e codat stream-ul. Setează VLC ca backend, ăsta se descurcă mai bine cu unele codecuri.

Ovidiu spunea...

Nu uita să reporneşti aplicaţia după ce schimbi backend-ul

Adrian spunea...

Am urmat tutorialul si nu-mi functioneaza niciun post cu protocol RTMP. De asemenea, imi apare acel mesaj in terminal, semn ca am procedat bine. Ce e de facut ?

Ovidiu spunea...

Interesant... dacă execuţi "which rtmpdump" ce ţi se spune?

Adrian spunea...

Imi apare /usr/bin/rtmpdump

Ovidiu spunea...

Ok, până aici e bine. Rulează TV-maxe din consolă (tv-maxe), încearcă să redai un canal ce emite prin RTMP şi zi-mi ce apare în consolă

Adrian spunea...

http://dl.dropbox.com/u/24518511/error

Ovidiu spunea...

TVR-urile sunt singurele canale pe RTMP care nu funcţionează, sau nu funcţionează toate? Executa:

rtmpdump -v -r "rtmp://fms16.mediadirect.ro:1935/live3/_definst_" -a "live3/_definst_?id=45198790&publisher=2" -f "LNX 11,2,202,233" -W "http://static1.mediadirect.ro/player-preload/swf/dolce_video_1051/player.swf" -p "http://www.dolcetv.ro/#tv-live-TVR-International-86" --live -y "tvrcluj?id=45198790&publisher=2" | vlc -

si spune-mi daca iti merge stream-ul asa.

Adrian spunea...

Nu imi functioneaza niciun link de rtmp.

Uite ce imi da in terminal:
http://dl.dropbox.com/u/24518511/Error2

Xeebo spunea...

Handshake 10 patch requires librtmp to be compiled as static, try this:
make SYS=posix XLIBS="-lm" SHARED="no"
sudo make install

Adrian spunea...

Asa da, Xeebo !!! It works, thanks. Oare trebuie actualizat articolul ?

Ovidiu spunea...

Hmm.. la mine n-a fost nevoie să îl compilez static, dar o să modific totuşi în articol.

Anonim spunea...

salut,

Unele programe tv nu funcitioneaza in tv-maxe: tvr1, protv s.a.m.d.

Ce ar trebui sa faca?

Anonim spunea...

Unele streamuri rtmp ex. pro7, cnn, euronews se opresc dupa 55 de secunde de rulare. Se poate face ceva sau tine de stream?

Anonim spunea...

am instalat si eu versiunea 2.5 by xeebo dar tot nu merg fluxurile rtmp.am deschis tv-maxe in terminal si am mesajul
rtmpdump -v -r rtmp://lh01.mediadirect.ro/live3/_definst_/dolcesporthd -o /tmp/tmpLn3wCH
Stopped server
RTMP Error
Stopped server
[0x2d15910] access_http access error: failed to read answer
localhost - - [04/May/2013 20:12:49] "GET / HTTP/1.1" 404 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 54592)
Traceback (most recent call last):
[0x2d15910] access_mms access error: cannot connect to localhost:51763
File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 641, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 694, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
----------------------------------------