音视频博客
+ -

ffmepg解析MP4音频转UAC音频的时钟同步问题

2022-12-30 84 0

ffmpeg给的时间不是整数倍,如为44100采样率2通道的视频,那么每包4096字节,其包音隔时间应为0.023220,即4096/(44100x2x2)=0.023220,而UAC设备的时间间隔应为10ms,故需要拆包给包重新进行时间PTS设置。

以前写了一个BUG,用的是4096的时间用于起始时间,发现组包UAC时间包之后会出现小于0.01的时间,故一直没有解决此问题。
今天正好为了音视频同步,就对此问题的数据进行了手动分析。最终如下:
时间分析过程

0 0.000000(0.000000)  4096-1764=2322
1 0.010000(0.010000)  2322-1764=568

0 0.023220(0.013220) 568+4096-1764=2900
1 0.033220(0.010000) 2900-1764=1136

0 0.046440(0.013220) 1136+4096-1764=3468
1 0.056440(0.010000) 3468-1764=1704

0 0.069660(0.013220) 1704+4096-1764=4036
1 0.079660(0.010000) 4036-1764=2272
2 0.089660(0.010000) 2272-1764=508(0.0028798185941043)

0 0.092880(0.003220) 508的起始时间为0.092880,但我们从-508给的时间是这个pts,导致mic时间变快了

分包数据

1 0.102880(0.010000)
0 0.116100(0.013220)
1 0.126100(0.010000)
0 0.139320(0.013220)
1 0.149320(0.010000)
2 0.159320(0.010000)
0 0.162540(0.003220)
1 0.172540(0.010000)
0 0.185760(0.013220)
1 0.195760(0.010000)
0 0.208980(0.013220)
1 0.218980(0.010000)
2 0.228980(0.010000)
0 0.232200(0.003220)
1 0.242200(0.010000)
0 0.255420(0.013220)
1 0.265420(0.010000)
0 0.278639(0.013220)
1 0.288639(0.010000)
2 0.298639(0.010000)
0 0.301859(0.003220)
1 0.311859(0.010000)
0 0.325079(0.013220)
1 0.335079(0.010000)
0 0.348299(0.013220)
1 0.358299(0.010000)
2 0.368299(0.010000)
0 0.371519(0.003220)
1 0.381519(0.010000)
0 0.394739(0.013220)
1 0.404739(0.010000)
0 0.417959(0.013220)
1 0.427959(0.010000)
2 0.437959(0.010000)
0 0.441179(0.003220)
1 0.451179(0.010000)
0 0.464399(0.013220)
1 0.474399(0.010000)
0 0.487619(0.013220)
1 0.497619(0.010000)
2 0.507619(0.010000)
0 0.510839(0.003220)
1 0.520839(0.010000)
0 0.534059(0.013220)
1 0.544059(0.010000)
0 0.557279(0.013220)
1 0.567279(0.010000)
2 0.577279(0.010000)
0 0.580499(0.003220)
1 0.590499(0.010000)
0 0.603719(0.013220)
1 0.613719(0.010000)
0 0.626939(0.013220)
1 0.636939(0.010000)
2 0.646939(0.010000)
0 0.650159(0.003220)
1 0.660159(0.010000)
0 0.673379(0.013220)
1 0.683379(0.010000)
0 0.696599(0.013220)
1 0.706599(0.010000)
0 0.719819(0.013220)
1 0.729819(0.010000)
2 0.739819(0.010000)
0 0.743039(0.003220)
1 0.753039(0.010000)
0 0.766259(0.013220)
1 0.776259(0.010000)
0 0.789478(0.013220)
1 0.799478(0.010000)
2 0.809478(0.010000)
0 0.812698(0.003220)
1 0.822698(0.010000)
0 0.835918(0.013220)
1 0.845918(0.010000)
0 0.859138(0.013220)
1 0.869138(0.010000)
2 0.879138(0.010000)
0 0.882358(0.003220)
1 0.892358(0.010000)
0 0.905578(0.013220)
1 0.915578(0.010000)
0 0.928798(0.013220)
1 0.938798(0.010000)
2 0.948798(0.010000)
0 0.952018(0.003220)
1 0.962018(0.010000)
0 0.975238(0.013220)
1 0.985238(0.010000)
0 0.998458(0.013220)
1 1.008458(0.010000)
2 1.018458(0.010000)
0 1.021678(0.003220)
1 1.031678(0.010000)
0 1.044898(0.013220)
1 1.054898(0.010000)
0 1.068118(0.013220)
1 1.078118(0.010000)

不分包时间:

