您可以尝试使用ffmpeg在c或c ++中执行此操作.这是正常的步骤流程.
init ffmpeg使用av_register_all();
使用avformat_open_input(&informat,sourcefile,0,0)打开输入文件.
使用avformat_find_stream_info(informat,0)查找流信息.
通过迭代流并将codec_type与AVMEDIA_TYPE_AUDIO进行比较来查找音频流.
输入音频流后,您可以找到音频解码器并打开解码器.使用avcodec_find_decoder(in_aud_strm-> codec-> codec_id)和avcodec_open2(in_aud_codec_ctx,in_aud_codec,NULL).
现在输出文件使用av_guess_format猜测outformat(NULL,(const char*)outfile,NULL).
为格式化分配上下文.
使用avcodec_find_encoder(outfmt-> audio_codec)查找输出音频编码器.
添加新的流音频流avformat_new_stream(outformat,out_aud_codec).
使用所需的采样率,样本fmt,通道等填充输出编解码器上下文.
使用avio_open()打开输出文件.
使用avformat_write_header(outformat,NULL)写输出头.
现在在while循环开始读取数据包时,只解码音频数据包对它们进行编码并将其写入打开的输出文件中.您可以使用av_read_frame(informat,&pkt),avcodec_decode_audio4(in_aud_codec_ctx,pframeT,&got_vid_pkt,&pkt),avcodec_encode_audio2()和av_write_frame().
最后使用av_write_trailer编写预告片.
您可以查看ffmpeg示例中提供的demuxing.c和muxing.c.