2010-11-29 13 views
1

Ich schreibe eine Smooth Streaming Client-Anwendung. Auf der Serverseite (IIS 7 mit Media-Services-Erweiterungen) habe ich eine Reihe von ISMV- und ISMA-Dateien mit Expression Encoder Pro 4 mit der Voreinstellung "H.264 IIS Smooth Streaming iPhone WiFi" codiert. Kurz gesagt, es verwendet den Videocodec "H.264 baseline" und den Audiocodec AAC-LC.Smooth Streaming und AAC-Low Complexity Audio-Codec. Datei Format?

Auf der Client-Seite ist jedoch, wo ich Probleme habe, speziell mit den Audio-Chunks. Während ich in der Lage war, den H.264-Videostream (es ist im Wesentlichen eine Sequenz von rohen NAL-Einheiten mit ihrer Länge vorangestellt, ohne die NAL-Einheit "Startcode" 0, 0, 0, 1), habe ich immer noch Port Es ist mir nicht gelungen zu knacken, was im AAC LC Audio Stream steckt, also was im "mdat" (Media Data Box) Atom steckt. Es ist definitiv nicht ein MP4-Container, aber was ist es dann?

Ich schreibe unterhalb der ersten 128 (Anzahl willkürlich gewählt) Bytes eines AAC-LC-Fragments (nur MDAT-Teil) vom Server erhalten, falls jemand es von dort herausfinden kann.

unsigned char data[128] = { 
0x21, 0x09, 0x0A, 0xBF, 0xBF, 0xFF, 0xFF, 0xD5, 0xB1, 0x8D, 0xC4, 0xA1, 
0x18, 0x0D, 0x25, 0xC9, 0x2E, 0x49, 0x2E, 0x10, 0x88, 0x91, 0x10, 0x01, 
0x13, 0x23, 0x2C, 0x36, 0x25, 0x60, 0x6B, 0x94, 0x8C, 0x74, 0xD7, 0x4A, 
0x95, 0xD3, 0x03, 0x91, 0x5B, 0x76, 0xDE, 0x27, 0xC5, 0xB2, 0x4C, 0xCF, 
0xEB, 0x3E, 0xDD, 0xFF, 0x22, 0xAF, 0xC3, 0xF8, 0x60, 0x36, 0x49, 0xBC, 
0xAE, 0x4D, 0x10, 0x31, 0xC6, 0x28, 0x2A, 0xEB, 0xCA, 0x94, 0x51, 0xD8, 
0x61, 0x1B, 0xC6, 0x2A, 0x91, 0x71, 0xE4, 0x8C, 0xF8, 0x19, 0x2C, 0xDE, 
0x71, 0xBB, 0xE3, 0xBD, 0x36, 0xB4, 0x45, 0x37, 0x02, 0x61, 0x48, 0x8E, 
0x19, 0x80, 0xD5, 0x24, 0x97, 0x24, 0x92, 0x44, 0x08, 0x89, 0x12, 0x00, 
0xB3, 0xF8, 0x1E, 0xE2, 0xBD, 0xCD, 0x4E, 0xF7, 0xA9, 0xE2, 0x0E, 0xD8, 
0xEA, 0xFA, 0xCF, 0xDB, 0x4E, 0x69, 0x6F, 0xEE 
}; 

Antwort

3

Nach einer langen Forschung und this tip ich auf den IIS-Foren erhalten haben, ich war in der Lage, es herauszufinden. Im Grunde ist dies ein roher AAC-Stream, der mit Headern umhüllt werden muss, bevor er abgespielt werden kann. Das einfachste und gebräuchlichste Header-Format scheint ADTS zu sein, das darin besteht, eine 7-byte header in front of each sample hinzuzufügen.

+0

So '.isma' Datei kann in reguläre Audiodatei durch Hinzufügen solcher Header umgewandelt werden? Können Sie mir bitte ein Tool oder einen Code empfehlen, mit dem '.isma' und' .ismv' Dateien in Dateien konvertiert werden können, die von einigen gängigen Spielern gespielt werden können? –

+0

Vielleicht möchten Sie eine separate Frage zu diesem Thema erstellen, da es ein ziemlich komplexes Thema ist. Die Antwort in kurzen Worten ist jedoch, dass nein, Sie können nicht nur den 7-Byte-Header hinzufügen; Sie müssten zuerst die Metadaten der ISO-Datei analysieren ("tfhd" -Box, "trun" -Box usw.), um herauszufinden, wo sich die Samples-Grenzen befinden. Aber wenn ich mich richtig erinnere, können Sie (unverschlüsselte) ISMA-Dateien mit Windows Media Player abspielen? –