0 0.000000(0.000000)
0 0.023220(0.023220)
0 0.046440(0.023220)
0 0.069660(0.023220)
0 0.092880(0.023220)
0 0.116100(0.023220)
0 0.139320(0.023220)
0 0.162540(0.023220)
0 0.185760(0.023220)
0 0.208980(0.023220)
0 0.232200(0.023220)
0 0.255420(0.023220)
0 0.278639(0.023220)
0 0.301859(0.023220)
0 0.325079(0.023220)
0 0.348299(0.023220)
0 0.371519(0.023220)
0 0.394739(0.023220)
0 0.417959(0.023220)
0 0.441179(0.023220)
0 0.464399(0.023220)
0 0.487619(0.023220)
0 0.510839(0.023220)
0 0.534059(0.023220)
0 0.557279(0.023220)
0 0.580499(0.023220)
0 0.603719(0.023220)
0 0.626939(0.023220)
0 0.650159(0.023220)
0 0.673379(0.023220)
0 0.696599(0.023220)
0 0.719819(0.023220)
0 0.743039(0.023220)
0 0.766259(0.023220)
0 0.789478(0.023220)
0 0.812698(0.023220)
0 0.835918(0.023220)
0 0.859138(0.023220)
0 0.882358(0.023220)
0 0.905578(0.023220)
0 0.928798(0.023220)
0 0.952018(0.023220)
0 0.975238(0.023220)
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB-UAC麦克风 音频控制接口
音频控制接口描述符描述了设备的结构(拓扑结构),并通过特定类请求对音频的控制。UAC麦克风 音频控制接口描述符偏移地址字段长度值描述0bLength10x09接口描术符的长度1bDescriptorType10x04描述符的类型接口描述符2bInterfaceNumber10x00接口ID号3bA......
USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
UAC 类特定音频控制接口头描述符
UAC类特定音频控制头接口描述符这个名字有点绕,其实这个描述符是前接标准的音频控制接口描述符,后续关于音频控制的所有相关描述符,起着承上起下的作用。当然也可以认为是音频控制相关描述符的前导。这是因为UAC类特定音频控制接口描述符含有一个关键的字段wTotalLength,用于包含音频控制所有接口描述......
华为UAC耳机 音频控制接口
音频控制接口占用接口ID=0,音频控制接口的描述符结构布局如下:USB标准接口描述符UAC音频控制接口头描述符IDSId描述    音频控制输入终端描述符1USB Streaming   ......
华为UAC耳机的工作过程数据分析
华为UAC耳机工作时,首先需要打开设备,然后读取数据,播放过程后,需要关闭设备。这里我们使用BusHound抓包(省略掉重复的数据包:由于这些特定类请求是发给UAC音频控制终端/实体或接口的,所以我们先回顾一下UAC音频控制单元的一些ID,然后对照其选择子进行分析。UAC音频控制接口头描述符ID描述......
UAC 文档下载
UAC规范1.0文档下载地址:https://www.usb.org/sites/default/files/audio10.pdfUAC规范2.0文档下载地址:https://www.usb.org/sites/default/files/Audio2.0_final.zipUAC规范3.0及3.......
UAC 音频数据格式FORMAT_TYPE_3
下面来介绍USB Audio Data Formats 的第一类音频数格式 FORMAT_TYPE_III = 0x03Audio Data Format Type III Codes 其下又分为5种,分别为:NamewFormatTagTYPE_III_UNDEFINED0x2000IEC1937......
UAC 音频控制
一个USB设备可能包含多个配置。像手机一样,当手机通过USB线缆接入PC机后,会弹出一个选择对话框:让用户选择。当然一个USB设备只能工作在一种配置描述符下。对于每一个USB配置描述符,可能含有多个USB接口描述描述符,同时这些接口描述符可能每个接口描述符又包含多个转换接口描述符。这些接口描述符可能......
USB音箱 UAC Speaker 概述
手头有一个USB Speaker,插入电脑后在设备管理器中如下:从设备管理器中来看,这是一个单一功能的Usb Speaker。其硬件设备ID如下:USBVID_1908&PID_2070&REV_0100(USB Composite Device)USBVID_1908&......
USB音箱 UAC配置描述符分析
该USB音箱的配置描述符和普通USB设备描述符结构体一致,并无特别区别。该配置描述符的总长度(包括后续的所有其它描述符)为110字节,这里相对华为耳机的要少了很多,这是因为少了像麦克风和HID。从配置描述符的字段bmAttributes来看,并不支持远程唤醒功能。 ------------......
华为UAC耳机 配置描述符
配置描述符的大小其实不光包括配置描述符自身,也包括后续的所有描述符。这里我们只先介绍一下配置描述符,后续的接口描述符和其它UAC相关描述符在后续一节介绍。配置描述符的内容如下: ------------------ Configuration Descriptor --------------......
UAC 其它速率配置描述符
UAC规范中,并没有定义特别的其它速率配置描述符,故UAC音频设备的其它速率描述符应符合USB规范中的其它速率配置描述符。......
UAC Feedback端点
下面转一段对USB feedback的理解:这段时间一直在做USB Audio Device(UAC)设备的开发工作。由于UAC采用的是isochronous endpoint来传输数据,对时钟的要求较高。但无奈我们的嵌入式平台的时钟并不准,数据同步就成了问题。经过研究,发现只能使用异步模式来解决这......
USB-UAC麦克风 配置描述符
UAC麦克风采用的配置描述符结构和USB配置描述符的结构一致.偏移地址字段长度值描述0bLength10x09配置描述符的长度1bDescriptorType10x02描述符类型,配置描述符类型2wTotalLength20x0064配置描述符的总长度(包括后续的UAC音频控制和UAC音频流接口描述......
华为UAC麦克风的工作过程数据分析
看完了耳机的数据分析,再来分析麦克风,就相对来说很简单了,这是因为:第一:麦克风没有音频控制特效单元描述符,所以少了很多特定类请求。第二:麦克风只有一个音频流转换接口,且只支持采样率为48000HZ 16位。具体的过程见下:Length Phase Data-------- --......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!