PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVIStreamRead meldet AVIERR_FILEREAD


Bombe
10.05.2002, 21:45
...was ja im Prinzip eine nette Sache ist - wenn es stimmen würde.

Ich habe ein AVIFile geöffnet, hole mir einige Streams raus (Video & Audio) und erstelle mit AVIMakeFileFromStreams() ein neues AVIFile mit den ausgewählten Streams. Leider werden dabei die Audiodaten (VBR MP3) nicht mitkopiert. Im den Properties der Datei wird zwar eine Audio-Spur angezeigt, auch mit dem korrekten Parametern, aber laut z.B. VirtualDub enthält diese Datei genau 0 Audiosamples.

Wenn ich die Streams einzeln kopiere (AVIFileCreateStream, AVIStreamReadFormat/AVIStreamSetFormat, danach AVIStreamRead/AVIStreamWrite bis der Arzt kommt), funktioniert das für den Videostream (DivX 4) einwandfrei. Beim Lesen des ersten Audiosamples erhalte ich oben genannten Fehler.

Hab ich was vergessen? Muß ich für MP3 noch irgendwelche Custom Header setzen/einfügen/kopieren?


Patrik Graf
11.05.2002, 12:25
Normalerweise müsstest du nur mit EditStreamSetInfo() den Stream zu einem AudioStream machen. Dafür musst du jedoch eine AVISTREAMINFO Struct füllen. Am einfachsten geht das wenn du die Struct mit AVIStreamInfo() initialisierst und dann in der Srtruct in das Feld fccType den Wert der Konstanten streamtypeAUDIO reinschreibst :D

PS: Jedoch musst du einen EditableStream mit der Funktion CreateEditableStream() erstellen. Ich hoffe das hat dir weitergeholfen :D :D

Bombe
11.05.2002, 16:07
Ich hab bisher AVIStreamReadFormat benutzt, um an das Format zu kommen; insofern würde es mich ein wenig wundern, wenn der fccType nicht korrekt ist.

Aber ich das mal eben auf ´n EditableStream umgeschrieben. Resultat: Video läßt sich kopieren, Audio (natürlich) wieder nicht. Der plLength-Member von EditStreamPaste, in dem die Anzahl der kopierten Samples drinsteht, ist 0, wenn die Funktion zurückkommt.

Ich fürchte, wenn das so weitergeht, muß ich mir ´n eigenen AVI-Parser schreiben. Da hab zwar nicht so richtig Bock drauf, aber so langsam seh ich keine andere Möglichkeit mehr.

Wieso versucht da eigentlich irgendwas, den Stream zu interpretieren? CBR MP3 geht problemlos durch, genau wie AC3 oder andere Formate, nur bei VBR MP3 hustet das. Da könnt ich mich ja schon wieder aufregen.