ubuntuusers.de

RTMPDump

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

danjoh

Anmeldungsdatum:
28. Januar 2010

Beiträge: 14

Hab schon versucht die Ausgabe nach stdout und stderr in Textdateien ausgeben zu lassen.

#!/bin/sh

RDUMP="$(~/MyApps/rtmpdump/rtmpdump_x86 -r rtmpe://... -s http://... -p http://... -y "..." -e -o "..." --resume)"
echo $RDUMP > rdump.txt

bzw.

#!/bin/sh

RDUMP="$(~/MyApps/rtmpdump/rtmpdump_x86 -r rtmpe://... -s http://... -p http://... -y "..." -e -o "..." --resume)"
echo $RDUMP 2> rdump.txt

Es werden mir dort aber auch nur leere Textdateien erstellt und die Ausgabe erscheint weiterhin in der Konsole.

Wenn ich -gt 0 dahinter setze, bekomme ich diese Ausgabe:

...
ERROR: ReadPacket, failed to read RTMP packet body. len: 67355
WARNING: Download may be incomplete (downloaded about 10.6%), try --resume!
Closing connection... done!

[: 29: -gt: unexpected operator
False

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

Kannst du die Ausgabe überhaupt durchgreppen? Also hast du noch eine Ausgabe, wenn du einen rtmpdump-Befehl nach irgendeinem Nonsense durchgrepst?!

Dass beide Textdateien leer sind, spricht dafür, dass die Meldungen auf stderr landen. RDUMP enthält wohl nur stdout von rtmpdump und ist daher wohl leer. Da der echo-Befehl selbst wohl kaum in stderr schreiben wird, kannst du stderr von echo auch nicht in eine Datei umleiten.

1
2
3
4
5
6
7
#!/bin/sh
if [ "$(~/MyApps/rtmpdump/rtmpdump_x86 -r rtmpe://... -s http://... -p http://... -y "..." -e -o "..." --resume 2>&1 | grep -c "Download may be incomplete")" -gt 0 ]
	then
		echo "True"
	else
		echo "False"
fi

Du kannst natürlich nur dann -gt dahinter setzen, wenn der vorherige Befehl eine Zahl zurück gibt. Das tut er nur, wenn du grep mit -c anweist, die Zahl der Fundstellen auszugeben.

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Könntet Ihr sowas auch für RTL-Now basteln ???

Z.B. für diesen Link ??

http://rtl-now.rtl.de/renemarik.php?film_id=21610&player=1&season=0&na=1

Greetz Nephilim1973

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

RTL NOW verwendet für die Streams das Protokoll „rtmpe“. Dies ist eine um Verschlüsselung erweiterte Variante des rtmp-Protokolls. Die Verschlüsselung dient laut Adobe dem Kopierschutz. Dies zum umgehen (oder durch Entwicklung oder Verbreitung von Programmen Beihilfe hierzu zu leisten) ist leider nach § 95a UrHG Abs. 1 untersagt. Außerdem ist mein persönliches Interesse an Beiträgen von RTL eher gering.

Daher biete ich hier ein nur für persönliche Bildungszwecke interessantes Beispiel, das zeigt, wie manche benötigte Parameter von rtmpdump ermittelt werden können. Eine praktische Funktion (speichern des geschützten Streams) erfüllt das Beispiel nicht.

1
2
3
4
5
#!/bin/sh
id="$1"
xmlfile=$(curl "http://rtl-now.rtl.de/renemarik.php?film_id=$id&player=1" | grep data | tail -n1 | cut -d\" -f2 | sed 's/%3A/:/g;s/%2F/\//g;s/%3F/?/g;s/%3D/=/g;s/%26/\&/g')
stream=$(curl $xmlfile | grep filename | cut -d\> -f2 | cut -d\< -f1)
./rtmpdump_x86 -o blabla.f4v -r $stream -p http://rtl-now.rtl.de/renemarik.php?film_id=$id&player=1 -e -s http://rtl-now.rtl.de/includes/rtlnow_videoplayer09_2.swf?ts=$(date +%Y%m%d)

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Ich danke Dir, werde das mal ausprobieren... 😉

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Klappt leider so nicht...

RTMPDump v1.9
(c) 2009 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
ERROR: You must specify a hostname (--host) or url (-r "rtmp://host[:port]/playpath") containing a hostname
./streamtest.sh: Zeile 8: -e: Kommando nicht gefunden.

Wenn ich mir $stream ausgeben lasse, ist die Variable leer.

curl liefert zudem "curl: (6) Couldn't resolve host 'saveuserdata'"

Gruss Nephilim

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

Du musst das Script aufrufen mit ./scriptname.sh ID also in deinem Fall ./scriptname.sh 21610

Außerdem habe ich darauf hingewiesen, dass das Script zu Bildungszwecken ist und nicht tatsächlich Videos speichern wird.

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Ich probiere es ja auch nur zu Bildungszwecken aus...

Aber auch dann dürfte es ja eigentlich keine Fehler melden...

./streamtest.sh 21610
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  196k    0  196k    0     0   426k      0 --:--:-- --:--:-- --:--:--  450k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
102  2867  102  2867    0     0  27892      0 --:--:-- --:--:-- --:--:-- 39819
STREAM: rtmpe://fms-fra14.rtl.de/rtlnow/1059/V_36113_A6JI_E81411_40653_16x9-lq-512x288-h264-c0_7101951eac92821c773d5ee0a0fa7e3f.f4v
RTMPDump v1.9
(c) 2009 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
./streamtest.sh: Zeile 8: -e: Kommando nicht gefunden.
ERROR: rtmp server sent error
ERROR: rtmp server requested close

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

Zeile 8?! So viel Zeilen hat das Script gar nicht. Es fehlten Anführungszeichen. Dürfte nun geklärt sein:

1
2
3
4
5
#!/bin/sh
id="$1"
xmlfile=$(curl "http://rtl-now.rtl.de/renemarik.php?film_id=$id&player=1" | grep data | tail -n1 | cut -d\" -f2 | sed 's/%3A/:/g;s/%2F/\//g;s/%3F/?/g;s/%3D/=/g;s/%26/\&/g')
stream=$(curl $xmlfile | grep filename | cut -d\> -f2 | cut -d\< -f1)
./rtmpdump_x86 -o blabla.f4v -r "$stream" -p "http://rtl-now.rtl.de/renemarik.php?film_id=$id&player=1" -e -s http://rtl-now.rtl.de/includes/rtlnow_videoplayer09_2.swf?ts=$(date +%Y%m%d)

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Ich hatte ein paar "echo $variable" eingefügt, um zu testen, wo der Fehler hängen könnte.

Leider ist auch Deine neue Version nicht ganz lauffähig.

./streamtest.sh 21610
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  196k    0  196k    0     0   397k      0 --:--:-- --:--:-- --:--:--  422k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
101  2829  101  2829    0     0  25335      0 --:--:-- --:--:-- --:--:-- 35362
RTMPDump v1.9
(c) 2009 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
'''ERROR: Unexpected start of file, error in tag sizes, couldn't arrive at prevTagSize=0'''

EDIT: Ich muss dazu sagen, dass ich seit 3 Tagen an dem Problem hänge und diese Fehlermeldung ebenfalls schon bekommen habe. Mein Ansatz war aber eher "manueller Natur", also URL enkodieren usw. Schritt für Schritt...

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

Das kann ich nicht reproduzieren. Wenn ich mit 21610 aufrufe, erhalte ich: ERROR: FLV file contains neither video nor audio, aborting!

Wie es sein sollte eigentlich.

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Hmmm... Benutzt Du Version 1.9 oder 1.6 ?? Vielleicht liegt hier der "Kasius Knacktus"...

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

ah v1.6 entschuldige dies. Wenn du mir die Quellen deiner Version nennst, schau ich mir das mal an.

nephilim1973

Anmeldungsdatum:
31. August 2007

Beiträge: 418

Funatiker

Anmeldungsdatum:
24. November 2007

Beiträge: 123

Wohnort: Pirmasens

RTMPDump v1.9 (c) 2009 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL ERROR: FLV file contains neither video nor audio, aborting!