一、项目介绍

Kvazaar是屡获殊荣的学术性开源HEVC编码器,它是用C语言从零开始开发的。Kvazaar目标是设计一种模块化,便携式HEVC编码器,以最佳的编码速度和资源获得高编码效率。
可以从GitHub下载Kvazaar源代码和二进制文件,也可以通过FFmpeg或Libav使用它。 相比于x265,使用上面感觉快很多,而且支持设置tile的参数进行编码。
项目地址:
http://ultravideo.cs.tut.fi/
https://github.com/ultravideo/kvazaar
编译好的各个平台的可执行文件:
https://github.com/ultravideo/kvazaar/releases

二、命令行

简单的一个例子: 
将一个输入的MP4 hevc编码的文件 编码成 将motion vectors 限制在一个tile里面的hevc码流:
kvazaar -i input.mp4 --input-res 3840x2160 -o output.hvc --tiles 3x3 --slices tiles --mv-constraint frametilemargin -q 30 --period 30 --input-fps 30
将一个yuv编码成有tile的bin:
kvazaar -i 8k.yuv --input-res 8192x4096 -o output.hvc --tiles 3x3

三、VS 平台编译

1、首先下载vsyasm
下载地址: http://yasm.tortall.net/Download.html
按照要求下载:64为下载的是 http://yasm.tortall.net/Download.html
下载好之后解压 将vsyasm.exe的路径添加到系统的环境变量path里面。否则会出现 vsyasm找不到的错误。
2、编译
打开kvazaar\build\kvazaar_VS2015.sln 就可以编译调试了。
3、编译过程出现错误:

LINK : fatal error LNK1181: cannot open input file 'Win32-Debug\picture-x86-asm-sad.obj

出现这个错误一般都是yasm的版本不对了。这边用的cygwin下面的vsyasm,这个之前编译vp9的时候改过,是yasm更名的,导致编译错误。

重新到yasm的网站下面下载一个新的vsyasm,加到到环境变量里面。 重新启动一下vs 2017 就可以编译成功了。

完整的命令选项

