HEVC方案---软编解码器

1. 解码器:

A. ffmpeg, 内置有HEVC解码器,其中代码基本来自openHEVC项目,但ffmpeg的HEVC解码器并不保证包含openHEVC项目的最新代码

http://ffmpeg.org/

B. openHEVC,解码器框架完全是基于ffmpeg框架开发的,意味着对ffmpeg的耦合性很强,可以快速集成到ffmpeg中。

https://github.com/OpenHEVC/openHEVC

PC平台的编译:

mkdir build                             # 在源码目录下建立build文件夹,后续会用cmake来编译;

cd build                                  # 进入编译目录build;

cmake ..                                 # cmake工具生成编译所需的Makefile文件;

sudo make                             # 编译目标文件;


Android source code下编译:

下面做怎样在Android的source code编译环境中编译出可执行的工具:

需要注意的是用git clone下来的源码在hevc_rext分支,要在Android的source code中编译需要切换分支

git branch -a                                       # 查看所有分支

git checkout remotes/origin/android   #切换到android分支

可以看到源码中已经集成了Android.mk文件,这时候只需要在顶层目录下运行mm就可以编译了。


C. libde265, 最初好像只有解码器,目前代码里面已经支持编码器了。

https://github.com/strukturag/libde265

D. Ittiam HEVC decoder, 是印度一家公司编写的解码器(印度阿三也很强大的), 这个编码器被google集成到了Android的源代码中作为HEVC的软解decoder。

http://androidxref.com/7.1.1_r6/xref/external/libhevc/


Android source code下编译:

此开源项目的链接是Android source code的external目录下的libhevc,只有解码器, 应该是ARM平台上性能比较好的解码器,不然google为何集成它?

顶层目录下有Android.mk, 用来生成libhevcdec.a静态库, 测试用的可执行文件位于test目录中,编译后的可执文件为:hevcdec。


E. Cisco的Thor,HEVC的编码器。

https://github.com/cisco/thor


PC平台下的编译:

Android source code 下编译:


2. 编码器:

A. 前面提到的libde265和Thor, 也支持编码。

https://github.com/strukturag/libde265

https://github.com/cisco/thor

B. x265基本上是目前画质最好的编码器。

http://x265.org/


PC平台编译x265:

cd build/linux/

make

编译完成后可生成动态库文件和可执行文件,这个默认是8bit source的编译结果,在同级目录下有8bit, 10bit, 12bit对应的生成结果。

./x265 --profile mainstillpicture --input-res 2560x1440 --fps 1 /tmp/output_2560x1440.yuv -o /tmp/output.265

ffplay /tmp/output.265


验证前最好准备好yuv420p 8-bit的ideo数据, 这里使用的是2K图片用ffmpeg转换后的yuv数据,请注意分辨率。

ffmpeg -i /tmp/BRAVIA-1.jpg -pix_fmt yuvj420p /tmp/output_2560x1440.yuv     #此处转换出来的是8-bit YUV数据

ffplay -f rawvideo -video_size 3840x2160 /tmp/output_2560x1440.yuv              #播放时默认为YUV420P 8-bit数据


ffmpeg -i /tmp/BRAVIA-1.jpg -pix_fmt yuv420p10be /tmp/output_2560x1440.yuv                              # 指定输出格式为YUV420P 10-bit数据

ffplay -f rawvideo -video_size 3840x2160 -pix_fmt yuv420p10be /tmp/output_2560x1440.yuv


C. f265, Vantrix开源项目

https://vantrix.com/f-265/

你可能感兴趣的:(MultiMedia)