当前位置: 首页 > 知识库问答 >
问题:

在AAC中转换后的ffmpeg错误的音频文件

居飞扬
2023-03-14

我在使用FFmpeg进行acc编码时遇到问题。我有带aac音频的au mp4文件。我试图用ffmpeg复制音频。在源mp4文件中,第一个音频噪声出现在0.30秒。转换后使用ffmpeg-i输入文件。mp4-c:一个拷贝输出文件。aac,生成的文件错误,第一个音频噪音出现在0.32秒。文件的持续时间也不一样。

当我强制编码器libfaac,它的工作,但文件太大。

那么,为什么使用默认编码器(aac、libfdk_aac)时它不工作呢?请注意,当我从audacity转换时,也会出现同样的情况。

谢谢

共有1个答案

南宫博简
2023-03-14

在音频流中有一个填充帧,解码器需要该填充帧来解码第一帧。这是像AAC这样的MDCT音频编解码器的技术要求。在MP4/MKV这样的定时样本容器中,第一帧具有负的表示时间戳。在原始AAC比特流中,第一帧被天真地解码。每帧有1024个样本,因此持续时间为21-23毫秒。时间上的差异是由偏移量造成的。重新包装到像M4A这样的容器中以避免这种情况。

背景资料来自苹果公司:

由于编码算法的性质,AAC需要源PCM音频样本之外的数据,以便正确编码和解码音频样本。AAC编码在2048个音频样本的连续集合上使用变换,每1024个音频样本(重叠)应用一次变换。要解码正确的音频,需要对1024个音频样本的任何时间段进行两次变换。出于这个原因,编码器在第一个“真”音频样本之前添加至少1024个静默样本,并且通常会添加更多。这被称为各种各样的“启动”、“启动样本”或“编码器延迟”。

编码器延迟和剩余样本缺乏明确表示并不是AAC编码独有的问题。对于MPEG-4和ADTS/MPEG-2比特流和文件容器,编码器延迟或剩余样本仍然没有令人满意的显式表示。MP3的比特流中也有这些数据依赖和延迟,AC-3等专有编解码器也是如此。

 类似资料:
  • 我正在尝试解码ADTS容器中的AAC音频流,该音频流来自外部硬件H264编码器。 我分析了ADT,它告诉我我有一个2通道,44100 AAC主配置文件框架。我为ffmpeg解码器设置了额外的数据字节,并成功解码了帧?详情如下: (伪c代码) 设置解码器: 设置额外的数据字节: 然后解码帧: 解码帧: 现在,据我所知,32位原始格式的每个帧每个采样将有4个字节,每个通道将被交错(因此每4个字节是交替

  • 本文向大家介绍使用ffmpeg 合并aac格式音频文件的方法,包括了使用ffmpeg 合并aac格式音频文件的方法的使用技巧和注意事项,需要的朋友参考一下 FFmpeg简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保

  • 我正在从麦克风录制音频并将其保存到. mp4-它是AMR格式。如何将此音频转换为mp3或AAC?我看到了这篇文章,但我不明白-我是Android新手。 是否有一些简单的android库可以与mp3一起使用?我在谷歌上搜索了一整天,什么也没找到。也许某个好人可以在这篇文章中解释并给出完整的例子,数百人会很感激的! 非常感谢。

  • 在Java中,我使用FFmpeg将WAV文件转换为AAC,函数如下: 当我在Audacity中打开这两个文件时,我可以清楚地看到AAC文件的长度增加了0.05秒,开头增加了0.05秒的沉默。 这是一个问题,当我试图将这个AAC文件与视频文件多路复用时,音频无法同步。 是否有某种参数来防止这种行为或另一种方法来解决这个问题? 编辑-运行函数时的控制台输出:

  • 本文向大家介绍asp.net音频转换之.amr转.mp3(利用ffmpeg转换法),包括了asp.net音频转换之.amr转.mp3(利用ffmpeg转换法)的使用技巧和注意事项,需要的朋友参考一下 前言 上篇文章已经跟大家分享了asp.net利用七牛转换法将.amr转.mp3的方法,当时也说了还有另外一种方法是利用ffmpeg转换法,下面这篇文章就给大家详细介绍这种方法。这种方法相对第一种来说,

  • 我把一个WAV文件转换成MP3。ffmpeg的输出表明它正在转换为128k比特率,但最终只有32k比特率。 原始WAV文件是RIFF(little endian)数据、WAVE音频、Microsoft PCM、24位、立体声48000 Hz。 输出MP3文件是ID3版本2.4.0的音频文件,包含:MPEG ADTS,第三层,v1,32 kbps,48 kHz,立体声时检查与文件实用程序。我的PHP