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.
Init ffmpeg using av_register_all ();
Aprire il file di input usando avformat_open_input (& informat, sourcefile, 0, 0)).
Trova informazioni sul stream utilizzando avformat_find_stream_info (informat, 0)).
Trova il stream audio iterando attraverso i flussi e confrontando codec_type in AVMEDIA_TYPE_AUDIO.
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).
Ora per il file di output indovina l’outformat usando av_guess_format (NULL, (const char *) outfile, NULL).
Assegna contesto per outformat.
Trova il codificatore audio in uscita usando avcodec_find_encoder (outfmt-> audio_codec).
Aggiungi un nuovo stream audio stream avformat_new_stream (outformat, out_aud_codec).
Riempi il contesto del codec di output con la frequenza di campionamento desiderata, il campione fmt, il canale ecc.
Aprire il file di output usando avio_open ().
Scrivi le intestazioni di output usando avformat_write_header (outformat, NULL).
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 ().
Finalmente scrivi il trailer usando av_write_trailer.
Puoi guardare in demuxing.c e muxing.c forniti negli esempi di ffmpeg.