2010-11-29 3 views
1

J'écris une application client Smooth Streaming. Du côté du serveur (IIS 7 avec les extensions Media Services), j'ai un tas de fichiers ISMV et ISMA encodés en utilisant Expression Encoder pro 4 avec le préréglage "H.264 IIS Smooth Streaming iPhone WiFi". En un mot, il utilise le codec vidéo "H.264 baseline" et le codec audio AAC-LC.Codage audio Smooth Streaming et AAC-Low Complexity. Format de données?

Du côté client, cependant, c'est là où j'ai des problèmes, en particulier avec les morceaux audio. Alors que j'ai pu comprendre le flux vidéo H.264 (il s'agit essentiellement d'une séquence d'unités NAL brutes préfixées par leur longueur, sans l'unité NAL "code de départ" 0, 0, 0, 1), je n'ai toujours pas pas été capable de casser ce qui est à l'intérieur du flux audio AAC LC, c'est à dire ce qui vient dans l'atome "mdat" (Media Data Box). Il est certainement pas un conteneur MP4, mais qu'est-ce que c'est alors? Je colle sous les 128 premiers octets (nombre arbitrairement choisi) d'un fragment AAC-LC (partie MDAT seulement) obtenu du serveur, au cas où quelqu'un pourrait le comprendre.

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 
}; 

Répondre

3

Après une longue recherche et this tip je reçus sur les forums IIS, j'ai pu comprendre. Fondamentalement, il s'agit d'un flux AAC brut, qui doit être enveloppé avec des en-têtes avant de pouvoir être lu. Le format d'en-tête le plus simple et le plus courant semble être ADTS, qui consiste à ajouter un 7-byte header in front of each sample.

+0

Donc le fichier '.isma' peut être converti en fichier audio normal en ajoutant de tels en-têtes? Pouvez-vous s'il vous plaît recommander un outil ou un code qui permettrait de convertir les fichiers '.isma' et' .ismv' dans un fichier qui peut être joué par certains joueurs communs? –

+0

Vous voudrez peut-être créer une question distincte à ce sujet, car c'est un sujet plutôt complexe. La réponse en un mot est que non, vous ne pouvez pas simplement ajouter l'en-tête de 7 octets; Vous devez d'abord analyser les métadonnées du fichier ISO (boîte 'tfhd', 'trun', etc.) pour déterminer les limites des échantillons. Mais si je me souviens bien, vous pouvez lire des fichiers ISMA (non cryptés) avec Windows Media Player? –