0

我尝试使用以下代码使用 ffmpeg 解码音频:

NSMutableData *finalData = [NSMutableData data];
......
while(av_read_frame(pFormatCtx, &packet) >= 0){
    if(packet.stream_index == videoStream)
    {
        int consumed = avcodec_decode_audio4(pCodecCtx, pFrame, &got_frame_ptr, &packet);

        if(got_frame_ptr)
        {
            [finalData appendBytes:(pFrame->data)[0] length:(pFrame->linesize)[0]];

        }
    }
    av_free_packet(&packet);
}
......
[finalData writeToFile:path atomically:YES];

但是保存的文件无法播放,即使我将文件扩展名更改为wav。当我在 HexEdit(一个十六进制编辑器)中查看它时,我发现有很多零字节。例如偏移量 0x970 之前的文件内容全为零。我的代码有错误吗?任何帮助将不胜感激。

4

1 回答 1

0

实际上解码结果很好。文件中的零字节是正常的,因为解码结果是PCM数据。我尝试将数据导入Adobe Audition,可以播放。供参考。

于 2012-12-19T03:05:06.353 回答