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-09-06 11:05:11

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

x265探索与研究(八):x265中的并行处理机制函数关系分析

x265探索与研究(八):x265中的并行处理机制函数关系分析           HEVC的高计算复杂度如果仅仅依赖于单核处理器计算能力的提高,其代价是非常昂贵的,为此,HEVC的设计充分考虑到了并行计算的需求.x265不同于HM(HEVC test Model),x265将并行计算发挥地更加淋淋尽致.在main()函数中,为了完成多线程计算,读完24帧输入帧后才开始编码的原因也基于此.           为了理清x265中的并行处理机制,首先给出了如下图的并行处理函数关系图:      

x265探索与研究(六):main()函数

x265探索与研究(六):main()函数           x265源码的入口函数是main(),本文分析main()的主要功能.首先给出main()函数的功能及其代码结构:其次给出main()函数源码以及分析:最后给出main()函数中的主要功能函数的具体功能.   1.main()函数的功能及其代码结构           main()函数的主要功能是解析参数并进行编码的一些准备工作,调用了如下几个重要的函数: (1)cliopt.parse()函数:解析参数 (2)api->encod

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

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

x265探索与研究(七):encode()函数

x265探索与研究(七):encode()函数           在x265中,main()函数中调用了encoder_encode()函数,而encoder_encode()函数调用了encode()函数,encode()函数的主要功能是输入一帧图像,得到一帧图像的输出.           encode()函数主要包括大致三个部分: (1)分析是否由于错误造成的代码终止,如g_checkFailures.m_aborted. (2)判断是否有输入帧,若有,则判断该输入帧的像素深度.颜色空间

x265探索与研究(十):encodeSlice()函数、encodeCTU()函数、encodeCU()函数与finishCU()函数分析

x265探索与研究(十):encodeSlice()函数.encodeCTU()函数.encodeCU()函数与finishCU()函数分析           encodeSlice()函数.encodeCTU()函数.encodeCU()函数与finishCU()函数都是编码的重要函数,根据函数命名均可得知其各自的功能.下面首先给出这几个函数之间的调用关系图.       1.encodeSlice()函数           encodeSlice()函数位于frameencoder.cp

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

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

x265探索与研究(二):x265使用基本方法

x265使用基本方法         首先,完成x265的下载安装与配置. (参考网址:http://blog.csdn.net/frd2009041510/article/details/50446007) 接下来介绍x265编解码视频的基本方法. 第一步:         进入"...x265_1.8\build\vc10-x86",双击"build-all.bat",则进行编译.文件夹中的内容变化如下两图所示.      第二步:         用VS打开上

x265探索与研究(一):x265下载安装与配置

x265下载安装与配置         研究了这么久的HEVC Test Model(HM),相信大家对x265开源代码的实现与框架早就充满了好奇,接下来的日子,我将把自己入手学习与探索"x265开源代码的实现与框架"的过程记录下来,与大家共同进步学习. 1.x265下载地址与参考资料 x265的官网为: http://x265.org/ x265下载地址: https://bitbucket.org/multicoreware/x265/downloads 或 http://ftp.

x265探索与研究(五):如何用VS调试x265?

如何用VS调试x265? 1.设置cli为启动项         用VS打开工程项目,如下图:         右击cli,设置为启动项,如下图: 2.配置路径和命令行参数         右击cli选择Properties,如下图所示         进入如下界面:         将Command Arguments和Working Directory中的内容填写好即可.         示例如下: Command Arguments: --preset fast --input hall_