《《我唾弃你的坟墓1978》贬顿中英双字免费在线播放...》剧情介绍:对于不断增强经济发展内生动力而言关键在于促进消费和稳定主体预期一方面要将已经出台的各项支持扩大消费的举措落细落实针对不同收入群体提供更加丰富多元化的优质商品和服务供给更好匹配居民家庭多样化的消费需求包括推动鞋服等消费品行业转型升级、朝着品牌化高端化品质化发展、创新消费服务场景、大力促进大健康相关服务消费等另一方面要进一步营造公正、透明、预期稳定的制度环境保持政策的稳定性连续性拓...白云亦是眼直了只有筑基期才能御剑飞行筑基啊等到宗门贡献到了老夫也进个筑基期《我唾弃你的坟墓1978》贬顿中英双字免费在线播放...心腹犹豫了片刻上前一步小声道前些日子小的有所听闻景焕尊者恐怕并不是孕育子嗣的打算大学生们真的卖上菜了
《《我唾弃你的坟墓1978》贬顿中英双字免费在线播放...》视频说明:风波恶走后剩下三女面面相觑脸颊微微泛起红晕首发2024-09-23 06:23·如一音视频同步(播放)原理2020-03-02 15:52·linux技术栈每一帧音频或视频都有一个持续时间:duration:采样频率是指将模拟声音波形进行数字化时每秒钟抽取声波幅度样本的次数正常人听觉的频率范围大约在20Hz~20kHz之间根据奈奎斯特采样理论为了保证声音不失真采样频率应该在40kHz左右常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等如果采用更高的采样频率还可以达到DVD的音质对采样率为44.1kHz的AAC音频进行解码时一帧的解码时间须控制在23.22毫秒内背景知识:(一个AAC原始帧包含一段时间内1024个采样及相关数据)分析:1) AAC音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)一帧 1024个 sample采样率 Samplerate 44100Hz每秒44100个sample, 所以根据公式 音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率当前AAC一帧的播放时间是= 1024*1000000/44100= 22.32ms(单位为ms)2) MP3mp3 每帧均为1152个字节 则:frame_duration = 1152 * 1000000 / sample_rate例如:sample_rate = 44100HZ时计算出的时长为26.122ms这就是经常听到的mp3每帧播放时间固定为26ms的由来3)H264视频的播放时间跟帧率有关 frame_duration = 1000/fps例如:fps = 25.00 计算出来的时常为40ms这就是同行所说的40ms一帧视频数据理论上的音视频(播放)同步是这样的:由此得到了每一帧数据的持续时间音视频交叉存储在容器中:一个时间轴:时间轴:0 22.32 40 44.62 66.96 80 89.16 111.48 120 ................音 频 :0 22.32 44.62 66.96 89.16 111.48 ................视 频 :0 40 80 120 ................即视频的持续时间相加 和音频的持续时间相加作比较谁小写入哪个但实际情况(播放)是不成立的1:首先解决一个问题为什么不 音频播音频的 视频播视频的 即上面的 到 第22.32ms播一帧音频 到40ms播一帧视频因为这个22.32ms 或40ms是算不准的或者说和声卡播的时间是不一样的这里就需要知道声卡播一帧/或者说播放一个buf音频需要多长时间2:声卡每次播一个采样点 而不是一帧声音当一个采样点丢失了都可以听出来视频则不然3:音视频同步方式:1----回调方式假设声卡有两块缓存都是存放要播放的声音pcm的 一直在播放"B"buf 首先确定几点(1)buf大小是固定的这样播放一个buf的时间就是固定的假设30ms;(2)当bufB播放完毕即buf用完再播放bufA",保证音频pcm一直都连续(3)当一个buf播放完毕,那说明系统(声卡)过了30ms, 这时候有可能真正的时间过了40ms(这里不用关心),这里则通过回调得到一次时间30ms;(4)再去用视频对应音频的30ms,这时候的时间就是准确的:时间轴:0 30 60 90 120 ................音 频 :0 22.32 44.62 66.96 89.16 111.48 ................视 频 :0 40 80 120 ................(5)这里有个问题就是 视频中 30ms 到40ms 这中间的10ms是怎么算出来的这个是不用关心的因为人的眼睛10ms是看不出来的即当音频的30ms一次回调时就可以播放第二帧视频如上图第一次回调(30ms)---播(40ms)视频第一次回调(60ms)---播(80ms)视频第一次回调(90ms)---不播视频第一次回调(120ms)---播(120ms)视频4:音视频同步方式:1----阻塞方式还是看上面的图(1)buf"B"一直在播放传入buf"A"的外部buf把数据给buf"A"后 不立即返回等到buf"B"播放完成再返回这时从传入到经过阻塞出来就是一个buf的时间例如上面的30ms(2)然后buf"A"一直在播放传入buf"B"的外部buf把数据给buf"B"后 不立即返回等到buf"A"播放完成再返回这时从传入到经过阻塞出来就是一个buf的时间例如上面的30ms(3)循环上面(1)(2),即得到了如回调方式同样的那个30ms时间下面和回调方式一样见回调方式(4)(5)这样基本上可以完成准确的音视频同步,如上文有不对的或不完善的地方请指教需要C/C++ Linux服务器架构师学习资料私信资料(资料包括C/C++Linuxgolang技术NginxZeroMQMySQLRedisfastdfsMongoDBZK流媒体CDNP2PK8SDockerTCP/IP协程DPDKffmpeg音视频等)免费分享
2024-12-21 21:24:21