短视频平台开发时那些容易掉进去的“深坑”

简介: 互联网市场中之所以存在那么多优质的app,都是经过无数次的测试、优化和更新完成的。要想开发一款优质的app并没有那么容易。比如在短视频平台开发时,不仅需要考虑音视频是否同步、首屏打开速度等问题,还需要考虑界面的UI和功能等是否贴近用户需求。

互联网市场中之所以存在那么多优质的app,都是经过无数次的测试、优化和更新完成的。要想开发一款优质的app并没有那么容易。比如在短视频平台开发时,不仅需要考虑音视频是否同步、首屏打开速度等问题,还需要考虑界面的UI和功能等是否贴近用户需求。所以难免会在开发过程中遇到问题,今天就简单的盘点一下硬编解时可能会遇到的“坑”。
1.图像质量
在使用硬编码之后,对比可以发现视频的画质转码后图像质量会变差。原因是什么呢?因为在使用mediacodecAPI时,选择了CBR。虽然CBR的优势是码率比较稳定,但是它会牺牲一部分画质,所以CBR更适合在移动的直播场景中应用。在短视频的转码过程中,使用硬编时更适合选择VBR,这样一来VBR能够获得更好的图像质量。但是在软编时选择VBR,情况就不太稳定,无法保证图像质量的“稳定输出”。
4afe2eae6c35472a8b0ba5e03a054e51_wps_jpeg

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存储到队列中实现。
33

4.硬编解的速度问题
Mediacodec音频编解码的具体实现跟机型也有一定的关系,根据相关的测试,mediacodec音频硬编码比起软编码有6%左右的提速,但是mediacodec音频硬解反而比起软解来速度更慢一些。
由于适用的应用场景和用户需求各不相同,在硬编解和软编解的选择上也是非常的令人头疼。但无论如何选择,短视频平台开发的大前提都是以用户体验为主。所以在开发时,需要进行多方考虑,不仅要保障app的流畅运行,还要从功能机制上多下功夫。这样一来,才能开发出优质的短视频app,从而在短视频领域激烈的竞争中“生存下去”。
本文声明原创,转载请注明出处。

相关文章
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
392 0
常用图像卷积核类型小结
卷积操作的主要目的就是对图像进行降维以及特征提取; 1.卷积核往往是行数和列数均为奇数的矩阵,这样中心较好定位; 2.卷积核元素的总和体现出输出的亮度,若元素总和为1,卷积后的图像与原图像亮度基本一致;若元素总和为0,则卷积后的图像基本上是黑色,其中较亮的部分往往就是提取出图像的某种特征; 3.滤波实际上就是Same模式的卷积操作,也就是说滤波后图像的大小不变,各种滤镜和照片的风格化就是使用不同的滤波器对图像进行操作。因此卷积核、滤波器本质上都是一个东西; 4.高通滤波器(High Pass Filter, HPF)表示仅允许图像中高频部分(即图片中变化较剧烈的部分)通过,往往用于对图像
|
机器学习/深度学习 存储 人工智能
一文读懂云计算、大数据和AI间的关系和区别
相信大家都听说过云计算、大数据和人工智能,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据、大数据的时候会提人工智能、谈人工智能的时候会提云计算……三者之间相辅相成又不可分割,那么这三者之间到底是怎么一回事呢,今天小编就来讲讲。
4592 0
一文读懂云计算、大数据和AI间的关系和区别
|
7月前
|
安全 程序员 Windows
程序员必备工具:Xshell 7专业版安装与优化全攻略
Xshell 7 是一款由韩国 NetSarang 公司开发的终端模拟器,专为Windows系统设计,广泛用于远程连接和服务器管理。本文详细介绍其下载、安装流程及配置方法,包括界面语言设置、新建会话连接、高级功能如多窗口布局与脚本自动化,还提供了常见问题解答,帮助用户高效使用软件。
935 12
|
12月前
|
安全 Java 数据安全/隐私保护
如何配置 Java 安全管理器来避免访问控制异常
配置Java安全管理器以防止访问控制异常,需在启动JVM时通过 `-Djava.security.manager` 参数启用,并设置安全策略文件,定义权限规则,限制代码执行操作,确保应用安全。
815 1
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:AI驱动的自适应学习系统
【5月更文挑战第22天】 随着人工智能技术的迅猛发展,教育领域正在经历一场由数据驱动的革新。本文将探讨AI技术在构建自适应学习系统中的关键作用,分析其如何通过个性化教学方案提高学习效率,并预测未来发展趋势。我们将深入研究机器学习算法如何识别学习者的需求,实时调整教学内容和难度,以及AI如何帮助教师和学生在教育过程中实现更好的互动和反馈。
654 0
|
存储 数据可视化 Python
使用python moviepy提取视频中的音频,同时对音频数据进行数据可视化分析
使用python moviepy提取视频中的音频,同时对音频数据进行数据可视化分析
526 0
|
自然语言处理 索引
Elasticsearch 常用查询语句大全
【7月更文挑战第8天】Elasticsearch 常用查询语句大全
|
安全 架构师 网络安全
|
机器学习/深度学习 传感器 计算机视觉
计算机视觉|视频图像的预处理
计算机视觉|视频图像的预处理
541 0