【FFMPEG】华为新老两手机平台编码的视频,在同一车机上投屏解码时间慢的问题分析
发布日期:2021-06-29 14:52:04
浏览次数:2
分类:技术文章
本文共 3724 字,大约阅读时间需要 12 分钟。
一、问题背景
今天上班时,收到华为那边咨询邮件:
分别使用华为新平台手机、老平台手机 各一台,在同一台车机上投屏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 developers built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311 libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100Input #0, h264, from 'new_platform_fast.es': 0KB sq= 0B f=0/0 Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc nan 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 developers built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311 libavutil 54. 31.100 / 54. 31.100 libavcodec 56. 60.100 / 56. 60.100 libavformat 56. 40.101 / 56. 40.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 40.101 / 5. 40.101 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 2.101 / 1. 2.101 libpostproc 53. 3.100 / 53. 3.100Input #0, h264, from 'old_platform_low.es': 0KB sq= 0B f=0/0 Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Baseline), yuv420p(tv, unknown/bt470bg/unknown), 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc nan 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.esffprobe version 2.8.6-1ubuntu2 Copyright (c) 2007-2016 the FFmpeg developers built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311Input #0, h264, from 'new_platform_fast.es': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc[FORMAT]filename=new_platform_fast.esnb_streams=1nb_programs=0format_name=h264format_long_name=raw H.264 videostart_time=N/Aduration=N/Asize=2853061bit_rate=N/Aprobe_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 developers built with gcc 5.3.1 (Ubuntu 5.3.1-11ubuntu1) 20160311Input #0, h264, from 'old_platform_low.es': Duration: N/A, bitrate: N/A Stream #0:0: Video: h264 (Baseline), yuv420p(tv, unknown/bt470bg/unknown), 1920x720, 25 fps, 25 tbr, 1200k tbn, 50 tbc[FORMAT]filename=old_platform_low.esnb_streams=1nb_programs=0format_name=h264format_long_name=raw H.264 videostart_time=N/Aduration=N/Asize=13061262bit_rate=N/Aprobe_score=51[/FORMAT]
关于什么是ES数据流,本文就不赘述了,网上有更详细的文章:
《》 《》 《 》转载地址:https://ciellee.blog.csdn.net/article/details/106337828 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月08日 06时26分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
最新通知:AIDD与网络药理学资料大全
2019-04-29
Lammps分子动力学与第一性原理材料模拟及催化
2019-04-29
实习生小白的日常
2019-04-29
实习小白的日常(4)
2019-04-29
微信扫码登录验证PHP代码(不用开放平台)
2019-04-29
CH554E USB单片机 10引脚小封装低成本USB方案
2019-04-29
windows MQTT客户端
2019-04-29
LINUX下挂载(mount)查看树莓派镜像文件
2019-04-29
基于CH568芯片加密SD卡方案
2019-04-29
1元钱的超低成本单芯片USB单片机方案
2019-04-29
单片机/树莓派扩展双串口(TTL和RS485)
2019-04-29
JAVA(android)提取WIFI客流探针MAC地址源码
2019-04-29
基于CH568芯片的SATA电子盘方案
2019-04-29
linux下C语言判断网络是否连接
2019-04-29
STM32Cube_FW_F4_V1.17 F4固件包百度网盘下载
2019-04-29
猿来绘Java-35-线程的同步(生产者和消费者问题)
2019-04-29
猿来绘Java-36-解决线程安全问题
2019-04-29
猿来绘Java-37-ReentrantLock解决线程安全问题
2019-04-29
猿来绘Java-38-生产者消费者模型
2019-04-29