|
ElZar
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
Moin Forum. Ich schaffs leider nicht RTMPDump zu compilen, evtl hat hier jmd ne Idee.
OpenSSL ist installiert, ka was für Verzeichnisse da gesucht werden..
Folgende Ausgabe erscheint: make rtmpdump
g++ -Wall -c -o rtmp.o rtmp.cpp
In Datei, eingefügt von rtmp.h:43,
von rtmp.cpp:36:
dh.h:21:24: Fehler: openssl/bn.h: No such file or directory
dh.h:22:24: Fehler: openssl/dh.h: No such file or directory
dh.h:24:25: Fehler: openssl/sha.h: No such file or directory
dh.h:25:26: Fehler: openssl/hmac.h: No such file or directory
dh.h:26:25: Fehler: openssl/rc4.h: No such file or directory
In file included from rtmp.h:43,
from rtmp.cpp:36:
dh.h:30: Fehler: »BIGNUM« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »y« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »BIGNUM« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »p« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »BIGNUM« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »q« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:31: Fehler: expected constructor, destructor, or type conversion before »*« token
dh.h:32: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:32: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: expected primary-expression before »*« token
dh.h:33: Fehler: »pubkey« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: expected primary-expression before »nPubkeyLen«
dh.h:33: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:34: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:34: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:34: Fehler: expected primary-expression before »*« token
dh.h:34: Fehler: »privkey« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:34: Fehler: expected primary-expression before »nPrivkeyLen«
dh.h:34: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:35: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: expected primary-expression before »*« token
dh.h:35: Fehler: »pubkey« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: expected primary-expression before »nPubkeyLen«
dh.h:35: Fehler: expected primary-expression before »*« token
dh.h:35: Fehler: »secret« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:36: Fehler: Variable oder Feld »DHFree« als »void« deklariert
dh.h:36: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:36: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
In file included from rtmp.cpp:36:
rtmp.h:94: Fehler: ISO-C++ verbietet Deklaration von »DH« ohne Typ
rtmp.h:94: Fehler: expected »;« before »*« token
rtmp.h:95: Fehler: ISO-C++ verbietet Deklaration von »RC4_KEY« ohne Typ
rtmp.h:95: Fehler: expected »;« before »*« token
rtmp.h:96: Fehler: ISO-C++ verbietet Deklaration von »RC4_KEY« ohne Typ
rtmp.h:96: Fehler: expected »;« before »*« token
rtmp.cpp: In member function »int RTMP_LIB::CRTMP::ReadN(char*, int)«:
rtmp.cpp:450: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyIn«
rtmp.cpp:451: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyIn«
rtmp.cpp:451: Fehler: »RC4« wurde in diesem Gültigkeitsbereich nicht definiert
rtmp.cpp: In member function »bool RTMP_LIB::CRTMP::WriteN(const char*, int)«:
rtmp.cpp:469: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyOut«
rtmp.cpp:471: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyOut«
rtmp.cpp:471: Fehler: »RC4« wurde in diesem Gültigkeitsbereich nicht definiert
make: *** [rtmp.o] Fehler 1Den 2. Schritt hab ich dann auch versucht, kommt aber die selbe Meldung (was zu erwarten war): make streams
g++ -Wall -c -o rtmp.o rtmp.cpp
In Datei, eingefügt von rtmp.h:43,
von rtmp.cpp:36:
dh.h:21:24: Fehler: openssl/bn.h: No such file or directory
dh.h:22:24: Fehler: openssl/dh.h: No such file or directory
dh.h:24:25: Fehler: openssl/sha.h: No such file or directory
dh.h:25:26: Fehler: openssl/hmac.h: No such file or directory
dh.h:26:25: Fehler: openssl/rc4.h: No such file or directory
In file included from rtmp.h:43,
from rtmp.cpp:36:
dh.h:30: Fehler: »BIGNUM« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »y« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »BIGNUM« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »p« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »BIGNUM« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: »q« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:30: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:31: Fehler: expected constructor, destructor, or type conversion before »*« token
dh.h:32: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:32: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: expected primary-expression before »*« token
dh.h:33: Fehler: »pubkey« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:33: Fehler: expected primary-expression before »nPubkeyLen«
dh.h:33: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:34: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:34: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:34: Fehler: expected primary-expression before »*« token
dh.h:34: Fehler: »privkey« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:34: Fehler: expected primary-expression before »nPrivkeyLen«
dh.h:34: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:35: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: expected primary-expression before »*« token
dh.h:35: Fehler: »pubkey« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: expected primary-expression before »nPubkeyLen«
dh.h:35: Fehler: expected primary-expression before »*« token
dh.h:35: Fehler: »secret« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:35: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
dh.h:36: Fehler: Variable oder Feld »DHFree« als »void« deklariert
dh.h:36: Fehler: »DH« wurde in diesem Gültigkeitsbereich nicht definiert
dh.h:36: Fehler: »dh« wurde in diesem Gültigkeitsbereich nicht definiert
In file included from rtmp.cpp:36:
rtmp.h:94: Fehler: ISO-C++ verbietet Deklaration von »DH« ohne Typ
rtmp.h:94: Fehler: expected »;« before »*« token
rtmp.h:95: Fehler: ISO-C++ verbietet Deklaration von »RC4_KEY« ohne Typ
rtmp.h:95: Fehler: expected »;« before »*« token
rtmp.h:96: Fehler: ISO-C++ verbietet Deklaration von »RC4_KEY« ohne Typ
rtmp.h:96: Fehler: expected »;« before »*« token
rtmp.cpp: In member function »int RTMP_LIB::CRTMP::ReadN(char*, int)«:
rtmp.cpp:450: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyIn«
rtmp.cpp:451: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyIn«
rtmp.cpp:451: Fehler: »RC4« wurde in diesem Gültigkeitsbereich nicht definiert
rtmp.cpp: In member function »bool RTMP_LIB::CRTMP::WriteN(const char*, int)«:
rtmp.cpp:469: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyOut«
rtmp.cpp:471: Fehler: »struct RTMP_LIB::LNK« hat kein Element namens »rc4keyOut«
rtmp.cpp:471: Fehler: »RC4« wurde in diesem Gültigkeitsbereich nicht definiert
make: *** [rtmp.o] Fehler 1Ich hoffe ihr habt ne Ahnung woran das liegt, das RTMPDump Projekt gibts ja leider nicht mehr auf Sourceforge. Grüße
|
|
ElZar
(Themenstarter)
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
Keiner ne Ahnung? Hab zwar Binaries gefunden, aber da ist rtmpe nicht mit drin.
|
|
Funatiker
Anmeldungsdatum: 24. November 2007
Beiträge: 123
Wohnort: Pirmasens
|
Sieht ganz so aus, als fehlten irgendwelche openssl-development-Header oder so. Schau mal, ob es ein openssl-dev-Paket gibt. Nachtrag:
Das Paket, das fehlt, ist libssl-dev.
|
|
ElZar
(Themenstarter)
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
Coole Sache, das wars. Nu hab ich leider gleich das nächste Problem. Bin wohl zu doof das richtig zu benutzen.
Wollte zb diesen Stream von MTV capturen:
http://www.mtv.de/videos/20119251 Mit einem URL-Sniffer bin ich an diese Adresse gekommen:
rtmp://cp22006.edgefcs.net/ondemand/mtviestor/_!/intlod/de/_flash/musikvideos/mando_diao/mando_diao_gloria_od_flv.flv Wenn ich nun versuche den Stream zu capturen, kommt nur folgendes: ./get_iplayer -g 'rtmp://cp22006.edgefcs.net/ondemand/mtviestor/_!/intlod/de/_flash/musikvideos/mando_diao/mando_diao_gloria_od_flv.flv'
get_iplayer v1.90, Copyright (C) 2009 Phil Lewis
This program comes with ABSOLUTELY NO WARRANTY; for details use --warranty.
This is free software, and you are welcome to redistribute it under certain
conditions; use --conditions for details.
INFO: 0 Matching Programmes Der Befehl "rtmpdump" ist irgendwie garnicht verfügbar... weißt du vlt auch wie ich das richtig benutze? ☺ THX schonmal :>
|
|
fnordschrat
Anmeldungsdatum: 17. Oktober 2007
Beiträge: 562
|
get_iplayer ist ausschließlich für das Onlineangebot der BBC. Wenn das Programm erfolgreich kompiliert wurde, müsste die Datei rtmpdump_x86 vorhanden sein. ./rtmpdump_x86 -r 'rtmp://cp22006.edgefcs.net/ondemand/mtviestor/_!/intlod/de/_flash/musikvideos/mando_diao/mando_diao_gloria_od_flv.flv' -o mtvkrach.flv Grüße
|
|
ElZar
(Themenstarter)
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
Jo das wars, fettes THX an euch beide :> BTW, "MTVKrach.flv" war ein guter Name für die Ausgabe *g* ...hab den Song nur für meine kleine Schwester gesaugt die "Gloria" heisst 😉 Aber für nen Song auf MTV ist der garnicht so schlecht, steh eigentlich auf so Retro-Sound :> Wie auch immer, THX nochmal.
|
|
Funatiker
Anmeldungsdatum: 24. November 2007
Beiträge: 123
Wohnort: Pirmasens
|
Wir befreien Mando Diao - Gloria aus dem mtv-Video-Archiv Vorab: Wir haben schon auf mtv.de/videos nach dem Video geschaut und die Adresse der Video-Seite herausgefunden. Sie lautet http://www.mtv.de/videos/20119251 . Wir merken uns die öffentliche ID 20119251. Vorbereitungen: Wir installieren libssl-dev sowie curl und schnappen uns die Sources von rtmpdump Ermitteln der rtmp-URI: 1. Wir schauen im im Quelltext von http://www.mtv.de/videos/20119251 nach der Zeile: | var uri = "mgid:uma:video:mtv.de:379829";
|
und merken uns die interne ID also 379829.2. Nun werfen wir einen Blick auf http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid=379829&hiLoPref=hi. (Die Zahl hinter vid= ist übrigens die interne ID.) In dieser xml-Datei befindet sich ein <src>-Tag, das die rtmp-URI enthält. Genau die brauchen wir. Die beiden Schritte als shell-Befehl:
curl "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid=$(curl http://www.mtv.de/videos/20119251 2>/dev/null | grep uri | cut -d: -f5 | cut -d\" -f1)&hiLoPref=hi" 2>/dev/null | grep rtmp | cut -d\> -f2 | cut -d\< -f1
Herunterladen der .flv-Datei: ./rtmpdump_x86 -r rtmp://cp22006.edgefcs.net/ondemand/mtviestor/_!/intlod/de/_flash/musikvideos/mando_diao/mando_diao_gloria_od_flv.flv -o mando_diao_gloria.flv Alternativ: rtmp-URI ermitteln und flv herunterladen in einem Schritt ./rtmpdump_x86 -r $(curl "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid=$(curl http://www.mtv.de/videos/20119251 2>/dev/null | grep uri | cut -d: -f5 | cut -d\" -f1)&hiLoPref=hi" 2>/dev/null | grep rtmp | cut -d\> -f2 | cut -d\< -f1) -o mando_diao_gloria_od_flv.flv Viel Spaß damit (: (Übrigens bin ich auch über die mtv.de/videos auf rtmpdump gestoßen!)
|
|
ElZar
(Themenstarter)
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
also an die URL kommt man zb leichter mit URL Snooper. kenne davon zwar leider keine Linuxversion, aber man müsste es mal mit wine testen.. obwohl dein "Alternativ-Befehl" auch was für sich hat :> ich bin übrigens hauptsächlich durch adobe auf rtmpdump aufmerksam geworden, hätten die nicht so einen aufstand geschoben, wäre das an mir vorbei gegangen :>
|
|
Funatiker
Anmeldungsdatum: 24. November 2007
Beiträge: 123
Wohnort: Pirmasens
|
Ich finde nicht, dass der URL Snooper einfacher ist als nen Konsolenbefehl. Der Grund, weswegen man das Video lädt ist ja, dass den Flashplayer bei rtmp unter 64bit Systemen abstürzt. Daher würde man auch mit dem URL Snooper nicht weit kommen (btw. Firebug für Firefox tut das gleiche wie der URL Snooper). Der Alternativ-Befehl ist ja "nur" Ermitteln der rtmp-URI und herunterladen als ein einzelner Befehl. Das macht eigentlich Jedes zusätzliche Programm neben curl und rtmpdump überflüssig.
|
|
ElZar
(Themenstarter)
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
hm naja, jedesmal den befehl anzupassen erscheint mir irgendwie umständlicher als im urlsnooper (oder ähnlichem) die rtmp adresse zu kopieren und sie in die konsole mit "./rtmpdump_x86 -r 'adresse' ausgabe.flv" einzufügen. trotzdem danke für die lösung :>
|
|
Funatiker
Anmeldungsdatum: 24. November 2007
Beiträge: 123
Wohnort: Pirmasens
|
Bis ich die URI mit URL snooper rausgefunden hab, ist der Befehl zehn mal angepasst (: Aber okeh. Hier meine mtv.sh: | #!/bin/sh
########################
## ##
## ~MTV Video Ripper~ ##
## 2009 Funatiker GPL ##
## ##
########################
./rtmpdump_x86 -r $(curl "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid=$(curl http://www.mtv.de/videos/$1 2>/dev/null | grep uri | cut -d: -f5 | cut -d\" -f1)&hiLoPref=hi" 2>/dev/null | grep rtmp | cut -d\> -f2 | cut -d\< -f1) -o $1.flv
|
Dann musst du nur noch das Script gefolgt von der öffentlichen Video-ID aufrufen und schon landet die Datei auf deiner Festplatte. (In meinem Fall geht das z.B. mit ~/rtmpdump/mtv.sh 20119251 - je nachdem, wo du das Script gespeichert hast)
|
|
ElZar
(Themenstarter)
Anmeldungsdatum: 29. September 2007
Beiträge: 38
|
so gefällt mir das schon besser, danke dir ;>
|
|
Funatiker
Anmeldungsdatum: 24. November 2007
Beiträge: 123
Wohnort: Pirmasens
|
Bitte (: Man hilft doch, wo man kann.. A propos: Mir fällt grad ne Marktlücke auf: Es gibt schon tausende youtube → mp3 Seiten. Aber wo bleibt die mtv.de/video → ogg Seite 😀 Nachtrag:
Wie mir SilverSurfer2009 mitteilte, funktioniert das Script zum Herunterladen von Musikvideos bei MTV.de nicht mehr. Vor einiger Zeit stellte ich schon fest, dass MTV manche Videos von rtmp auf http umgestellt hatte. Der Verdacht bestätigte sich: Genau wegen dieser Umstellung ist das Script nicht mehr zu gebrauchen. Ich passte das Script so an, dass es sowohl rtmp als auch http unterstützt. Erst danach bemerkte ich, dass quasi kein Video mehr über rtmp verfügbar ist… Wie dem auch sei. Hier das funktionierende Script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 | #!/bin/sh
########################
## ##
## ~MTV Video Ripper~ ##
## 2009 Funatiker GPL ##
## ##
########################
uri=$(curl "http://de.esperanto.mtvi.com/www/xml/flv/flvgen.jhtml?vid=$(curl http://www.mtv.de/videos/$1 2>/dev/null | grep uri\ \= | cut -d: -f5 | cut -d\" -f1)&hiLoPref=hi" 2>/dev/null | grep "<src>" | cut -d\> -f2 | cut -d\< -f1)
proto=$(echo $uri | cut -d\: -f1)
if [ "$proto" = "http" ]; then
wget $uri -O $1.flv
elif [ "$proto" = "rtmp" ]; then
./rtmpdump_x86 -r $uri -o $1.flv
else
echo FAIL $proto $uri
fi
|
|
|
danjoh
Anmeldungsdatum: 28. Januar 2010
Beiträge: 14
|
Ich hab mal noch ne Frage zu RTMPDump... Ist es möglich in dem Skript auch eine "Auto Resume" Funktion für den rtmpdump Befehl einzubauen?
Bei Streams von anderen Seiten bricht er bei mir zwischendurch ab und man muss den Befehl noch mit dem Parameter --resume aufrufen um den Stream weiter zu laden. Ich hab schon probiert mit grep z.B. die Wörter "Download may be incomplete" abzufragen und falls sie gefunden werden den Befehl mit --resume zu wiederholen bis die Wörter in der Ausgabe nicht mehr erscheinen... sprich: der Download fertig ist.
Aber irgendwie kann grep die Ausgabe von rtmpdump nicht verarbeiten. ☹ #!/bin/sh
RDUMP="$(~/MyApps/rtmpdump/rtmpdump_x86 -r rtmpe://... -s http://... -p http://... -y "..." -e -o "..." --resume)"
echo $RDUMP | grep "Download may be incomplete"
if [ $GREP ]
then
echo "True"
else
echo "False"
fi
Es wird immer False angezeigt, obwohl die vorletzte Zeile von der rtmpdump Ausgabe "WARNING: Download may be incomplete (downloaded about 3.7%), try --resume!" heißt.
Was mache ich falsch? ☺
|
|
Funatiker
Anmeldungsdatum: 24. November 2007
Beiträge: 123
Wohnort: Pirmasens
|
Erscheint die Fehlermeldung wirklich auf der Standardausgabe? (Also nicht als Fehler?) (Wenn das der Fall ist, müsste dein erster Echo-Befehl mindestens eine Rückgabe haben) if [ $(echo $RDUMP | grep -c "Download may be incomplete") -gt 0 ]
then
…
fi
|