微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用ffmpeg解码时理解音频流样本数的问题

我正在解码的两个流是在 Mpeg-Ts 流中接收的音频流(adts AAC,1 通道,44100,8 位,128bps)和视频流 (H264),但我注意到一些当我解码 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:

Video:
r_frame_rate=30/1      
avg_frame_rate=30/1    
codec_time_base=1/60
time_base=1/90000      
start_pts=7560698279   
start_time=84007.758656

Audio:
r_frame_rate=0/0
avg_frame_rate=0/0
codec_time_base=1/44100
time_base=1/90000
start_pts=7560686278
start_time=84007.625311

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?