【问题标题】:Decoding WMA with FFMPeg on iPhone在 iPhone 上使用 FFMPeg 解码 WMA
【发布时间】:2012-11-03 21:15:07
【问题描述】:

我正在使用这个函数来解码音频,但是没有声音:

int decodedBytes;
decodedBytes = avcodec_decode_audio4(myData->pCodecCtx, myData->myFrame, &data_size, &myData->pkt);

数据下载成功,但是我不知道从哪里开始,因为根本没有声音。

【问题讨论】:

  • “没有声音”是指您没有听到任何声音还是没有获得任何声音样本数据? ffmpeg 只负责解码,你必须将其输出到 coreaudio、openal 等。
  • 请提供更多背景信息,您的目标是什么?错误信息或代码?我可能需要更多示例代码。
  • 我有声音示例数据,AVCodecContext、AVCodec、AVFrame、AVPacket 和 AVFormatContext 的所有字段都已填充,但我似乎无法使用 AudioQueueEnqueueBuffer 正确输出它们。您需要查看更多代码吗?您希望我通过电子邮件将其发送给您吗?感谢您的帮助!
  • 将代码发布到 Pastbin 并链接到它
  • 嗨,马蒂亚斯。请您给我发一封电子邮件,然后我会给您发送一个包含 FFMPeg 库的 Dropbox 链接。我认为这是查看代码工作的最佳方式。别担心,这是一个非常基础的项目。请发送电子邮件至 neo-winston@hotmail.com 谢谢!

标签: objective-c ffmpeg core-audio libav


【解决方案1】:

如果您改用avcodec_decode_audio3,它会接缝工作:

decodedBytes = avcodec_decode_audio3(myData->pCodecCtx, samples, &data_size, &myData->pkt);

但您可能应该将avcodec_decode_audio4 用作avcodec_decode_audio3 要弃用的接缝。我对 ffmpeg/libav 了解不多,但我猜 audio4 使用 libav 中的缓冲区系统,而不是您传入缓冲区。

也许这个差异会提示如何使用 audio4:

http://git.libav.org/?p=libav.git;a=commitdiff;h=f199f38573c4c02753f03ba8db04481038fa6f2e

【讨论】:

  • 谢谢!我正在看。
  • 是的,它与 avcodec_decode_audio3 一起工作,但我必须弄清楚如何使用 avcodec_decode_audio4 使其工作。谢谢!
  • 直到现在我无法做出任何有用的改变来使用 avcodec_decode_audio4。关于如何做到这一点的任何想法?
猜你喜欢
  • 2011-05-28
  • 2010-11-18
  • 2011-08-24
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 2012-07-30
  • 2014-09-09
  • 2013-07-10
相关资源
最近更新 更多