- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发 mp4 容器解析器,但我正在疯狂地尝试识别流的音频编解码器。我同时使用了 QtAtomViewer 和 AtomicParsley,但是当我找到原子时:
trak->mdia->minf->stbl->stsd
即使 mp4 文件有 mp3 流,我也总是得到“mp4a”。
我应该寻找“.mp3”fourcc 吗?
我附上两个不同的mp4结构:带有 AAC 音频流的 mp4 容器
Atom trak @ 716882 of size: 2960, ends @ 719842
Atom tkhd @ 716890 of size: 92, ends @ 716982
Atom mdia @ 716982 of size: 2860, ends @ 719842
Atom mdhd @ 716990 of size: 32, ends @ 717022
Atom hdlr @ 717022 of size: 33, ends @ 717055
Atom minf @ 717055 of size: 2787, ends @ 719842
Atom dinf @ 717063 of size: 36, ends @ 717099
Atom dref @ 717071 of size: 28, ends @ 717099
Atom stbl @ 717099 of size: 2727, ends @ 719826
Atom stts @ 717107 of size: 24, ends @ 717131
Atom stsz @ 717131 of size: 1268, ends @ 718399
Atom stsc @ 718399 of size: 40, ends @ 718439
Atom stco @ 718439 of size: 32, ends @ 718471
Atom stss @ 718471 of size: 1264, ends @ 719735
Atom stsd @ 719735 of size: 91, ends @ 719826
Atom mp4a @ 719751 of size: 75, ends @ 719826
Atom esds @ 719787 of size: 39, ends @ 719826
Atom smhd @ 719826 of size: 16, ends @ 719842
带有 mp3 音频流的 mp4 容器
Atom trak @ 1663835 of size: 4844, ends @ 1668679
Atom tkhd @ 1663843 of size: 92, ends @ 1663935
Atom mdia @ 1663935 of size: 4744, ends @ 1668679
Atom mdhd @ 1663943 of size: 32, ends @ 1663975
Atom hdlr @ 1663975 of size: 45, ends @ 1664020
Atom minf @ 1664020 of size: 4659, ends @ 1668679
Atom smhd @ 1664028 of size: 16, ends @ 1664044
Atom dinf @ 1664044 of size: 36, ends @ 1664080
Atom dref @ 1664052 of size: 28, ends @ 1664080
Atom stbl @ 1664080 of size: 4599, ends @ 1668679
Atom stsd @ 1664088 of size: 87, ends @ 1664175
Atom mp4a @ 1664104 of size: 71, ends @ 1664175
Atom esds @ 1664140 of size: 35, ends @ 1664175
Atom stts @ 1664175 of size: 24, ends @ 1664199
Atom stsc @ 1664199 of size: 28, ends @ 1664227
Atom stsz @ 1664227 of size: 2228, ends @ 1666455
Atom stco @ 1666455 of size: 2224, ends @ 1668679
谢谢有限元
更新:
我找到了解决问题的方法:通过观看 AtomicParsley 的代码,我发现可以得到有关流原子 (mp4a) 的编解码器信息,读取第 11 个字节进入 esds(基本流描述)原子。
现在我正在这样工作:
如果第 11 个字节的值是 0x40,我假设流是 AAC,否则如果我读取 0x69,我假设流是 MP3。
我不喜欢这些“经验”解决方案,所以我正在寻找更正确的解决方案方式,但我只找到 Understanding_AAC这并不完整。
有人知道在哪里可以获得 MP4 容器的更详细规范吗?
最佳答案
在“esds”原子中,有一些与确定编解码器相关的字段。 esds 原子内容的第一个字节是 objectTypeInduction
(这是解决方案中的第 11 个字节)。该字段应该指示所使用的编解码器,但有一些条目被多个编解码器使用。 MP4RA 有一个 full list of codec values 。以下是与本例相关的一些内容:
0x6B
和 0x69
分别表示 MPEG-1 和 2 层 1、2 和 3。0x67
表示 MPEG-2 AAC LC,但通常不使用 0x040
(0x66
和 0x68
也是 MPEG-2 AAC 配置文件,甚至很少出现)。 0x40
表示 MPEG-4 音频。 MPEG-4 音频通常被认为是 AAC,但 MPEG-4 音频中有一个完整的音频编解码器框架,包括 AAC、BSAC、ALS、CELP 和 MP3On4。 MP3On4 是一种 MP3 变体,带有一些新的多 channel header 信息。
我们可以通过查看 AudioSpecificConfig
来了解 MPEG-4 音频中实际的音频格式。这是解码器的全局 header ,存在于“esds”原子内容的字节 13 处。在AudioSpecificConfig
的开头有一个5位AudioObjectType
。可以在多媒体 wiki 上找到完整列表(在您的帖子中的“MPEG-4 音频”文章下链接:http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio 但以下是有用的值:
如果您不担心“MP3On4”mp3 变体或其他奇怪的 MPEG-4 音频编解码器,那么只需使用 objectTypeInduction
。
在 MPEG 规范中,这些详细信息分布在 14496-1、-12、-14 和 -3 中。其中只有 14496-12 是免费提供的:http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html
关于audio - mp4atom - 如何区分音频编解码器?是 AAC 还是 MP3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3987850/
我是 iphone 开发人员,现在正在开发一款 mac 应用程序。这是我在 mac 平台上的第一个项目。 我必须分析歌曲文件的 BPM。我已经使用 FMOD 和 SoundTouch 库为 MP3 完
我正在尝试使用 libavcodec/ffmpeg API 以 AAC-LC、AAC-HE-V1、AAC-HE-V2 编码音频。 但是当我使用以下配置和 API 调用时。它显示“无效的 AAC 配置文
我正在尝试使以下截屏命令起作用: avconv -f alsa -ar 44100 -ac 2 -i default -acodec aac -strict experimental -ab 320k
我想使用 ffmpeg 将 mp3 转换为 aac 并将其流式传输到我的节点应用程序中的 s3。我的代码如下。现在,当我尝试将 audioCodec 用作“aac”或“libfdk-aac”时。它抛出
我设法记录了 mp3 与 VLC 2.1.5 在 MacOSX 10.9.2 通过使用这个命令: ./VLC -vvv qtsound://AppleHDAEngineInput:1B,0,1,0:1
我正在尝试将原始 PCM 转换为 aac。所以我试图通过 ffmpeg 来实现它。 我的 ffmepg 配置 --enable-cross-compile --arch=arm --cpu=armv6
您好,我出于非营利目的运行流式编码器。选择 FFMPEG 是因为它非常简单并且几乎可以完美地完成工作,但是音频会发出嘈杂的爆裂声。视频非常清晰。 ffmpeg 版本 N-86950-g1bef008
如果我有一个包含视频流和音频流的 .mp4 文件。如果我执行这个命令: ffmpeg -i input.mp4 -ss 00:00:14.000 -t 00:00:01.000 -vn -c:a li
我想将 WAV 格式的音频流编码为 AAC 格式,并将 AAC 音频流解码为 WAV。我可以使用 SharpDX 的 MediaFoundation DLL 实现吗?那我该如何使用呢? 最佳答案 也许
如果你只做 ffmpeg -i aFile.ts aFile.m4a 会发生什么?而不是 ffmpeg -i aFile.ts -codec copy aFile.m4a ,当 TS 文件只包含一个流
我正在开发一个 MP3 播放器,我想添加 radio 功能。几乎所有关于此的 StackOverflow 帖子都来自 2010 年。这对于这个主题来说非常烦人,因为我找不到解决方案。我知道这是商业解决
我可能听起来太菜鸟请原谅我。当我在 Matlab 中使用 读取 .AAC 音频文件时有声读物 函数输出是一个 256000x6 矩阵。我怎么知道每列的内容是什么? filename = 'sample
有什么提示吗?我正在尝试:http://www.jplayer.org/结果不佳。 错误的结果意味着它不起作用,也完全没有错误。 因此,我正在寻找一种支持.aac文件的替代方案。 最佳答案 试试这个
我确实有一个非常特殊的问题,我希望我能找到答案。 我正在尝试使用 NAudio 库从 URL(在线流广播,例如 live.noroc.tv:8000/radionoroc.aacp)读取 AAC 流并
我目前正在尝试开发视频/音频编码管道。 我的目标是对包含 h264 视频轨道和 AAC 音频轨道的 mp4 文件进行编码。这些文件应该一个接一个地播放,中间没有任何间隙。 目前我正在使用 ffmpeg
我目前正在使用RTP传输音频(8kHz的AAC-HBR)和视频(H264)。两种供稿都可以单独正常工作,但是放在一起时,它们的同步速度非常快(不到15秒)。 我不确定如何增加音频RTP报头上的时间戳,
我正在尝试将3gpp中打包的AAC-LC数据编码为RTP。我已经通过了rfc 3640,但我仍然不知道从哪里开始。我将在AAC数据中找到什么?如果我没记错的话,前40个字节将是MP4 header ,
我正在处理具有以下元数据的 M4a 文件: Metadata: major_brand : M4A minor_version : 0 compatible_bra
在使用 FFMPEG android java 库时发生以下异常的视频播放速度(使视频变慢)。 [aac @ 0x416c26f0] The encoder 'aac' is experimental
我无法让 FFmpeg 将 AAC 文件转换为 HLS block : cat file.m4a | ffmpeg -y -i pipe:0 -c:a libmp3lame -q:a 0 -map 0
我是一名优秀的程序员,十分优秀!