Forum: PC-Programmierung Audio Daten aus AVI extrahieren


von Benedikt K. (benedikt)


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(VS.85).aspx

von Ingolf O. (headshotzombie)


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_procedures-ger.htm

von Benedikt K. (benedikt)


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.

von Hans (Gast)


Lesenswert?

Der mplayer kann das direkt...
1
#!/bin/bash
2
3
for  file in  *.avi 
4
do
5
mencoder "$file" -o $(basename "$file" .avi).mp3  -oac mp3lame   -ovc copy -of rawaudio
6
7
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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.