博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小视频app开发过程中关于转码问题的经验总结
阅读量:6209 次
发布时间:2019-06-21

本文共 1004 字,大约阅读时间需要 3 分钟。

小视频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中的一个重要过程。所以在开发过程中怎样才能

使转码过程耗时更短、转码后图像的质量更高和减少开发和维护成本,这些也是众多软件开发商十分关注的。

 

转载地址:http://trzja.baihongyu.com/

你可能感兴趣的文章
跳出多重循环 JS
查看>>
MySql 自动更新时间为当前时间
查看>>
Configuring Aggregated Ethernet Interfaces
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Asp.net页面和Html页面之间的关系
查看>>
[故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
查看>>
MySQL之数据库对象查看工具mysqlshow
查看>>
关于大学生玩网络游戏的调查问卷
查看>>
ubuntu安装nodejs
查看>>
数据类型之Integer与int
查看>>
转载:ASP.NET在后台代码实现个功能,根据选择提示用户是否继续执行操作
查看>>
[Angularjs]锚点操作服务$anchorScroll
查看>>
静态代理设计与动态代理设计
查看>>
uva-10152-乌龟排序
查看>>
ThreadLocal源码剖析
查看>>
每天一个linux命令(12):more命令
查看>>
奈奎斯特采样定理:
查看>>
Java笔试之Singleton
查看>>
android自动化框架简要剖析(一):运行原理+基本框架
查看>>