Zurück   Flashforum > Software > Video

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-05-2009, 21:25   #1 (permalink)
Neuer User
 
Registriert seit: May 2009
Beiträge: 2
Red5: FLV Metadata Problem?

Hallo,

ich bin etwas ratlos - sogar verzweifelt. Ich habe ein Problem mit erstellten FLV dateien und dachte mir, in einem Flash-Forum kann man mir da vielleicht am besten helfen, auf die Loesung zu kommen. Es bezieht sich zwar auf die Software Red5, da aber in deren Mailingliste das selbe problem des oefteren ungeloest angesprochen wurde, dachte ich, ich probiere es direkt an einer anderen Stelle.
Zudem muss ich sagen, dass ich leider kein Profi in sachen Videoformaten bin. Aber komme ich zu meinem Problem.

Ich benutze Red5 um Konferenzen in Bild und Ton aufzuzeichnen. Red5 hat da ein nettes Feature, das den Stream (RTMP) direkt in eine FLV speichert. Ab und zu kommt es aber vor, dass diverse FLVs nach der aufzeichnung etwas durcheinander sind ;-)

Das Problem an sich:
Nach der Aufzeichnung, kommt es vor, dass das Video an diversen stellen vorwaerts springt. Dies passiert aber nicht zufaellig, sondern bei einer defekten Datei immer an den selben stellen.
Das lustige daran ist, dass das NICHT bei allen Playern und gar Flash Versionen (progressive download) der Fall ist. Die Datei ist aber definitiv kaputt. Flvtool2 verweigert das arbeiten mit der Datei komplett:
Code:
ERROR: EOFError
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/amf_string_buffer.rb:37:in `read'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/amf_string_buffer.rb:243:in `read__STRING'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/audio_tag.rb:56:in `read_header'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/audio_tag.rb:47:in `after_initialize'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/tag.rb:56:in `initialize'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/stream.rb:447:in `new'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/stream.rb:447:in `read_tags'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flv/stream.rb:58:in `initialize'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2/base.rb:272:in `new'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2/base.rb:272:in `open_stream'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2/base.rb:238:in `process_files'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2/base.rb:225:in `each'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2/base.rb:225:in `process_files'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2/base.rb:44:in `execute!'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2.rb:168:in `execute!'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/lib/flvtool2.rb:228
ERROR: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
ERROR: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
ERROR: /Library/Ruby/Gems/1.8/gems/flvtool2-1.0.6/bin/flvtool2:2
ERROR: /usr/bin/flvtool2:19:in `load'
ERROR: /usr/bin/flvtool2:19
und flvtool++ bricht nach ein paar Ausgaben auch ab:
Code:
...
104413 AudioTag time:1951 length:257
104685 VideoTag time:1970 length:2834 type:I codec:Sorenson H.263
107534 AudioTag time:1998 length:257
107806 AudioTag time:2044 length:257
108078 VideoTag time:2069 length:4027 type:D codec:Sorenson H.263
112120 AudioTag time:2090 length:257
112392 AudioTag time:2137 length:257
terminate called after throwing an instance of 'std::bad_alloc'
  what():  St9bad_alloc
Abort trap
Bei FLVs, die ich auch via Red5 aufgenommen habe, die aber ohne probleme abgespielt werden, habe ich diese Fehlermeldungen nicht.
Der VLC-Player zeigt bei kaputten dateien kein Bild an, huepft aber auch beim Abspielen. "SWF & Flv Player" (Mac) spielt die Datei mit bild ab, springt aber an den speziellen Stellen vorwaerts. Adobe Media Player spielt die Dateien ohne Probleme und ohne Springen ab. Flash Player 10 (progressive downloading) spielt die Datei ab, springt aber an der selben stelle. Lustigerweise spielt Flash Player 9 die Datei ohne Probleme ab.
Ich tippe also auf irgend ein Metadata oder Keyframe problem, mit dem nur wenige Player umgehen koennen. Die Meta-Daten dieser FLVs sind sehr spaerlich.
flvtool++ zeigt mir bei einer dieser Dateien folgendes an:
Code:
	"onMetaData"
		"audiocodecid":          6
		"canSeekToEnd": 1
		"duration":    145.353
		"videocodecid":          2
130 AudioTag time:0 length:257
402 AudioTag time:47 length:257
674 AudioTag time:93 length:257
946 AudioTag time:140 length:257
1218 AudioTag time:186 length:257
1490 VideoTag time:211 length:5042 type:D codec:Sorenson H.263
Bis er dann irgendwann mit der oben genannten Fehlermeldung abbricht.
Nun benutze ich yamdi (metadata injector) um ein paar mehr Metadaten ins Spiel zu bringen. Dieser laeuft zwar drueber, aber das resultat ist das selbe. Alle Player zeigen das gleiche Verhalten. Einzig flvtool++ gibt mir nun ein wenig mehr Output, aber ich kann leider nichts ungewoehnliches feststellen.

Hier mal der Output einer unberuehrten, kaputten FLV:
http://rafb.net/p/GxMS2Z81.html
Und hier der Output der selben Datei, die mit yamdi bearbeitet wurde:
http://rafb.net/p/75WCHe19.html

Ich glaube, dass die Tonspur kuerzer ist, als die Videospur. Wenn ich diese kaputten FLVs mit ffmpeg umwandle (was mein eigentlicher Plan ist), wird die Tonspur kuerzer. Beim abspielen Springt es nicht mehr, aber nach hinten driftet der Ton immer weiter ab. Das liegt aber nicht daran, dass Video oder Bild zu schnell/langsam abgespielt werden, sondern dass der Ton, an der Stelle, an der das Video normal springt, rausgeschnitten wurde. Zaehlt man die Zeit zusammen, die das FLV komplett ueberspringt, so hat man exakt den Wert, der nach dem konvertieren am Ende der Tonspur fehlt.
Und genau daran liegt auch der Ursprung. Die stellen, die von einem Player uebersprungen werden, sind stellen, an denen absolute Stille herrscht. Es gibt kein Ton, oder gar keine Toninformation (wie kann ich das nachpruefen?). Ich vermute, dies kommt waehrend dem Aufzeichnen des Live-Streams vor, wenn es leichte Verbindungsprobleme gibt. Teilweise kann ich es auch beobachten, wenn ich die Mikrofonlautstaerke waehrend dem Aufnehmen komplett abdrehe. Aber am einfachsten kann ich es reproduzieren, wenn ich waehrend dem Aufnehmen das Aufnahmegeraet auf eins aendere, das nichts ausgibt. Wenn ich also spreche, dann das Aufnahmegeraet wechsle, z.B. zu LineIn (an dem nichts angesteckt ist), 5 Sekunden warte und dann wieder umschalte, dann habe ich das beschriebene problem an exakt diesen 5 Sekunden. Die Player, die damit Probleme haben, ueberspringen diese stelle schilcht und ergreifend. Ich denke, dass diese Player (auch ffmpeg) damit Probleme haben, wenn an gewissen Stellen, Toninformationen fehlen.
Hatte jemand von euch vielleicht sogar schon mal das selbe Problem? Gibt es vielleicht in Flash die Moeglichkeit, zu dem Mikrofon-Device, das ich zum streamen benutze, eine Art "Rauschen" hinzuzufuegen? ;-)

Da ich vor habe, diese FLVs umzuwandeln, waere mir schon geholfen, wenn ich die kaputten dateien mit irgend einem tool oder metadata injector wieder gerade biegen koennte.
Um euch ein Beispiel zu zeigen, habe ich eine FLV aufgenommen, die exakt dieses Problem hat (Springt bei 00:00:10, 00:00:14, 00:00:27 und 00:00:39). Es laeuft Musik im Hintergrund, damit ihr hoert, wenn es springt. Im notfall kann ich auch ein Online-Player bereitstellen, der das ganze zusaetzlich veranschaulicht.
FLV: http://www.synie.net/skippingtest.flv.zip

Ich hoffe ich habe euch mit meinem vielen Gerede nicht erschlagen. Ich bin zwar auf der Suche nach einer Loesung - wenn mir aber schon mal jemand sagen koennte, woran es liegt, oder mich in die richtige Richtung weist, ist mir schon sehr geholfen. Auch ein Tool (Mac / Linux) mit dem ich diese Dateien wenigstens korrekt konvertieren koennte, waere super.

Viele Gruesse,
Mario

Ps.: Ja, ich hoere dnb ;-)

Geändert von sYnie (11-05-2009 um 21:34 Uhr)
sYnie ist offline   Mit Zitat antworten
Alt 13-05-2009, 20:59   #2 (permalink)
Neuer User
 
Registriert seit: May 2009
Beiträge: 2
Hallo,

es tut mir leid fuer den Doppelpost, aber ich konnte meinen Beitrag nicht abaendern. Kann das daran liegen, dass ich ihn bereits geaendert habe? Oder bin ich einfach blind?

Ich wollte lediglich die URLs zu den flvtool++ ausgaben aendern. Rafb hat die schneller geloescht, als ich dachte. Deswegen hier die Ausgaben:

Der Output einer unberuehrten, kaputten FLV:
http://synie.net/brokenflv.txt
Und hier der Output der selben Datei, die mit yamdi bearbeitet wurde:
http://synie.net/brokenflv2.txt

Nochmals entschuldigung.

Viele Gruesse,
Mario
sYnie ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele