Feng's Notes

周海锋的个人博客

0%

FLV H265直播相关

扩展 FLV 标准支持 H265

Adobe 的FLV 标准里面并不支持 H.265(HEVC)。
要用 FLV 封装 H.265 数据 ,就需要扩展 FLV 增加 CodecID 来支持 H.265 。

目前国内CDN厂商扩展的CodecID一般都为12,具体的FLV H265标准信息,可以参考 金山的video_file_format_spec_v10_1

FFmpeg patch 方法可以参考:金山云H.265 patch说明

当前主流H265解码方案性能对比

  • 测试设备: iPhone X, iOS 11.4
  • 测试视频: raw h265文件, 1280 x 720, 3600帧, 单线程解码
方案 cost fps
ittiam CPU 11313ms 316.27
安卓自带hevc解码方案libhevc Real 11.311s 316.32
yyffmpeg CPU 13532ms 264.32
yy的h265解码方案 Real 13.449s 265.96
ffmpeg-3.4 CPU 53935ms 66.32
未优化版本 Real 53.432s 66.94
ffmpeg-3.4 CPU 13843ms 258.47
aarch64 neon优化,idct,qpel,pel等方法 Real 13.839s 258.54
ksc265 CPU 6749ms 544.19
金山H265 Real 6.239s 508.94
videotoolbox CPU 3749ms 955.14
iOS11 硬件解码 Real 17.139s 207.32

开源方案

ittiam的解码方案解码效率最高

iPhone 硬解需要 iPhone 6s 和 iOS11 以上的设备,cpu使用率很低,但是解码速度并不如一些软解方案快。

ffmpeg里的openhevc没有针对aarm64平台进行优化,解码效率最低

经过优化以后基本与yy的方案效率相近

商业非开源

ksc265 金山的解码方案的解码效率最高,sdk需要授权,同时cpu使用率也很高。

参考

  1. Minmin.Sun Blog “分析 H.265 + AAC 的 FLV 文件”
  2. video_file_format_spec_v10_1
  3. HEVCIOSDecoderDemoProj
  4. [FFmpeg-devel] Add ARM64 NEON optimization for HEVC decoder
  5. [FFmpeg-devel] [PATCH] 8-bit hevc decoding optimization on aarch64 with neon