Usage:
kvazaar -i <input> --input-res <width>x<height> -o <output>Required:-i, --input <filename>     : Input file   --input-res <res>      : Input resolution [auto]- auto: Detect from file name.- <int>x<int>: width times height-o, --output <filename>    : Output filePresets:--preset <preset>      : Set options to a preset [medium]- ultrafast, superfast, veryfast, faster,fast, medium, slow, slower, veryslowplaceboInput:-n, --frames <integer>     : Number of frames to code [all]--seek <integer>       : First frame to code [0]--input-fps <num>[/<denom>] : Frame rate of the input video [25]--source-scan-type <string> : Source scan type [progressive]- progressive: Progressive scan- tff: Top field first- bff: Bottom field first--input-format <string> : P420 or P400 [P420]--input-bitdepth <int> : 8-16 [8]--loop-input           : Re-read input file forever.Options:--help                 : Print this help message and exit.--version              : Print version information and exit.--(no-)aud             : Use access unit delimiters. [disabled]--debug <filename>     : Output internal reconstruction.--(no-)cpuid           : Enable runtime CPU optimizations. [enabled]--hash <string>        : Decoded picture hash [checksum]- none: 0 bytes- checksum: 18 bytes- md5: 56 bytes--(no-)psnr            : Calculate PSNR for frames. [enabled]--(no-)info            : Add encoder info SEI. [enabled]--crypto <string>      : Selective encryption. Crypto support must beenabled at compile-time. Can be 'on' or 'off' ora list of features separated with a '+'. [off]- on: Enable all encryption features.- off: Disable selective encryption.- mvs: Motion vector magnitudes.- mv_signs: Motion vector signs.- trans_coeffs: Coefficient magnitudes.- trans_coeff_signs: Coefficient signs.- intra_pred_modes: Intra prediction modes.--key <string>         : Encryption key [16,213,27,56,255,127,242,112,97,126,197,204,25,59,38,30]Video structure:-q, --qp <integer>         : Quantization parameter [22]-p, --period <integer>     : Period of intra pictures [64]- 0: Only first picture is intra.- 1: All pictures are intra.- N: Every Nth picture is intra.--vps-period <integer> : How often the video parameter set is re-sent [0]- 0: Only send VPS with the first frame.- N: Send VPS with every Nth intra frame.-r, --ref <integer>        : Number of reference frames, in range 1..15 [4]--gop <string>         : GOP structure [lp-g4d3t1]-  0: Disabled-  8: B-frame pyramid of length 8- 16: B-frame pyramid of length 16- lp-<string>: Low-delay P/B-frame GOP(e.g. lp-g8d4t2, see README)--intra-qp-offset <int>: QP offset for intra frames [-51..51] [auto]- N: Set QP offset to N.- auto: Select offset automatically basedon GOP length.--(no-)open-gop        : Use open GOP configuration. [enabled]--cqmfile <filename>   : Read custom quantization matrices from a file.--scaling-list <string>: Set scaling list mode. [off]- off: Disable scaling lists.- custom: use custom list (with --cqmfile).- default: Use default lists.--bitrate <integer>    : Target bitrate [0]- 0: Disable rate control.- N: Target N bits per second.--rc-algorithm <string>: Select used rc-algorithm. [lambda]- lambda: rate control from:DOI: 10.1109/TIP.2014.2336550- oba: DOI: 10.1109/TCSVT.2016.2589878--(no-)intra-bits      : Use Hadamard cost based allocation for intraframes. Default on for gop 8 and off for lp-gop--(no-)clip-neighbour  : On oba based rate control whether to cliplambda values to same frame's ctus or previous'.Default on for RA GOPS and disabled for LP.--(no-)lossless        : Use lossless coding. [disabled]--mv-constraint <string> : Constrain movement vectors. [none]- none: No constraint- frametile: Constrain within the tile.- frametilemargin: Constrain even more.--roi <filename>       : Use a delta QP map for region of interest.Reads an array of delta QP values from a textfile. The file format is: width and height ofthe QP delta map followed by width*height deltaQP values in raster order. The map can be of anysize and will be scaled to the video size.--set-qp-in-cu         : Set QP at CU level keeping pic_init_qp_minus26.in PPS and slice_qp_delta in slize header zero.--(no-)erp-aqp         : Use adaptive QP for 360 degree video withequirectangular projection. [disabled]--level <number>       : Use the given HEVC level in the output and givean error if level limits are exceeded. [6.2]- 1, 2, 2.1, 3, 3.1, 4, 4.1, 5, 5.1, 5.2, 6,6.1, 6.2--force-level <number> : Same as --level but warnings instead of errors.--high-tier            : Used with --level. Use high tier bitrate limitsinstead of the main tier limits during encoding.High tier requires level 4 or higher.--(no-)vaq <integer>   : Enable variance adaptive quantization with givenstrength, in range 1..20. Recommended: 5.[disabled]Compression tools:--(no-)deblock <beta:tc> : Deblocking filter. [0:0]- beta: Between -6 and 6- tc: Between -6 and 6--sao <string>         : Sample Adaptive Offset [full]- off: SAO disabled- band: Band offset only- edge: Edge offset only- full: Full SAO--(no-)rdoq            : Rate-distortion optimized quantization [enabled]--(no-)rdoq-skip       : Skip RDOQ for 4x4 blocks. [disabled]--(no-)signhide        : Sign hiding [disabled]--(no-)smp             : Symmetric motion partition [disabled]--(no-)amp             : Asymmetric motion partition [disabled]--rd <integer>         : Intra mode search complexity [0]- 0: Skip intra if inter is good enough.- 1: Rough intra mode search with SATD.- 2: Refine intra mode search with SSE.- 3: Try all intra modes and enable intrachroma mode search.--(no-)mv-rdo          : Rate-distortion optimized motion vector costs[disabled]--(no-)zero-coeff-rdo  : If a CU is set inter, check if forcing zeroresidual improves the RD cost. [enabled]--(no-)full-intra-search : Try all intra modes during rough search.[disabled]--(no-)transform-skip  : Try transform skip [disabled]--me <string>          : Integer motion estimation algorithm [hexbs]- hexbs: Hexagon Based Search- tz:    Test Zone Search- full:  Full Search- full8, full16, full32, full64- dia:   Diamond Search--me-steps <integer>   : Motion estimation search step limit. Onlyaffects 'hexbs' and 'dia'. [-1]--subme <integer>      : Fractional pixel motion estimation level [4]- 0: Integer motion estimation only- 1: + 1/2-pixel horizontal and vertical- 2: + 1/2-pixel diagonal- 3: + 1/4-pixel horizontal and vertical- 4: + 1/4-pixel diagonal--pu-depth-inter <int>-<int> : Inter prediction units sizes [0-3]- 0, 1, 2, 3: from 64x64 to 8x8- Accepts a list of values separated by ','for setting separate depths per GOP layer(values can be omitted to use the firstvalue for the respective layer).--pu-depth-intra <int>-<int> : Intra prediction units sizes [1-4]- 0, 1, 2, 3, 4: from 64x64 to 4x4- Accepts a list of values separated by ','for setting separate depths per GOP layer(values can be omitted to use the firstvalue for the respective layer).--ml-pu-depth-intra    : Predict the pu-depth-intra using machinelearning trees, overrides the--pu-depth-intra parameter. [disabled]--tr-depth-intra <int> : Transform split depth for intra blocks [0]--(no-)bipred          : Bi-prediction [disabled]--cu-split-termination <string> : CU split search termination [zero]- off: Don't terminate early.- zero: Terminate when residual is zero.--me-early-termination <string> : Motion estimation termination [on]- off: Don't terminate early.- on: Terminate early.- sensitive: Terminate even earlier.--fast-residual-cost <int> : Skip CABAC cost for residual coefficientswhen QP is below the limit. [0]--(no-)intra-rdo-et    : Check intra modes in rdo stage only untila zero coefficient CU is found. [disabled]--(no-)early-skip      : Try to find skip cu from merge candidates.Perform no further search if skip is found.For rd=0..1: Try the first candidate.For rd=2.. : Try the best candidate basedon luma satd cost. [enabled]--max-merge <integer>  : Maximum number of merge candidates, 1..5 [5]--(no-)implicit-rdpcm  : Implicit residual DPCM. Currently only supportedwith lossless coding. [disabled]--(no-)tmvp            : Temporal motion vector prediction [enabled]Parallel processing:--threads <integer>    : Number of threads to use [auto]- 0: Process everything with main thread.- N: Use N threads for encoding.- auto: Select automatically.--owf <integer>        : Frame-level parallelism [auto]- N: Process N+1 frames at a time.- auto: Select automatically.--(no-)wpp             : Wavefront parallel processing. [enabled]Enabling tiles automatically disables WPP.To enable WPP with tiles, re-enable it afterenabling tiles. Enabling wpp with tiles is,however, an experimental feature since it isnot supported in any HEVC profile.--tiles <int>x<int>    : Split picture into width x height uniform tiles.--tiles-width-split <string>|u<int> :- <string>: A comma-separated list of tilecolumn pixel coordinates.- u<int>: Number of tile columns of uniformwidth.--tiles-height-split <string>|u<int> :- <string>: A comma-separated list of tile rowcolumn pixel coordinates.- u<int>: Number of tile rows of uniformheight.--slices <string>      : Control how slices are used.- tiles: Put tiles in independent slices.- wpp: Put rows in dependent slices.- tiles+wpp: Do both.--partial-coding <x-offset>!<y-offset>!<slice-width>!<slice-height>: Encode partial frame.Parts must be merged to form a valid bitstream.X and Y are CTU offsets.Slice width and height must be divisible by CTUin pixels unless it is the last CTU row/column.This parameter is used by kvaShare.Video Usability Information:--sar <width:height>   : Specify sample aspect ratio--overscan <string>    : Specify crop overscan setting [undef]- undef, show, crop--videoformat <string> : Specify video format [undef]- undef, component, pal, ntsc, secam, mac--range <string>       : Specify color range [tv]- tv, pc--colorprim <string>   : Specify color primaries [undef]- undef, bt709, bt470m, bt470bg,smpte170m, smpte240m, film, bt2020--transfer <string>    : Specify transfer characteristics [undef]- undef, bt709, bt470m, bt470bg,smpte170m, smpte240m, linear, log100,log316, iec61966-2-4, bt1361e,iec61966-2-1, bt2020-10, bt2020-12--colormatrix <string> : Specify color matrix setting [undef]- undef, bt709, fcc, bt470bg, smpte170m,smpte240m, GBR, YCgCo, bt2020nc, bt2020c--chromaloc <integer>  : Specify chroma sample location (0 to 5) [0]

