ffmpeg 音频解码数据为零

Posted

技术标签:

【中文标题】ffmpeg 音频解码数据为零【英文标题】:ffmpeg audio decode data is zero 【发布时间】:2012-12-18 14:28:38 【问题描述】:

我尝试使用带有以下代码的 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 之前的文件内容全为零。我的代码有错误吗?任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于ffmpeg 音频解码数据为零的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg进行音频的解码和播放

FFMPEG 音频解码和绘制波形

解码后的音频数据如何存储在 ffmpeg AVFrame 中?

FFmpeg 音频解码(秒懂)

(四)Android通过ffmpeg解码音频

第十章 视频播放器开发之音频播放