怎样编码视频?

 

        本文介绍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探索与研究(四):怎样编码视频?的更多相关文章

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

    x265探索与研究(六):main()函数 x265源代码的入口函数是main(),本文分析main()的主要功能. 首先给出main()函数的功能及其代码结构:其次给出main()函数源代码以及分析 ...

  2. 视频处理控件TVideoGrabber如何重新编码视频/音频(2)

    在前面的文中<视频处理控件TVideoGrabber如何重新编码视频>已经讲解了部分TVideoGrabber重新编码音频.视频剪辑的内容,下面将继续说明. 重新编码进程 重新编码开始时, ...

  3. Shiro笔记(四)编码/加密

    Shiro笔记(四)编码/加密 一.编码和解码 //base64编码.解码 @Test public void testBase64(){ String str="tang"; b ...

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

    (一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接 ...

  5. 视频处理控件TVideoGrabber如何重新编码视频

    TVideoGrabber中可以对音频.视频剪辑进行重新编码剪辑,多的朋友知道这个功能更点,但是具体操作上还是不是很熟悉,这里总结一下,主要步骤如下: 1.通过指定开始和停止的时间,可以简单的剪辑视频 ...

  6. Python学习(四) —— 编码

    一.枚举 enumerate,for i in enumerate(可迭代对象),返回元组,内容是(序列号,可迭代的每一个元素)        for i,j in enumerate(可迭代对象,开 ...

  7. Qt与FFmpeg联合开发指南(四)——编码(2):完善功能和基础封装

    上一章我用一个demo函数演示了基于Qt的音视频采集到编码的完整流程,最后经过测试我们也发现了代码中存在的问题.本章我们就先处理几个遗留问题,再对代码进行完善,最后把编码功能做基础封装. 一.遗留问题 ...

  8. ROS探索总结(四)——简单的机器人仿真

    前边我们已经介绍了ROS的基本情况,以及新手入门ROS的初级教程,现在就要真正的使用ROS进入机器人世界了.接下来我们涉及到的很多例程都是<ROS by Example>这本书的内容,我是 ...

  9. Python学习笔记(四)——编码和字符串

    一.编码 1.编码类别: (1)ASCII码:127个字母被编码到计算机里,也就是大小写英文字母.数字和一些符号 (2)GB2312码:中国制定的用于加入中文汉字的编码 (3)Unicode:防止由于 ...

随机推荐

  1. HDU 3400 Line belt (三分再三分)

    HDU 3400 Line belt (三分再三分) ACM 题目地址:  pid=3400" target="_blank" style="color:rgb ...

  2. 測试CPU支持指令集AVX,AVX2,SSE情况的代码【VS2010调试通过】

    完整代码例如以下所看到的 http://download.csdn.net/detail/vbskj/7723827 本人的測试结果 watermark/2/text/aHR0cDovL2Jsb2cu ...

  3. 理性分析 C++(-O2) 和 JS 的性能差距

    laptop: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz.. Test1: 最后一行:时间(ms) #pragma GCC optimize("O2& ...

  4. Angular:内置指令

    [ngIf]表达式结果为真,显示元素:表达式结果为假,移除元素. <div *ngIf="a > b"></div> [ngSwitch]对表达式进行 ...

  5. HDU5126 stars(CDQ分治)

    传送门 大意: 向三维空间中加点,询问一个三维区间中点的个数. 解题思路: 带修改CDQ,将修改和询问一起插入CDQ分治询问. (询问可以由8个前缀和加减操作实现) 其中第一层CDQ维护x有序. 第二 ...

  6. [Angular] Use :host-context and the ::ng-deep selector to apply context-based styling

    If you want to style host component. You can use ':host-context'. // host @Component({ selector: 'my ...

  7. amazeui学习笔记一(开始使用4)--Web App 相关

    amazeui学习笔记一(开始使用4)--Web App 相关 一.总结 1.桌面图标(Touch icon)解决方案:终极方案:link标签的rel和href属性: <link rel=&qu ...

  8. 106.TCP传文件

    客户端 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include < ...

  9. JQuery滑动到指定位置

    $('html, body').animate({ scrollTop: next_tip.offset().top + "px"},500);

  10. Python 极简教程(九)元组 tuple

    元组(tuple)是 Python 中的一种序列.和列表类似,但是元组不可变. 也就是说元组一旦声明后,值就不能再改变.我们先来看看元组的样式: >>> t = () # 空元组 & ...