HEVC Tile 编码器-kvazaar相关推荐

  1. HEVC/H.265硬件编码器实现杂谈

    国际视频编码标准HEVC已经发布两年有余,市场上关于支持HEVC的硬件也日益涌现,本文借鉴了各方面资源做了综合与概述,给出了HEVC硬件编码器实现的基本方法等重要网络资源. 一.系统设计要点 对于HE ...

  2. 编解码器之战:AV1、HEVC、VP9和VVC

    视频Codec专家Jan Ozer在Streaming Media West上主持了一场开放论坛,邀请百余名观众参与热门Codec的各项优势与短板.本文整理了讨论的主要成果,基本代表了AV1.HEVC ...

  3. HEVC流媒体服务器被过度炒作的5个原因

    正文字数:2724  阅读时长:7分钟 本篇文章将重点讨论为什么AVC(h.264)是设置低延迟实时流媒体更有效的选择.HEVC(h.265)流服务器解决方案. 文 / red5pro 原文链接:ht ...

  4. Overview of HEVC之5 帧间预测

    预测块(PB)的划分:与帧内预测的CB相比, HEVC为帧间预测的CB提供了更多的PB划分形状: PART_2N×2N的划分模式表示CB不划分:PART_2N×N的划分模式表示CB水平划分成两个相等尺 ...

  5. HEIF 和 HEVC 研究

    在升级 iOS 11 之后,iPhone 7 及更新的设备内的照片存储将不再用 JPEG 了,而采用了一种新的图片格式 HEIF(发音同 heef),在 iOS 中对应的文件后缀为 .heic ,其编 ...

  6. HEIF HEVC 你知道多少?

    点击上方"iOS开发",选择"置顶公众号" 关键时刻,第一时间送达! 在升级 iOS 11 之后,iPhone 7 及更新的设备内的照片存储将不再用 JPEG ...

  7. 什么是HEVC/H265?解密4K 8K视频核心编码HEVC(4K时代不能不懂的知识)

    HEVC是什么?它是High Efficiency Video Coding的简称,是一种新的视频压缩标准,将全面提升视频的压缩效率.与现有的视频压缩标准H.264/AVC相比,它能将压缩效率提高一倍 ...

  8. 编解码器之战:AV1、HEVC、VP9和VVC 1

    视频Codec专家Jan Ozer在Streaming Media West上主持了一场开放论坛,邀请百余名观众参与热门Codec的各项优势与短板.本文整理了讨论的主要成果,基本代表了AV1.HEVC ...

  9. HEVC方案---软编解码器

    1. 解码器: A. ffmpeg, 内置有HEVC解码器,其中代码基本来自openHEVC项目,但ffmpeg的HEVC解码器并不保证包含openHEVC项目的最新代码 http://ffmpeg. ...

