我如何以编程方式转换(提取音频通道)从mp4视频文件格式?
我只是在网上找不到任何用于使用c的东西.
我动态链接外部引擎,我可以通过c采取mp4文件并将其转换为MP3文件.
并且不将命令行参数传递给LAME或MPLAYER或FFMPEG?
解决方法:
您可以尝试使用ffmpeg在c或c中执行此操作.这是正常的步骤流程.
>使用av_register_all()初始化ffmpeg;
>使用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(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.