x265探索与研究(四):如何编码视频?

如何编码视频?

本文介绍x265中的两种编码视频方法,一是采用命令行的方法;二是GUI的方式。

1、命令行的方法

(1)、第一种方式生成*.265格式的视频文件

第一种方式可以生成*.265格式的视频文件,对应的命令为:

x265 --input-res 352x288 --fps 30 hall_cif_352x288_300.yuv -o hall_cif_352x288_300.h265

(2)、第二种方式可以生成*.bin格式的视频流文件

第二种方式可以生成*.bin格式的视频流文件,对应的命令为:

x265.exe --preset fast --input hall_cif_352x288_300.yuv --fps 30 --input-res 352x288 --output out.bin --psnr --ssim --bitrate 128

两种方式生成的对应文件如下图所示:

除了这两种经测试可以使用的方式外,网址:http://x265.ru/en/encode/还提供了两种略有区别的命令行方式,如下图所示:

(3)、第三种命令行的方式,可以生成*.x265和*.csv

下面对其进行测试,第三种命令行的方式,可以生成*.x265和*.csv,对应的命令为:

x265.exe hall_cif_352x288_300.yuv --input-res 352x288 --fps 30 -o out.x265 --csv results.csv --no-rect --max-merge 3 --rd 0 --tu-intra-depth 2 --tu-inter-depth 1 --no-tskip --frame-threads 2

需要注意的是:该方式输入的视频必须是YUV或Y4M格式,帧的宽和高也必须指定且FPS也必须设定。测试过程如下图:

测试结果如下图:

(4)、第四种命令行方式输出是*.hevc格式

该命令行的方式,输入是*.y4m的视频,可以获得高质量的*.hevc格式视频,对应的命令为:

x265.exe hall_cif_352x288_300.y4m --q 17 --merange 64 --frames all --ref 4 --max-merge 3 --rect-hash 2 --me 3 --b 6 --b-adapt 1 --rd 2 --rc-lookahead 60 --input-depth 16 --tu-inter-depth 3 --tu-intra-depth 3 --no-tskip-fast --wpp --subme 2 --s 32 --F 6 -o video.hevc

(注:由于我这边没有*.y4m格式视频,故没有测试,后续测试,补充在此。)

2、GUI的方法

采用“Baka Encoder”,下载网址:http://x265.ru/en/baka-encoder/

配置方式是修改Baka Encoder.config.xml,对应的代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!-- Baka Encoder configuration file reference can be found at http://vtt.to/baka%20encoder%20configuration%20reference -->
<baka_encoder logging="0">
	<presets>
		<preset name="preview" suffix="_preview" on="1">
			<hint quality="7" compression="14" speed="6" streaming="1"/>
			<audio cmd="-br 60000"/>
			<video tool="x264" bit_depth="8" pass_count="2" max_width="480" max_height="360" resize_method="spline" base_bitrate="0" max_bitrate="0"
				cmd="--preset placebo --no-mbtree --ratetol 100.0 --keyint 60 --ref 3 --bitrate 500 --level 4.1 --vbv-bufsize 50000 --vbv-maxrate 62500"/>
			<muxing container="mp4" cmd=" --optimize-pd"/>
		</preset>
		<preset name="normal" suffix="_normal" on="1">
			<hint quality="11" compression="9" speed="3" streaming="1"/>
			<audio cmd="-q 0.6"/>
			<video tool="x264" bit_depth="8" pass_count="2" max_width="1280" max_height="960" resize_method="spline" base_bitrate="1500" max_bitrate="3500"
				cmd="--preset placebo --no-mbtree --ratetol 100.0 --keyint 60 --ref 4 --level 4.1 --vbv-bufsize 50000 --vbv-maxrate 62500"/>
			<muxing container="mp4" cmd=" --optimize-pd"/>
		</preset>
		<preset name="normal h265" suffix="_normal.h265" on="1">
			<hint quality="12" compression="9" speed="1" streaming="0"/>
			<audio cmd="-q 0.6"/>
			<video tool="x265" bit_depth="8" pass_count="2" max_width="1280" max_height="960" resize_method="spline" base_bitrate="1200" max_bitrate="10000"
				cmd="--preset slow --bframes 4 --ref 4"/>
			<muxing container="mp4" cmd=""/>
		</preset>
		<preset name="deluxe" suffix="_deluxe" on="0">
			<hint quality="14" compression="5" speed="4" streaming="0"/>
			<audio cmd="-q 1.0"/>
			<video tool="x264" bit_depth="10" pass_count="1" max_width="0" max_height="0" resize_method="" base_bitrate="0" max_bitrate="0"
				cmd="--crf 12 --preset placebo --no-mbtree --deblock 0:-1"/>
			<muxing container="mp4" cmd=""/>
		</preset>
		<preset name="deluxe h265" suffix="_deluxe.h265" on="0">
			<hint quality="15" compression="7" speed="1" streaming="0"/>
			<audio cmd="-q 1.0"/>
			<video tool="x265" bit_depth="10" pass_count="1" max_width="0" max_height="0" resize_method="" base_bitrate="0" max_bitrate="0"
				cmd="--crf 12 --preset slow"/>
			<muxing container="mp4" cmd=""/>
		</preset>
		<preset name="express" suffix="_express" on="0">
			<hint quality="7" compression="7" speed="10" streaming="0"/>
			<audio cmd="-q 0.5"/>
			<video tool="x264" bit_depth="8" pass_count="1" max_width="0" max_height="0" resize_method="" base_bitrate="1500" max_bitrate="5000"
				cmd="--preset fast --deblock 1:0 --bframes 4 --b-adapt 1 --rc-lookahead 36 --ref 3 --level 4.1 --vbv-bufsize 50000 --vbv-maxrate 62500"/>
			<muxing container="mp4" cmd=""/>
		</preset>
		<preset name="lossless" suffix="_lossless" on="0" console="0">
			<hint quality="16" compression="3" speed="8" streaming="0"/>
			<audio cmd="-q 1.0"/>
			<video tool="x264" bit_depth="8" pass_count="1" max_width="0" max_height="0" resize_method="spline" base_bitrate="0" max_bitrate="0"
				cmd="--crf 0 --preset placebo --log-level none --quiet"/>
			<muxing container="mp4" cmd=""/>
		</preset>
	</presets>