最新文章

  1. 介绍并扩展Fitnesse的测试模块化机制:Scenario
  2. OBJECT subcommand [arguments [arguments ...]]
  3. c 多线程运行混乱_一篇文章读懂 Python 多线程
  4. WannaCry勒索比特币蠕虫病毒解决方案
  5. sift+图像匹配 算法
  6. 四个你看后可能会影响你一生的故事
  7. 生成器作为(快速失败)状态机
  8. Mysql 启动失败没日志,MySQL Server 5.7将无法启动,并且未填充错误日志
  9. Ackermann函数的递归求值
  10. 面试项目亮点_当面试官谈到项目经验的时候,你知道怎么回答吗?怎么反过来控制面试流程?...
  11. 213. 打家劫舍 II(JavaScript)
  12. Flutter进阶第14篇:支付宝支付【上】
  13. sql server2016还原数据库
  14. 【PHP】百度贴吧自动/云签到脚本(PC 端)
  15. ps基础学习:画笔工具实现花丛中蝴蝶效果
  16. css 剪辑图片_[译]用CSS剪切圆形图片
  17. redis分布式锁实现(以抢红包为例)
  18. 后氧传感器正常数据_怎么看氧传感器数据流
  19. 生物信息学Bioinformatics学习笔记(三)-高通量测序
  20. 什么触控笔好用又便宜,触控笔哪个牌子好用

热门文章

  1. html5的div是什么意思,div是什么意思?
  2. php redis setex如何获取,php-redis中文参考手册_Ping_echo_set_get_setex_psetex_...
  3. 11月14日:jquery
  4. 凭实力讲,运维工程师能不能做成预言家?
  5. 2021最新python学习视频教程
  6. 激励人生成功的10句经典中英文
  7. 记一次天池比赛 - 性能挑战赛道
  8. Deployer-6-部署流-Flow
  9. AP计算机从懵懵懂懂到突飞猛进-----加利福尼亚学生满分经验分享!
  10. python tkinter控件treeview的数据列表显示的实现_code