gpt4 book ai didi

ffmpeg - 使用 ffms2(ffmegsource) 进行音频解码

转载 作者:行者123 更新时间:2023-12-04 23:17:20 26 4
gpt4 key购买 nike

我正在使用 ffms2(ffmpegsource) 一个围绕 libav 的包装器来从文件中获取视频和音频帧。
视频解码工作正常。但是我在音频解码方面遇到了一些问题。
FFMS2提供了一个简单的函数FFMS_GetAudio(FFMS_AudioSource *A, void *Buf, int64_t Start, int64_t Count, FFMS_ErrorInfo *ErrorInfo); api 来获取解码的缓冲区。解码后的数据在用户提供的缓冲区中返回。

对于单 channel ,数据的解释是直接的,数据字节从用户缓冲区的第一个位置开始。然而,当涉及到两个 channel 时,根据 FFMS_GetAudioProperties 返回的样本格式,解码的数据有两种可能是平面的或交错的。在我的例子中,样本格式总是平面的,这意味着解码的数据将在两个独立的数据平面数据[0]和数据[1]中。这就是 libav/ffmpeg 和 portaudio 所解释的,它们认为平面数据位于两个单独的数据平面中。

但是 FFMS_GetAudio 只从用户那里获取单个缓冲区。所以我可以假设平面数据
data[0] = buf, data[1] = buf + offset,其中 offset 是 FFMS_GetAudio 返回的缓冲区长度的一半。

FFMS 没有为这种解释提供任何好的文件。如果有人能提供更多有关这方面的信息,那将是很大的帮助。

最佳答案

FFMS2 目前不支持输出平面音频。最近的修订版(2.17 后)自动交错平面音频,而 libav 之前的旧版本添加了对平面音频的支持,只是忽略了第一个之后的所有平面。

关于ffmpeg - 使用 ffms2(ffmegsource) 进行音频解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com