4k怎么不能添加音乐(音同步的各种坑)
4k怎么不能添加音乐(音同步的各种坑)the size of sample = Bit Rate/ Samples rate = 128Kbps/44.1KHz = 2.9 bit Samples Per Frame of Mp3 stream = 1152 需要的参数sample rate Bitrate sameple per frameFor example: samples rate = 44.1 KHz Bit Rate = 128 Kbps
互联网市场中之所以存在那么多优质的app,都是经过无数次的测试、优化和更新完成的。要想开发一款优质的app并没有那么容易。比如在短视频平台开发时,不仅需要考虑音视频是否同步、首屏打开速度等问题,还需要考虑界面的UI和功能等是否贴近用户需求。所以难免会在开发过程中遇到问题,今天就简单的盘点一下硬编解时可能会遇到的“坑”
一、音视频的播放速度:
1、对于Video 有 framerate 解码器可以根据framerate的速度了解码,比如说30 fps的码流,视频解码器以33ms的速度来显示每一帧。
2、对于Audio 可以通过以下公式算出播放每一个frame的速度:
需要的参数sample rate Bitrate sameple per frame
For example: samples rate = 44.1 KHz
Bit Rate = 128 Kbps
Samples Per Frame of Mp3 stream = 1152
the size of sample = Bit Rate/ Samples rate = 128Kbps/44.1KHz = 2.9 bit
frame size = the size of the sample * samples per frame /8 = 417 Byte
The duration of one frame = frame size * 8/Bitrate = 417*8/128K = 26 ms
The duration of one frame = Samples per frame/sample rate = 1152/44100 = 26ms
对于纯视频或者是纯音频文件,个人觉得是可以上述参数来控制播放速度,但是对于音视频文件,这样来控制播放速度就又容易失步了。
二、音视频同步:
1、为了实现音视频同步,我们增加了Video/Audio DTS/PTS 参数,DTS 来控制什么时候解码,PTS来控制什么时候显示。
个人理解:DTS(Decode Time Stamp) 在DTS与local clock比较,DTS时机成熟的时候进行解码,但是一般都用decode buffer 只要decode output buffer空闲,就可以decode。
PTS(presentation time stamp): PTS与ref clock比较,在一定差值范围内显示出来。
2. video 或者 audio decode出来后,到显示出现,中间可能会有一定的处理时间,要把这个delay算上,也就是PTS dispaly_delay < LPCR
3.有三种同步模式:
1.图像质量在使用硬编码之后,对比可以发现视频的画质转码后图像质量会变差。原因是什么呢?因为在使用mediacodecAPI时,选择了CBR。虽然CBR的优势是码率比较稳定,但是它会牺牲一部分画质,所以CBR更适合在移动的直播场景中应用。在短视频的转码过程中,使用硬编时更适合选择VBR,这样一来VBR能够获得更好的图像质量。但是在软编时选择VBR,情况就不太稳定,无法保证图像质量的“稳定输出”。
2.硬解不兼容H.264是短视频编解码过程中常用的标准格式,起码流主要分为AVCC和Annex-B两种格式。其中两者的主要区别在于参数集和帧格式。Annex-B的参数集pps、sps及NAL的形式存在于码流之中,也可以理解为是带内传输,以startcode分隔NAL。而AVCC的参数集主要存储在extradata中,即带外传输,使用NALU长度分隔NAL,一般MP4和MKV都使用AVCC格式进行存储。需要注意的是,Android端的硬解只接受Annex-B格式的码流,所以相似解码MP4demux出的视频流时,需要对extradata进行解析,取出pps和sps,借助CSD进行初始化解码器,并将AVCC码流转化为Annex-B,并在ffmpeg中使用H.264进行转换。3.时间戳不准确通常硬解码器会将视频解码到surface,这个时候我们所获得的时间戳并不准确,某些机型还可能会出现异常。所以就需要使用解码输入的时间戳,从而将解码过程由异步转为同步,或者也可以将pts存储到队列中实现。
4.硬编解的速度问题Mediacodec音频编解码的具体实现跟机型也有一定的关系,根据相关的测试,mediacodec音频硬编码比起软编码有6%左右的提速,但是mediacodec音频硬解反而比起软解来速度更慢一些。由于适用的应用场景和用户需求各不相同,在硬编解和软编解的选择上也是非常的令人头疼。但无论如何选择,短视频平台开发的大前提都是以用户体验为主。所以在开发时,需要进行多方考虑,不仅要保障app的流畅运行,还要从功能机制上多下功夫。这样一来,才能开发出优质的短视频app,从而在短视频领域激烈的竞争中“生存下去”。本文声明原创,转载请注明出处。
总结;私信;资料;MF送