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>
x265探索与研究(四):怎样编码视频?的更多相关文章
- x265探索与研究(六):main()函数
x265探索与研究(六):main()函数 x265源代码的入口函数是main(),本文分析main()的主要功能. 首先给出main()函数的功能及其代码结构:其次给出main()函数源代码以及分析 ...
- 视频处理控件TVideoGrabber如何重新编码视频/音频(2)
在前面的文中<视频处理控件TVideoGrabber如何重新编码视频>已经讲解了部分TVideoGrabber重新编码音频.视频剪辑的内容,下面将继续说明. 重新编码进程 重新编码开始时, ...
- Shiro笔记(四)编码/加密
Shiro笔记(四)编码/加密 一.编码和解码 //base64编码.解码 @Test public void testBase64(){ String str="tang"; b ...
- 王爽-汇编语言-综合研究四-不使用main函数编程
(一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接 ...
- 视频处理控件TVideoGrabber如何重新编码视频
TVideoGrabber中可以对音频.视频剪辑进行重新编码剪辑,多的朋友知道这个功能更点,但是具体操作上还是不是很熟悉,这里总结一下,主要步骤如下: 1.通过指定开始和停止的时间,可以简单的剪辑视频 ...
- Python学习(四) —— 编码
一.枚举 enumerate,for i in enumerate(可迭代对象),返回元组,内容是(序列号,可迭代的每一个元素) for i,j in enumerate(可迭代对象,开 ...
- Qt与FFmpeg联合开发指南(四)——编码(2):完善功能和基础封装
上一章我用一个demo函数演示了基于Qt的音视频采集到编码的完整流程,最后经过测试我们也发现了代码中存在的问题.本章我们就先处理几个遗留问题,再对代码进行完善,最后把编码功能做基础封装. 一.遗留问题 ...
- ROS探索总结(四)——简单的机器人仿真
前边我们已经介绍了ROS的基本情况,以及新手入门ROS的初级教程,现在就要真正的使用ROS进入机器人世界了.接下来我们涉及到的很多例程都是<ROS by Example>这本书的内容,我是 ...
- Python学习笔记(四)——编码和字符串
一.编码 1.编码类别: (1)ASCII码:127个字母被编码到计算机里,也就是大小写英文字母.数字和一些符号 (2)GB2312码:中国制定的用于加入中文汉字的编码 (3)Unicode:防止由于 ...
随机推荐
- Android开发经验之在图片上随意点击移动文字
只要在图片范围之内,文字可随意点击移动. package xiaosi.GetTextImage; import android.content.Context; import android.con ...
- golang 逐行读取文件
package main import ( "bufio" "fmt" "io" "os" ) func main() ...
- php学习笔记6
PHP 字符串变量 PHP 中的字符串变量 字符串变量用于包含有字符的值. 在创建字符串之后,我们就可以对它进行操作了.您可以直接在函数中使用字符串,或者把它存储在变量中. 在下面的实例中,我们创建一 ...
- linux创建新用户并给予root权限
root比windows的系统管理员的能力更大,足以把整个系统的大部分文件删掉,导致系统完全毁坏,不能再次使用.所以,用root进行不当的操作是相当危险的,轻微的可以死机,严重的甚至不能开机.所以,在 ...
- 第二十八天 月出惊山鸟 —Spring的AOP
6月13日,阴转细雨."人闲桂花落.夜静春山空. 月出惊山鸟.时鸣春涧中." 无论在面向过程还是在面向对象里,奇妙的"纯"字,似乎永远都充满了无限的可能性.除了 ...
- OR1200指令Cache使用举例
下面内容摘自<步步惊芯--软核处理器内部设计分析>一书 12.4 ICache中的特殊寄存器 通过ICache的接口可知其具有特殊寄存器,而且是不可读的特殊寄存器,OR1200处理器中IC ...
- C# for 和 foreach的执行效率
for和foreach哪个执行效率快,相信很多人都会说当然是foreach快啊,在我实验之前我也是这么认为的,直到今天.费话不多说,下面是测试的结果,区分Debug和Release,数据采用int[] ...
- c#中反射的用法(即如何根据字符找到已定义的变量)
2013-07-20 08:06 720人阅读 评论(0) 收藏 举报 分类: C#(9) 作者同类文章 X 版权声明:本文为博主原创文章,未经博主允许不得转载. 常常羡慕javascript中, ...
- VC++ 6.0 BUG BUG BUG BUG BUG
http://blog.163.com/amao831@126/blog/#m=0 我经常在的VC++6.0中 定义某个类的对象时 再用.访问或者->访问时不自动弹出他的成员函数或者成员变量 最 ...
- Serializable中的serialVersionUID到底有啥用
最近在研究跨进程通信的问题,于是又再一次研究了,我们熟悉而又陌生的Serializable接口. 那么好,做过Java开发的朋友肯定对这个接口不陌生吧,Java中就是通过这个接口,来实现了序列化和反序 ...