【FFMPEG】华为新老两手机平台编码的视频,在同一车机上投屏解码时间慢的问题分析
一、问题背景
今天上班时,收到华为那边咨询邮件:
分别使用华为新平台手机、老平台手机 各一台,在同一台车机上投屏HICAR ,
同样是H264编码,1920×720的视频数据,
新平台手机编码的视频,在车机上解码的时间在 20ms 以内,
老平台手机编码的视频,在车机上解码的时间有些帧超过100ms。
同步提供了新老平台的 es 流数据。
二、分析
1. 使用 pplay 播放 ES 流数据
命令: ffplay new_platform_fast.es
播放 新平台,解码速度快的 es流数据:
ciellee@sh:~/Desktop/解码速度慢$ ffplay new_platform_fast.es
ffplay version 2.8.6-1ubuntu2 Copyright (c) 2003-2016 the FFmpeg developersbuilt with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311libavutil 54. 31.100 / 54. 31.100libavcodec 56. 60.100 / 56. 60.100libavformat 56. 40.101 / 56. 40.101libavdevice 56. 4.100 / 56. 4.100libavfilter 5. 40.101 / 5. 40.101libavresample 2. 1. 0 / 2. 1. 0libswscale 3. 1.101 / 3. 1.101libswresample 1. 2.101 / 1. 2.101libpostproc 53. 3.100 / 53. 3.100
Input #0, h264, from 'new_platform_fast.es': 0KB sq= 0B f=0/0 Duration: N/A, bitrate: N/AStream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbcnan M-V: nan fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0
播放 老平台,解码速度慢的 es流数据:
ciellee@sh:~/Desktop/解码速度慢$ ffplay old_platform_low.es
ffplay version 2.8.6-1ubuntu2 Copyright (c) 2003-2016 the FFmpeg developersbuilt with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311libavutil 54. 31.100 / 54. 31.100libavcodec 56. 60.100 / 56. 60.100libavformat 56. 40.101 / 56. 40.101libavdevice 56. 4.100 / 56. 4.100libavfilter 5. 40.101 / 5. 40.101libavresample 2. 1. 0 / 2. 1. 0libswscale 3. 1.101 / 3. 1.101libswresample 1. 2.101 / 1. 2.101libpostproc 53. 3.100 / 53. 3.100
Input #0, h264, from 'old_platform_low.es': 0KB sq= 0B f=0/0 Duration: N/A, bitrate: N/AStream #0:0: Video: h264 (Baseline), yuv420p(tv, unknown/bt470bg/unknown), 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbcnan M-V: nan fd= 0 aq= 0KB vq= 119KB sq= 0B f=0/0
分别播放两视频,从视频来看画面都是差不多的。
但从 输出信息,就看到差异了:
播放 新平台,解码速度快的 es流数据:
Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc播放 老平台,解码速度慢的 es流数据:
Stream #0:0: Video: h264 (Baseline), yuv420p(tv, unknown/bt470bg/unknown), 1920x720, 25 fps, 25 tbr, 1200k tbn, 50
可以看出,视频渲染方式分别是 yuv420p 、yuv420p(tv, unknown/bt470bg/unknown)。
可以看出,老平台中,渲染参数使用了 yuv420p(bt470bg) ,显示的色彩更丰富,解码时间相对长一些是正常的。
而新平台则是渲染数据格式为 yuv420p (undef) 即原色,解码相对快些。
渲染数据格式包括, undef, bt709, bt470m, bt470bg 。
如果一定要两平台效果一样,则修改两华为手机平台渲染参数改为一致即可。
2. 使用 ffprobe -show_format 查看es 流信息
可以看出,信息其实和上面差不多:
新平台,解码速度快的 es流数据:
ciellee@sh:~/Desktop/解码速度慢$ ffprobe -show_format new_platform_fast.es
ffprobe version 2.8.6-1ubuntu2 Copyright (c) 2007-2016 the FFmpeg developersbuilt with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311Input #0, h264, from 'new_platform_fast.es':Duration: N/A, bitrate: N/AStream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc
[FORMAT]
filename=new_platform_fast.es
nb_streams=1
nb_programs=0
format_name=h264
format_long_name=raw H.264 video
start_time=N/A
duration=N/A
size=2853061
bit_rate=N/A
probe_score=51
[/FORMAT]
老平台,解码速度慢的 es流数据:
ciellee@sh:~/Desktop/解码速度慢$ ffprobe -show_format old_platform_low.es
ffprobe version 2.8.6-1ubuntu2 Copyright (c) 2007-2016 the FFmpeg developersbuilt with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311Input #0, h264, from 'old_platform_low.es':Duration: N/A, bitrate: N/AStream #0:0: Video: h264 (Baseline), yuv420p(tv, unknown/bt470bg/unknown), 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc
[FORMAT]
filename=old_platform_low.es
nb_streams=1
nb_programs=0
format_name=h264
format_long_name=raw H.264 video
start_time=N/A
duration=N/A
size=13061262
bit_rate=N/A
probe_score=51
[/FORMAT]
关于什么是ES数据流,本文就不赘述了,网上有更详细的文章:
《关于ES、PES、PS以及TS码流》
《H.264代码详解全过程》
《 X264参数设定详细解释》
【FFMPEG】华为新老两手机平台编码的视频,在同一车机上投屏解码时间慢的问题分析相关推荐
- Android 新老两代 Camera API 大起底
https://blog.csdn.net/Byeweiyang/article/details/80515192 0.背景简介 最近有一部分相机相关的需求,专注于对拍摄的照片.视频的噪点.色温.明暗 ...
- 华为新系统鸿蒙手机测试,首个华为鸿蒙2.0测试 电池续航提升将近10%
除了36个月持续流畅,无惧老化外,鸿蒙系统对手机的另外一大增益就是续航的提升. 华为实验室的数据显示,同样条件玩游戏(<和平精英>90帧.流畅),华为Mate 40 Pro在EMUI 11 ...
- android 小屏模式吗,宅在家又嫌手机屏幕小?教你如何玩转投屏
在这个「加长版」寒假当中,相信许多人想要把手机里的小屏幕投影到大屏幕当中,享受一下在电视机当中玩手游的乐趣.之前曾经有厂商表示 5G 网络可以实现该这个功能,但是通过家里的路由器和智能电视(智能机顶盒 ...
- Sony电视投屏 Android,怎样把手机画面投影到电视上观看 乐播投屏使用方法
虽然现在都是大屏手机,但是很多时候我们还是希望能在电视一样大的屏幕上看手机上的内容或者把手机游戏投影到电视上.除了匹配的手机和电视(比如sony电视和手机可以直接匹配),还有什么办法呢?今天介绍一个可 ...
- 华为新系统鸿蒙手机8月发布,华为正式发布鸿蒙手机操作系统
[环球时报记者 范凌志 陈青青 沈维多]北京时间 6 月 2 日晚,华为正式发布 HarmonyOS2 及搭载 HarmonyOS 2 的新款智能手表.平板电脑等产品.有媒体分析,这也意味着 &quo ...
- android 横屏录制视频,安卓手机如何录制屏幕视频?一招结束录屏的烦恼
随着手机功能的越来越强大,大大小小的事情都可以在手机上完成,导致我们的生活的吃喝玩乐都用到手机,那么我们有时会在手机上刷到一些好玩的视频,想把它保存下载,但由于无法下载,所以我们就想了各种办法,最后采 ...
- 手机屏幕镜像翻转软件_可以把ipad投屏到电视吗?屏幕镜像一键投屏
出于方便,很多人习惯在ipad上看视频,因为它的体积.屏幕刚刚好,适合携带在身,想看视频的时候就看.不过,宅在家里的时候,我觉得还是在电视上看视频比较过瘾,毕竟屏幕大.但是,电视上没有我喜欢看的视频, ...
- 华为手机如何简单、快捷地投屏到电视机上?
现在,越来越多小伙伴开始用上了国产手机,其中用华为的比较多.我发现华为手机有很多自带的小功能,例如录屏,在学习.工作中可以用得上.不过,有时候要开远程会议,或者想在大屏幕看手机视频的时候,发现华为手机 ...
- 手机做显示器服务器,华为MateView体验:手机做主机,显示器也能当电脑用
腾讯数码 文|孙皓 5月的智能生态产品发布会上,华为正式发布了旗下高端显示器华为MateView.作为华为智能设备产品线的扩展,华为MateView还承载了华为智能生态建设的任务. 华为MateVie ...
最新文章
- 你哪来这么多事(四):职工信息排序
- win32创建控件的一些问题
- android读取网络配置文件,Android 中保存、读取设置配置数据、记录登录状态
- C#项目打包,并自动安装SQL数据库(转)
- 操作软件_如何提升办公软件的操作能力
- springboot springmvc mybatis_12道重点的Spring Boot面试题,帮你整理好了!
- springboot 引入jdbc驱动_SpringBoot+MyBatis+Druid整合demo
- Caffe之DataTransformer
- php全选帖子删除,用PHP实现全选全删
- 模式实例之——访问者实例
- Day14 - Ruby比一比:#each #map和#collect method
- 这月绩效差点没了!搞了一个“新人拼团”活动遇到黑产,搭进去了8台服务器......
- java web(java ee)实现wordle猜单词游戏
- java物流专线快运系统源码TMS
- 双目摄像机获取标定图片
- 前20位Googler今安在?
- 魔兽地图服务器修改,魔兽争霸3冰封王座地图编辑器修改无限人口的方法
- 计算机图形学迷宫论文,三维迷宫的设计与制造
- 针对中学生的python_初高中学生Python考试试卷
- 鸿蒙系统第一批适配,4月开始脱离安卓系统!华为鸿蒙OS 2.0首批适配机型