文章版权由作者柯O德尔和博客园共有,请尊重并支持原创,若转载请于明显处标明出处:http://www.cnblogs.com/koder/

最近因为工作需要,要进行265 10bit编码,于是从ffmpeg官网下载了最新版的32位的ffmpeg可执行程序,使用如下命令进行编码:

ffmpeg.exe -i input.ts -vcodec libx265 -pix_fmt yuv420p10le -acodec copy output.ts

得到了一个很蒙蔽的结果:

注意看黄色这一行,说的是ffmpeg不支持yuv420p10le像素格式,自动切换为yuv420p进行编码,但是yuv420p编出来位深度只有8bit,我去,难道最新版本的ffmpeg不支持10bit编码?

于是不死心啊,然后各种百度谷歌,最后从国外的一个问答网址上看到有个国外友人说那是因为你用的ffmpeg自带的x265编码器不支持10bit编码,恍然大悟,从上面x265编码器输出的信息中也能看出来是只支持8bit编码的,那么解决办法就是自己编译一个支持10bit的x265库,然后再集成到ffmepg里面去,等于说要自己重新编译ffmpeg哦,编译过的同学应该都知道这是极其痛苦的事情,但是为了革命,没办法啊,那么就来吧,这里介绍linux下面的操作:

1. 编译支持10bit的x265库:

从官网下载源码包:https://bitbucket.org/multicoreware/x265/wiki/Home;

要让x265支持10bit编码,只需要修改CMake的一个编译选项即可:

tar -zxvf x265_2.3.tar.gz
cd x265_2.3/source
vim CMakeLists.txt

把option(HIGH_BIT_DEPTH "Store pixel samples as 16bit values (Main10/Main12)" OFF)修改为option(HIGH_BIT_DEPTH "Store pixel samples as 16bit values (Main10/Main12)" ON)即可;

最后执行CMake编译即可:

cd x265_2.3/build/linuxcmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/x265_10bit -DENABLE_SHARED=OFF ../../source
make -j4
make install

检验是否是真的支持10bit:

cd /usr/local/x265_10bit/bin
./x265 --help

输出信息如下:

x265 [info]: HEVC encoder version 2.3
x265 [info]: build info [Linux][GCC 4.4.7][64 bit] 10bit

说明支持10bit编码了。

2. 把新编译的支持10bit编码的x265库集成到ffmpeg中:

这就是自己编译ffmpeg的过程,可以参考网上的例子,这里重点是介绍编译支持10bit编码的x265,就不再说明了。

注意事项:

1. 在修改x265的CMakeList时,发现了这么一行说明:

# NOTE: We only officially support high-bit-depth compiles of x265
# on 64bit architectures. Main10 plus large resolution plus slow
# preset plus 32bit address space usually means malloc failure. You
# can disable this if(X64) check if you desparately need a 32bit
# build with 10bit/12bit support, but this violates the "shrink wrap
# license" so to speak. If it breaks you get to keep both halves.
# You will need to disable assembly manually.
说明要使用x265进行10bit编码需要在64位的机子上运行,32位的不行哦;

2. ffmpeg官网上的windows编译好的版本,不管是最新的32位还是64位版本,默认只支持8bit编码,所以要进行10bit编码只能按照上面的方法对x265重新编译,然后再集成到ffmpeg里面。

转载于:https://www.cnblogs.com/koder/p/7851387.html

