2010-06-24 7 views
0

J'utilise ffmpeg dans l'iPhone, en lisant un flux wma à partir d'un serveur mms, mais je veux enregistrer le flux dans un fichier m4a en utilisant l'encodeur ALAC dans ffmpeg, le problème est que en essayant d'enregistrer le flux brut, le flux traité en utilisant avcodec_decode_audio2, le fichier n'est même pas reconnu avec le format wma, et évidemment, pas joué, donc avant de convertir le flux en m4a (en utilisant avcodec_encode_audio) je veux être sûr que le streaming est en cours de traitement et enregistré correctement. Quelqu'un avait-il déjà fait ce genre de choses? merciUtilisation de conversion FFMPEG Audio dans l'iPhone

P.S. J'écris le tampon d'octets en utilisant CFWriteStreamWrite, et tout semble bien se passer.

Mon code:

while (av_read_frame(mms_IOCtx, &_packet) >= 0) { 
if (_packet.stream_index == audioStreamIdx) { 
    uint8_t *_packetData = _packet.data; 
    int _packetSize = _packet.size; 

    // Align output buffer 
    uint8_t audio_buf[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3)/2 + 16]; 
    int16_t *aligned_buffer; 
    size_t buffer_size; 
    int audio_size, len; 
    buffer_size = sizeof(audio_buf); 
    aligned_buffer = align16(audio_buf, &buffer_size); 

    while (currentState != STATE_CLOSED && (_packetSize > 0)) { 
     audio_size = buffer_size; 
     len = avcodec_decode_audio2(mms_CodecCtx, aligned_buffer, &audio_size, _packetData, _packetSize); 
     // call to the method that write the bytes .... 
    } 
} 

}

+0

Bonjour. Êtes-vous capable de jouer des stations de streaming WMA? S'il vous plaît, faites-moi savoir. – AppAspect

+0

Je peux vous aider dans ce domaine. – AppAspect

+0

Pourquoi avez-vous utilisé CFWriteStreamWrite après le décodage? – manutd

Répondre

0

Après décodage, il n'est plus un flux WMA, il est un flux audio brut. Si vous voulez écrire le flux WMA, vous devez écrire les données avant le décodage.

+0

Yeap, je sais, mais j'essaie même de sauver le flux "As-Is" ta fichier et n'est pas reconnu comme WMA, en utilisant également l'audio brut pour le convertir en m4a quelque chose ne va pas parce que n'est pas reconnu aussi fichier m4a. –

+0

un fichier WMA est plus qu'un simple flux. Il y a des en-têtes et d'autres choses qui sont externes à la chaîne elle-même. – Elfred

+0

C'est vrai, je pense que l'appel à av_write_header (mms_IOCtx); méthode, merci –

Questions connexes