小视频app开发过程中,转码的速度是否够快也是众多软件开发商十分关心的一个方面。如果转码的时间过长,就会造成用户的产品体验非常差。为了避免用户体验差,就需要了解相关的问题所在。所以今天来给大家简单分享一下,关于转码速度方面的几点经验总结。
1. 调整软件编码的编码参数
一般转码的时间大部分都会被视频的编码占用,在保证画质不会出现较大影响的前提下可以将编码参数进行调整,可以节省百分之三十或以上的编码时间。
2. 开启硬件编码和解码
这里先来说一下硬件编码的缺点:在Android端,硬件编码的兼容性比较差,而且相比起来硬件编码的压缩比要低于软件编码。说到硬件编码的优点,就十分显而易见了。硬件编码器的速度快,而且占用的资源相对较少。硬件解码的兼容性比起硬件编码来说会好很多,所以使用硬件解码可以节省软件解码的时间开销。
在开启硬件编解码后,实现过程中需要注意什么?下面接着来讲一下实现过程中会遇到的问题。
1. 图像质量问题
开启硬件编码后,对比画质可以发现转码后的图像质量较差。原因就是在使用API时,选择的是CBR即固定码率,它的好处是码率比较稳定但是容易牺牲画质,所以CBR更适用于移动直播场景。那么在短视频的应用场景下,选择VBR即动态比特率会获得更好的图像质量。
2. 硬件解码与码流格式不兼容
H.264码流主要分Annex-B和AVCC两种格式,而硬件解码只接受Annex-B格式的码流,所以在解码MP4 Demux出的视频流时,需要解析extradata,取出sps和pps,通过CSD(Codec-Specific Data)来初始化解码器;并且将AVCC码流转换为Annex-B,在ffmpeg中使用h264_mp4toannexb_filter或hevc_mp4toannexb做转换。
3.硬件解码时间戳不准确的问题
硬解码器解码视频到Surface,但是通过SurfaceTexture.getTimestamp()获得的时间戳并不准确,会出现情况异常。所以还是要使用解码输入的时间戳,将解码过程由异步转为同步,或者将pts存储到队列中来实现。
其实在小视频app开发的过程中,转码对于普通的用户来说是看不见摸不着的,但它确实是短视频SDK中的一个重要过程。所以在开发过程中怎样才能
使转码过程耗时更短、转码后图像的质量更高和减少开发和维护成本,这些也是众多软件开发商十分关注的。