让ffmpeg支持10bit编码相关推荐

  1. ffmpeg安装教程(支持10bit编码)

    最近因为工作需要,要进行265 10bit编码,所以打算把ffmpeg, x265重新编译下. 1. 编译安装支持10bit的x265库 要让x265支持10bit编码,只需要修改CMake的一个编译 ...

  2. 如何让ffplay或者ffmpeg支持H265编码的rtmp/http-flv 实时直播流

    很多初学者不知道ffplay或者ffmpeg是不支持flv封装的rtmp/http-flv流的,其原因是flv不支持H265编码payload的,因为当时制定flv封装协议的时候,H265还没出来,现 ...

  3. Hisi3516交叉编译ffmpeg支持h264编码

    前言 Hi3516是海思半导体针对高清IPCamera产品应用开发的一款专业高端SOC芯片,具有1080P@30fps H264多码流编码性能.而ffmpeg是众多播放器的底层解.编码库,x264是一 ...

  4. ffmpeg支持MP3编码的方法

    问题 近期一个项目中mp3文件较大,需要转成占用存储空间较小的文件.首先想到的是"格式工厂",非常便捷,但是此工具每次批量转换数量上限是1000,而我要转上万个.所以考虑用ffmp ...

  5. FFmpeg支持H265编码

    目前FFmpeg已经能够支持H265编码,我们可以通过configure添加 --enable-gpl --enable-libx265来配置. 这就需要我们的系统环境中已经安装了libx265,且其 ...

  6. FFmpeg_编译支持h264编码的ffmpeg,并验证

    系统环境:ubuntu16.04 FFmpeg:4.1 x264:http://download.videolan.org/x264/snapshots/ nasm:2.13.03 yasm:1.3. ...

  7. 群晖DSM7.X Video Station结合FFMPEG支持DTS视频及EAC3音频编码

    群辉升级后不支持DTS\EA3音频编码,网上找了好多教程都不对,最后按这个教程成功了,特转发.原网址:群晖DSM7.X Video Station结合FFMPEG支持DTS视频及EAC3音频编码 - ...

  8. FFmpeg将Jpeg 编码到视频中

    这个不能直接发h264,需要先解码,再编码 利用FFmpeg将Jpeg图片转为任意视频容器格式 原文: https://blog.csdn.net/oHanTanYanYing/article/det ...

  9. android支持色彩管理软件,安卓首家!OPPO全链路色彩管理系统亮相:全局支持10bit照片视频...

    原标题:安卓首家!OPPO全链路色彩管理系统亮相:全局支持10bit照片视频 今天,OPPO未来科技大会在深圳举行,OPPO公布了安卓首家全链路色彩管理系统. OPPO全链路色彩管理系统从字面意思来理 ...

最新文章

  1. 建立CentOS 6.9 的Yum本地源
  2. UIButton设置图片 在导航条上的 不显示
  3. poj2186强联通(牛仰慕)
  4. 【ijkplayer】编译 Android 版本的 ijkplayer ① ( Ubuntu 安装 Git 软件 | 下载 ijkplayer 代码 )
  5. 我作为开发者犯过的两次愚蠢的错误
  6. SpringBoot+MyBatisPlus实现前端传递时间查询条件ajax请求后台并回显数据流程整理
  7. Linux网络编程 | 多路复用I/O :select、poll、epoll、水平触发与边缘触发、惊群问题
  8. 大量学术成果存在学术不端行为,撤销优青、面上、青年项目!
  9. php dump函数详解,php中var_dump()函数的详解说明
  10. MODIS三种常见数据辐射定标处理
  11. 12款免费的桌面便签软件
  12. [lua]紫猫lua教程-命令宝典-L1-03-01. 闭包
  13. 扒一扒:2020台湾Android-Kotlin--Java-面試題庫,竟如此--
  14. 微信推出网页版传输助手,真的好用吗?
  15. java实现京东登陆界面_京东登陆界面的实现
  16. ubuntu 更换系统源和pip源
  17. vue3+vite2多页面多路由 注意
  18. 新媒体运营:如何策划出一场完整高效的活动方案?(二) 黎想
  19. Calllog第一天
  20. 如何用计算机做微积分,利用计算知识搜索引擎WolframAlpha做微积分(快速指南).doc...

热门文章

  1. 骁龙710、675、660、636之间性能差距有多大?
  2. 老人为什么要去依靠曾经不喜欢的子女去为她养老?
  3. 为什么老司机开车都不快?
  4. 贪小便宜的人交不得,否则,可能会因小失大
  5. 高情商的人都是怎么求人办事的?
  6. solidity之以太币支付
  7. Codeforces Round #655 (Div. 2) B C
  8. sql数据库性能指标_SQL Server磁盘性能指标–第1部分–最重要的磁盘性能指标
  9. 如何在SQL Server 2016中比较查询执行计划
  10. 在Azure ML中使用Logistic回归预测客户的贷款资格