Autor Beitrag
M4EiB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Di 02.07.02 13:05 
Hi

Wie im Topic schon erwähnt möchte ich gerne die Bitrate vom Audio- und Video-Stream einer AVI-Datei auslesen. Eines reicht auch, dann kann ich das andere berechnen.
Also der Aufbau einer AVI-Datei ist mir ziemlich klar, zumindest der "Header" (also alles bis auf den LIST “movi” chunk, sollte aber nicht so wichtig sein). UND: den stream format-chunks nach den stream header-chunks . Hat jemand Informationsmaterial über den Aufbau der stream format-chunks, wenn die Datei komprimiert ist also mp3, divx oder ähnliches? Oder weiss jemand wie man die Bitrate sonst ausliesst?

mfg M4EiB
M4EiB Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mi 03.07.02 11:01 
Titel: habs rasu
so

weiss jetzt wo ich die bitrate vom audiostream auslesen kann. falls es jemand wissen will, posten. dann erklär ich es.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mi 03.07.02 11:05 
Wäre nett wenn Du das mal hier erklären würdest :-D

Gruß
M4EiB Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mi 03.07.02 12:57 
Titel: so gehts
den aufbau der datei kann man hier lernen:
i31www.ira.uka.de/do...5_AVI/main_html.html

werde mal kurz das wichtigste erklären:
Eine AVI-Datei besteht aus verschiedenen, ineinander verschachtelten Datenstrukturen, den sogenannten Chunks.

Die erste Einteilung ist zwischen den LIST-Chunks:
der erste Typ: hdrl (Informationen zum File)
zweiter Typ: movi (Eigentliche Bildinformationen)
dritter Typ: idx1 (nur optional, hier steht die Chunk-Aufteilung)

nun zum Headerlist-Chunk (hdrl) und die Einteilung:
der erste Chunk ist 'avih' (AVI-Header): allgemeine Informationen zur Datei so jetzt kommen die Stream List-Chunks, und zwar für jeden Stream in der Datei einer (also normale AVI-Datei, 2 Streams, 1x Audio 1x Video). Der Stream List-Chunk ist nochmal unterteilt: in Stream Header Chunk:allgemeinere Informationen zum Stream und Stream Format Chunk:genaueres zum Format des Streams (optional gibt es noch einen Stream Data Chunk) zur Identifikation dient der erste Wert im Stream Header:
für Video: vids
für Audio: auds

hier die Struktur bildlich dargestellt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
RIFF ('AVI '
      LIST ('hdrl'
            'avih'([Main AVI Header])   <--- allg. infos
             LIST ('strl'
                   'strh' ([Stream Header])  <---- hier wirds interressant
                   'strf' ([Stream Format])   <---- die infos über den stream
                   'strd' (zusaetzliche Header)
                    )
           )
      LIST ('movi'         <----- da stehen die ganzen bilddaten drin
                   (SubChunk: LIST ('rec '
                                    SubChunk1
                                    SubChunk2
                                     )
                    )
             ['idx1' (AVIIndex)]
           )
     )


für genauere Informationen über die Strukturen, schaut euch den Link oben an (dort steht wo iher die Auflösung und Länge findet).


nun zur Bitrate des Audiostreams:
und zwar findet ihr die im Stream Format Chunk des Audio Streams.
hier die Struktur (Quelle: VirtualDub):
WORD:wFormatTag: ID tag (0x0001 = PCM, 0x0055 = MP3)
WORD:nChannels: 1=mono, 2=stereo
DWORD:nSamplesPerSecond: sampling rate of uncompressed audio in Hz
DWORD:nAvgBytesPerSec: average bytes/s of compressed data <--- bitrate
WORD:nBlackAlign: size of a compressed sample in bytes
WORD:wBitsPerSample: bit/sample, for PCM only
WORD:cbSize: number of bytes of format-specific data that follow

(noch was zur Quelle: falls sich einige wundern, ja ich meine das Videobearbeitungstool Nr.1. Und zwar den integrierten HexEditor öffnen und dann Menü:Edit:Enable AVI Field Assist.)

Das ist zwar alles sehr trocken, ich hoffe ihr versteht es aber trotzdem. Quellcodes falls bedarf besteht kommen, sobald alles fertig umgesetzt ist(alles ist Auflösung, Länge, Videodatenrate, Audiodatenrate, und Codecs).

mfg M4EiB