问题标签 [adts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
352 浏览

mp4 - fmp4文件如何根据AAC帧的ADTS填充esds框?

我的源 AAC 帧包含 ADTS 标头。我需要根据ADTS初始化fmp4文件中的esds框,剪掉ADTS头,填写其余数据,但是我试了很多次都没有成功(播放器解析不出音频)。以下是我的 ADTS 数据。我配置的esds box的哪些参数需要修改?

ADTS

FF 1111 1111 0-7 位

F9 1111 1001 8-15 位 MPEG-2 无 CRC

60 0110 0000 16-23 位 AAC 主

40 0100 0000 24-27 位

在此处输入图像描述

在此处输入图像描述

0 投票
0 回答
107 浏览

audio - 使用 ffmpeg 解码时理解音频流样本数的问题

我正在解码的两个流是一个音频流(adts AAC、1 个通道、44100、8 位、128bps)和一个视频流(H264),它们在 Mpeg-Ts 流中接收,但我注意到一些没有当我解码 AAC 音频帧并尝试排列音频/视频流时间戳时,这对我来说很有意义。我正在为每个视频和音频帧解码 PTS,但是我每 7 帧才在音频流中得到一个 PTS。

当我解码单个音频帧时,我总是得到 1024 个样本。帧速率是 30fps,所以我看到 30 帧,每帧有 1024 个样本,这些样本等于30,720样本,而不是预期的44,100样本。这是计算时间线时的一个问题,因为帧上的时间戳在音频和视频流之间略有不同。它非常接近,但由于我通过它计算时间戳,(1024 samples * 1,000 / 44,100 * 10,000 ticks)它永远不会与 30fps 视频完全一致。

我在解码 ffmpeg 音频帧时做错了什么,还是误解了音频样本?在我的特定应用程序中,这些时间戳至关重要,因为我试图将在音频帧级别解码的 LTC 时间戳对齐,并将它们与视频帧对齐。

FFProbe.exe: