estrai audio in mp3 da mp4 usando c ++ (non eseguendo ffmpeg con args)

come posso convertire a livello di codice (estrai il canale audio) dal formato di file video mp4?
Non riesco proprio a trovare nulla nel web, per usare c ++.
Io cosa colbind dynamicmente motore esterno che posso tramite c ++ prendere il file mp4 e convertirlo in file mp3.
e non passare la discussione da riga di comando a LAME o MPLAYER o FFMPEG?

Puoi provare a usare ffmpeg per farlo in c o c ++. Ecco il normale stream di passaggi.

  1. Init ffmpeg using av_register_all ();

  2. Aprire il file di input usando avformat_open_input (& informat, sourcefile, 0, 0)).

  3. Trova informazioni sul stream utilizzando avformat_find_stream_info (informat, 0)).

  4. Trova il stream audio iterando attraverso i flussi e confrontando codec_type in AVMEDIA_TYPE_AUDIO.

  5. Una volta inserito il stream audio, puoi trovare il decodificatore audio e aprire il decodificatore. Usa avcodec_find_decoder (in_aud_strm-> codec-> codec_id) e avcodec_open2 (in_aud_codec_ctx, in_aud_codec, NULL).

  6. Ora per il file di output indovina l’outformat usando av_guess_format (NULL, (const char *) outfile, NULL).

  7. Assegna contesto per outformat.

  8. Trova il codificatore audio in uscita usando avcodec_find_encoder (outfmt-> audio_codec).

  9. Aggiungi un nuovo stream audio stream avformat_new_stream (outformat, out_aud_codec).

  10. Riempi il contesto del codec di output con la frequenza di campionamento desiderata, il campione fmt, il canale ecc.

  11. Aprire il file di output usando avio_open ().

  12. Scrivi le intestazioni di output usando avformat_write_header (outformat, NULL).

  13. A questo punto, mentre il ciclo inizia a leggere pacchetti, decodifica solo il pacchetto audio li codifica e li scrive nel file di output aperto. Puoi usare av_read_frame (informat, & pkt), avcodec_decode_audio4 (in_aud_codec_ctx, pframeT, & got_vid_pkt, & pkt), avcodec_encode_audio2 () e av_write_frame ().

  14. Finalmente scrivi il trailer usando av_write_trailer.

Puoi guardare in demuxing.c e muxing.c forniti negli esempi di ffmpeg.