mikrocontroller.net

Forum: PC-Programmierung Audio Daten aus AVI extrahieren


Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade eine AVI Datei mittels den Funktionen der VfW32.lib 
zu dekodieren und daraus Audio und Video zu extrahieren. Video klappt 
wunderbar, nur mit dem Ton habe ich ein kleines Verständnisproblem:
Das Audioformat wird richtig erkannt, soweit funktioniert es schon. Ich 
lese mittels AVIStreamRead den Audiostream und lasse diese Funktion 
selbst entscheiden, wieviel Daten ich lesen soll (mittels 
AVISTREAMREAD_CONVENIENT).
Ich bekomme also 3840Bytes an Daten geliefert. Diese Daten kann ich auch 
abspielen, nur sind diese anscheinend im mp3 Format, d.h. ich muss diese 
noch selbst dekodieren.
Ich dachte, dass ich für lStart den Wert hochzähle, und so nach und nach 
alle Audiodaten lesen kann. Nur leider bekomme ich immer wieder die 
ersten 3840 Bytes, also immer etwa die ersten 0,5s des Videos.

Vermutlich habe ich irgendein Verständnisproblem bei dieser Funktion, 
was mache ich also falsch ?
Oder gibt es sogar eine einfache Lösung, um an die fertigen Wavedaten zu 
kommen ?

http://msdn2.microsoft.com/en-us/library/ms706789(...

Autor: Ingolf O. (headshotzombie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Trennen von Audio und Video durch sog. Demultiplexing beherrscht 
VirtualDub Mod. Das Ausgabeeformat ist allerdings auch u.a. MP3, bloss 
sollte es kein Problem darstellen, daraus WAV zu machen.
http://german.doom9.org/index.html?/virtualdub_pro...

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe ich das früher auch gemacht: VirtualDub -> BMP Sequenz + Wave. 
Nur leider muss dazu das komplette Video dekomprimiert werden, was 
erstmal etliche 10GB groß wird. Von daher würde ich das ganze gerne 
alles in einem C++ Programm erledigen, da ich die AVI Datei direkt lesen 
und die Daten dann direkt weiterverarbeiten kann.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der mplayer kann das direkt...
#!/bin/bash

for  file in  *.avi 
do
mencoder "$file" -o $(basename "$file" .avi).mp3  -oac mp3lame   -ovc copy -of rawaudio

done 

das ist zwar ein bash-script sollte aber schön zeigen welche parameter 
gebraucht werden...


mencoder ist übrigens beim mplayer dabei.. der mplayer selbst hat 
auch...

73

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.