1

我需要编写 C++ 函数来使用 LibAV API 将任何 mp3 文件转码为 G.711 编码的 wav 文件。由于我们在定制的 ARM 板上运行,我只能使用特定可用的交叉编译版本的 LibAV 库(很旧,不是最新的)。

这是我的计划如何实现这样的功能。请告知它是否有意义或我误解了转码流程。

1. Decode mp3 file
2. Encode uncompressed data with audio codec CODEC_ID_PCM_MULAW
3. Mux encoded data to wav container

非常简化的流程(没有错误检查和初始化细节)如下:

avformat_open_input(&format, sMp3FileName, NULL, NULL);

avformat_write_header(oc, NULL);
    
    while (av_read_frame(format, &packet) >= 0)
    {
        // Decode one frame
        avcodec_decode_audio4(codec, frame, &gotFrame, &packet);

    // Encode one frame
    avcodec_encode_audio2(pCodecCtx, &packet_out, frame, &gotFrame);

    // Dump packet to wav file
    av_interleaved_write_frame(oc, &packet_out);
}

av_write_trailer(oc);

请审查和建议。提前致谢。

4

0 回答 0