# 如何編碼視頻?
? ? ? 本文介紹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/](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/](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>
~~~

- 前言
- HEVC算法和體系結構:資源獲取和章節安排
- HEVC算法和體系結構:HEVC概括性介紹
- HEVC算法和體系結構:環路濾波技術
- HEVC算法和體系結構:編碼框架
- HEVC算法和體系結構:編碼結構之編碼時的分層處理架構
- HEVC算法和體系結構:編碼結構之編碼完后碼流的語法架構
- HEVC算法和體系結構:預測編碼之幀內預測
- HEVC算法和體系結構:預測編碼之幀間預測
- x265探索與研究(一):x265下載安裝與配置
- x265探索與研究(二):x265使用基本方法
- x265探索與研究(三):如何播放*.265格式的視頻或解碼視頻流
- x265探索與研究(四):如何編碼視頻?
- x265探索與研究(五):如何用VS調試x265?