2017-01-12 5 views
0

Ich versuche, ein C-Programm zu schreiben, das Audio aus einer MP4-Datei demuxiert und demuxed AVPacket-Daten in eine Datei schreibt. Dem resultierenden Speicherabbild fehlen jedoch ADTS-Header. Beliebige Hinweise darauf, wie ADTS-Header am besten hinzugefügt werden können.ffmpeg: Wie AAC Audio-Pakete in ADTS-Format konvertieren

Ich sehe, dass ffmpeg 'adtsenc.c' Datei hat, die eine ADTS muxer zu implementieren scheint:

AVOutputFormat ff_adts_muxer = { 
    .name    = "adts", 
    .long_name   = NULL_IF_CONFIG_SMALL("ADTS AAC (Advanced Audio Coding)"), 
    .mime_type   = "audio/aac", 
    .extensions  = "aac,adts", 
    .priv_data_size = sizeof(ADTSContext), 
    .audio_codec  = AV_CODEC_ID_AAC, 
    .video_codec  = AV_CODEC_ID_NONE, 
    .write_header  = adts_write_header, 
    .write_packet  = adts_write_packet, 
    .write_trailer  = adts_write_trailer, 
    .priv_class  = &adts_muxer_class, 
    .flags    = AVFMT_NOTIMESTAMPS, 
}; 

Die besten Wünsche.

+0

MP4-Dateien enthalten normalerweise keine ADTS-Header, da sie [wären überflüssig] wären (https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formats). Wenn Sie Daten als "nackte" aac-Dateien speichern, fügt FFmpeg ADTS-Header hinzu. – AkselA

+0

Danke AkselA für Ihren Kommentar. Ich denke, Sie zeigen mir die richtige Richtung. Könnten Sie mir eine Idee geben, was ich tun muss, um Daten als "nackte" aac-Datei zu speichern? Ich schätze die Hilfe sehr. – Malik

Antwort

0

Update: Ich weiß, dass Befehlszeile Demuxen erreicht ADTS-Header setzen, wenn Sie versuchen:

ffmpeg -i input.mp4 -acodec copy -vn output.aac 

Ich habe, dass dieser Prozess adts.c dh ADTS muxer nutzt diese zu erreichen, durch den Aufruf:

adts_write_header() 
adts_write_packet() 
adts_write_packet() 
..... 
adts_write_trailer() 

Ich muss herausfinden, wie man es in meinem Programm verwendet. Ich werde ein Update veröffentlichen, wenn ich es herausfinden werde.

+0

Ich endete damit, Code aus adtsenc.c zu extrahieren und an meine Situation anzupassen. Wenn jemand den Code benötigt, lass es mich wissen. – Malik

Verwandte Themen