前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FFmpeg-音视频产品不容忽视的隐形王者

FFmpeg-音视频产品不容忽视的隐形王者

作者头像
用户5521279
发布2019-12-12 11:44:50
1.6K0
发布2019-12-12 11:44:50
举报
文章被收录于专栏:搜狗测试

前言

视频播放是目前各大移动应用必不可少的功能,视频播放可以进一步细分为视频解码、视频渲染、音视频同步三部分。近期,项目组内核视频解码的实现方案将由MediaPlayer变更为FFmpeg。故借此调研FFmpeg相关基础,思考其在日常测试过程的作用和帮助。

什么是FFmpeg,它比你想象更厉害

FFmpeg是一套音视频多媒体处理开源框架,它提供了对音视频的采集、编码、解码、转码、音视频分离、合并、流化、过滤器等丰富的功能。 光看介绍,大家会感觉FFmpeg平淡无奇,并没有太多存在感,也没有太多知名度。但是实际上通过调研学习会发现,它比想象中的更加强大。

  • 业界视频播放框架和FFmpeg均有很深渊源

目前,业界的视频播放主要有三种架构:MPC, MPlayer和VLC,占据市场90%的份额。而三个架构均使用或者融合FFmpeg的视频解码技术。FFmpeg犹如至尊魔戒,驱使视频播放领域中的万物。

图1. 指环王中描述魔戒的诗歌

  • 主流播放器均使用FFmpeg作为内核

在国内家喻户晓的视频播放器,例如Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音均使用FFmpeg作为内核。而项目中大家非常熟悉的ijkplayer也是基于FFmpeg发展而来的。

  • 现在火热的短视频APP,技术处理会用到FFmpeg

这些APP一般使用 FFmpeg或者基于FFmpeg优化来实现裁剪、滤镜、水印、拼接、过渡、混音等特效。 由此,FFmpeg的强大可见一斑。

FFmpeg解码器测试过程的注意事项

回归项目FFmpeg解码器这个测试过程,项目引入FFmpeg作为内核的视频解码器,测试同学需要注意哪些问题呢?

  • 视频格式的支持

在项目中,FFmpeg主要是替换原有的视频解码器,所以在测试过程需要注意两个方案对于视频格式的支持情况,并进行相应的适配测试,避免由于替换成FFmpeg之后,有部分视频格式不支持。

  • 解码性能

在测试过程,有同学发现,在切换成FFmpeg作为视频解码器后,点击视频播放到视频展示的耗时较之前有所增加。对此,建议大家在测试过程需要注意解码性能,包括但不限以下两点. 解码效率: 对于解码效率,可以通过埋点数据获得解码帧数和时间间隔长度。通过已解码的帧数除以中间间隔的时长就可以得到每秒解码的帧数。 首帧加载速度: 对于首帧的加载速度,主要影响因素有网络部分耗时和业务端内核的耗时。对此,测试同学可以做好统计埋点,计算首帧的展示时间,来对比修改前后的差异。

  • 资源占用情况

在测试FFmpeg解码器过程,需要注意对资源占用的影响,例如对于CPU,内存和耗电量的消耗情况。其中CPU和内存的资源占用的性能评测尤为重要。

  • FFMPEG缓存区大小

在测试FFmpeg视频解码过程,需要注意设置的缓存区大小对于视频播放的影响。如果当缓存区大小设置过小,当图像快速更新或具有高分辨率时,可能会导致视频播放出现马赛克化。

FFmpeg工具对于测试有什么帮助

趁着项目测试需要,小编对于FFmpeg开源软件有一定调研了解。那么,在进行FFmpeg解码器的测试之余,开始思考,FFmpeg对于我们其他的测试任务中有什么帮助呢? FFmpeg可以帮其他测试同学构造丰富的测试物料资源,更好的模拟各类场景。

  • 不同格式的视频资源

在测试视频初期,需要收集不同格式的视频资源来进行视频格式的视频。收集完整的视频格式资源相对比较费劲,更不用提还有视频尺寸和分辨率的测试需求。

  • 不同需求的广告物料

在测试过程,基于产品需求,对于应用内广告展示的测试也需要满足不同的需求。通过FFmpeg可以更精准的生成满足不同需求的测试物料。

  • 制作带有动态封面的视频

之前有反馈过问题,场景和动态封面的视频有关,场景较难模拟,通过FFmpeg可以实现动态封面的视频,方便测试同学进行相关的问题定位。

  • 更多其他媒体处理功能

正如前面介绍的,FFmpeg可以方便裁剪、滤镜、水印、拼接、过渡、混音功能,在短视频和云表情相同功能的测试有更多用处待大家使用。

FFmpeg的安装与使用(以ubuntu为例)

基于FFmpeg对于日常测试有较大的帮助,大家可以花1分钟时间学习FFmpeg安装和基本使用命令。

  • Step 1 – Setup FFmpeg PPA

目前在ubuntu中FFmpeg的最新版本是FFmpeg 4。首先需要在系统中添加PPA.

代码语言:javascript
复制
sudo add-apt-repositoryppa:jonathonf/ffmpeg-4
  • Step 2 – Install FFmpeg on Ubuntu

在启用PPA后,执行下行命令安装FFmpeg。

代码语言:javascript
复制
sudo apt-get update
sudo apt-get install ffmpeg
  • Step 3 – Check FFmpeg Version

完成安装后,我们可以查看下系统中安装的版本。

代码语言:javascript
复制
ffmpeg -version

图2. 查看FFmpeg版本的结果

  • Step 4 – Basic Examples

下面简单介绍FFmpeg简单有趣的用法。

Reduce .mov File Size:

通过这个命令可以对目标视频文件的大小进行有效裁剪。

代码语言:javascript
复制
ffmpeg -i in.mov -c:v libx264 -c:acopy -crf 20 out.mov

Convert .move To .mp4

通过这个简单的命令可以完成视频的转码,在未来的测试过程中,这个将会经常用到,可以便捷的提供测试物料资源。

代码语言:javascript
复制
ffmpeg -i in.mov -vcodec copy-acodec aac -strict experimental -ab 128k out.mp4

Overlay Two Images

这是个比较有意思的例子,通过重叠,将一只跳舞的小黄鸭添加到沙滩背景之上。很多小视频合成和搞怪表情包就是通过这个方式生成的。

代码语言:javascript
复制
ffmpeg -y -ignore_loop 0 -i./in-01.gif -i ./in-02.gif -filter_complex overlay=100:H-320:shortest=1output.gif

图3. 合并前的沙滩Gif图

图4. 合并前的小黄鸭Gif图

图5. 合并后的Gif图,沙滩上跳舞的小黄鸭

结语

本文简单介绍FFmpeg的功能,FFmpeg解码器测试过程的注意点以及在测试工作的应用。 在测试工作过程中,很多测试对象中使用的技术和框架可以借鉴并应用到测试工作中,为我们提高更为丰富的测试方法。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档