</baka_encoder>

时间: 2024-10-05 04:25:02

x265探索与研究(四):如何编码视频?的相关文章

x265探索与研究(九):compressFrame()函数

x265探索与研究(九):compressFrame()函数 compressFrame()函数是一个功能繁杂且分析难度较大的函数,主要包括时间戳的初始化工作.access unit的设计.加权预测技术.运动参考帧的估计.当前Slice的QP值确定.熵编码相关信息配置.并行计算与否及其空间的申请.SEI相关配置.线程控制.CTU分析.Multi-pass Encoding.滤波与去噪处理等等,其中最重要的就是调用了encodeSlice()函数. compressFrame()函数中调用的主要函

x265探索与研究(四):怎样编码视频?

怎样编码视频? ? ? ? ? ? 本文介绍x265中的两种编码视频方法,一是採用命令行的方法.二是GUI的方式. ? 1.命令行的方法 ? (1).第一种方式生成*.265格式的视频文件 ? ? ? ? ? 第一种方式能够生成*.265格式的视频文件,相应的命令为: x265 --input-res 352x288 --fps 30 hall_cif_352x288_300.yuv -o hall_cif_352x288_300.h265 ? (2).另外一种方式能够生成*.bin格式的视频流

x265探索与研究(三):如何播放*.265格式的视频或解码视频流

如何播放*.265格式的视频或解码视频流 如下图,在得到.265格式的视频或视频流后应如何播放265格式的视频呢?本博文总结出5种播放265格式视频或视频流的基本方法. 方式一:Elecard HEVC Player Sample 软件下载地址:http://download.csdn.net/detail/frd2009041510/9387068 下载后直接双击安装即可,播放效果如下图所示. 方式二:GitlHEVCAnalyzer 我们可以更改"make-solutions.bat&quo

需求分析:用户需求研究四要素

用户真相是什么?无疑是最难的环节.作为产品经理,天天都在围绕吃透用户真相运转.但是总是会出现对于用户的需求过于自信,大多时候以参与人员为蓝本,研究结果远离用户真相,形成了"产品经理人体验","运营人员体验","领导人体验"等.作为产品经理,在每细化一个需求时,大家有跳出产品人经验,深挖过需求的背后吗? 真正的用户研究应该建立在以用户为中心的逻辑上,对于用户的每一个确定要做的需求都能形成一个闭环,回到产品需求上. 产品经理应该据有透过表面挖本质的能

王爽-汇编语言-综合研究四-不使用main函数编程

(一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接的过程中发现出现的错误如下: 链接时出现Undefined symbol ‘_main’ in module c0s 这样的错误信息,可能main函数与c0s.obj这个文件有关系. 这时我们想,C语言编译之后的文件后缀名是什么?是.obj.那汇编语言编译后的文件名是什么?也是.obj.这两个文件有

直播技术总结(四)音视频数据压缩及编解码基础

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/60480109 音视频压缩技术是编解码中难点,常常会涉及很多算法处理问题.数据封装,转封装等,看下Agenda: 音视频为何需要压缩? 压缩编码的分类 常用压缩编码的方法 编码器中的关键技术 预测 量化 变换 熵编码 编解码中的情况 音视频为何需要压缩? 未经压缩的数字视频的数据量巨大 存储困难:一张DVD只能存储几秒钟的未压缩数字

关于园子客户端实现的研究四

接着学习研究制作:关于园子客户端实现的研究一 这篇博文不讲技术方面的东西,纯粹的界面学习 1.经过一线码农的辛苦劳作,终于可以看到界面了: >头部是共用的布局,通过include加载到每一个页面 >首页是个GridView控件,充当了大家常用的底部菜单 >“被自己帅醒”是个小动画,网上找的图画 >列表ListView页显示了部分数据,感觉不是很美观 >内容详细页相当凑合,就是一个WebView显示网页链接,适配什么的木有 >博友搜索界面还要优化,显示太简单了 2.从前天

Chrome自带恐龙小游戏的源码研究(四)

在上一篇<Chrome自带恐龙小游戏的源码研究(三)>中实现了让游戏昼夜交替,这一篇主要研究如何绘制障碍物. 障碍物有两种:仙人掌和翼龙.仙人掌有大小两种类型,可以同时并列多个:翼龙按高.中.低的随机飞行高度出现,不可并行.仙人掌和地面有着相同的速度向左移动,翼龙则快一些或慢一些,因为添加了随机的速度修正.我们使用一个障碍物列表管理它们,当它们移出屏幕外时则将其从列表中移除.同时再用一个列表记录它们的类型: 1 Obstacle.obstacles = []; //存储障碍物的数组 2 Obs

BitCoin源码研究(1)-Base58编码

Base58编码由58个数字和大小写字母组成,BitCoin源码中定义及注释如下: /** All alphanumeric characters except for "0", "I", "O", and "l" */ static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; 如