精华内容
下载资源
问答
  • 1 安装X264 本文使用Linux发行版为CentOS release 7.x,其安装步骤如下。 (1)下载X264最新版 https://www.videolan.org/developers/x264.html (2)在安装X264之前,需要先安装x264依赖库 nasm ,配置nasm...

    1 安装X264

    本文使用Linux发行版为CentOS release 7.x,其安装步骤如下。

    (1)下载X264最新版
    https://www.videolan.org/developers/x264.html

    (2)在安装X264之前,需要先安装x264依赖库
    nasm ,配置nasm主要是利用汇编指令进行加速
    nasm下载地址
    http://www.nasm.us/pub/nasm/releasebuilds/2.14.02/

    我这里将下载目录定义在/home目录下,先将下载的nasm压缩包进行解压,解压命令为tar jxvf FileName.tar.bz2 或者解压命令tar xvJf ***.tar.xz 解压好后切换到cd /home/nasm-2.14.02
    然后输入以下命令安装

    ./configure --prefix=/usr/local/nasm
    make
    sudo make install     #本身是root用户不加sudo

    nasm安装方法2,利用yum安装 yum install build-essential nasm ,可能导致安装版本为nasm2.10 不是最新版,x264要求至少2.13版本
    PS:GCC版本为4.8.5版本,因为支持C99标准会导致汇编失败,而GCC版本为4.8.2版本,正常安装
    在这里插入图片描述后来经过验证这个警告没有影响,至于安装好nasm,在安装x264提示nasm没有安装是没有建立软链接,因为在安装nasm没有指定目录,所以nasm入口和解压目录一致,如果指定了目录,如./configure --prefix=/usr/local/nasm,则用该路径建立软链接

    ln -s /home/download/nasm-2.14.03rc2/nasm /usr/bin/nasm
    #如果用了./configure --prefix,以下路径也行
    ln -s /usr/local/nasm /usr/bin/nasm

    (3)安装好x264的依赖库之后,现在开始安装x264

    tar -jxvf last_x264.tar.bz2       #解压
    
    cd x264-snapshot-20161101-2245     #切换到解压目录里,安装目录和解压目录在一个地方
    
    ./configure --enable-shared 
    
    make 
    
    make install

    默认生成的x264 lib库在就在解压(安装)目录下。因为没用–prefix
    ./configure --prefix=/usr/local/lib
    用了之后默认生成的库在/usr/local/lib目录下

    x264安装好之后的安装目录内容如下
    在这里插入图片描述

    2安装X265

    (1)先安装X265的依赖库cmake
    cmake这里是用yum install cmake直接安装的

    (2)另一个依赖库是yasm(是FFMPEG的依赖库),可以直接下载压缩包编译安装,下载地址
    http://www.linuxfromscratch.org/blfs/view/svn/general/yasm.html
    下载的压缩包为yasm-1.3.0,解压命令tar -zxf XXX.tar.gz
    解压好之后进入解压目录,解压过程中可能遇到的问题及解决方法
    在这里插入图片描述
    然后./configure make make install(此为3个命令)
    (3)x265下载链接,选择最新版本下载

    http://ftp.videolan.org/pub/videolan/x265/

    (4)安装x265命令

    $ cd x265/build/linux  #切换到解压好的目录里面    
    $ ./make-Makefiles.bash
    $ make && make install

    安装好的x265安装目录如下
    在这里插入图片描述

    3安装FFMPEG

    (1)从官网下载ffmpeg下载压缩包,一定要下最新版,低版本会导致FFMPEG命令正确,但无法解码xx.h265的视频序列,下载链接如下
    http://ffmpeg.org/download.html

    (2)安装步骤

    解压安装包
    tar -jxvf ffmpeg-x.x.tar.bz2
    
    进入目录
    cd ffmpeg-x.x
    编译(注意加上libx264与libx265)
    
    ./configure --prefix=/usr/local/ffmpeg/ --enable-shared --enable-yasm --enable-libx264 --enable-libx265 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib --extra-cflags=-I/usr/local/include/ --extra-ldflags=-L/usr/local/lib
    #参考链接https://blog.csdn.net/season_hangzhou/article/details/24399371

    编译执行报出
    ERROR: x265 not found using pkg-config

    • 原因是pkg-config找不到
    [root@localhost ffmpeg-3.1.1]# pkg-config --modversion x265
    Package x265 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `x265.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'x265' found
    • 解决办法是改变PKG_CONFIG_PATH:
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    • 这时再看,就ok了,再执行上面的配置语句,就不报错啦
    [root@localhost ffmpeg-3.1.1]# pkg-config --modversion x265 
    1.9

    解决好之后,利用make && make install,FFMPEG安装完成

    (3)最后解决环境变量和软连接的问题,先建立软连接
    ,即FFMPEG的安装目录下的bin中有类似windows下exe的可执行文件,需要到特定目录建立快捷方法,这样随便在哪个目录输入ffmpeg都能执行命令,ffmpeg的安装目录是在/usr/local/bin中,所以建立软链接命令
    ln -s /usr/local/ffmpeg_3/bin/ffmpeg /usr/bin
    这里的路径可能有差异,需要自己查看

    然后此时在任意目录,输入ffmpeg,会报如下错误,原因是ffmpeg的共享lib库没有识别到

    ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open

    此步设置软连接,可以更改为设置环境变量,方法如下
    https://blog.csdn.net/sinat_36458870/article/details/99719071

    可以在ffmpeg的安装bin目录下,输入ldd ffmpeg看ffmpeg需要哪些动态库,在没有设置环境变量之前,部分lib库显示为not found
    在这里插入图片描述
    设置环境变量步骤如下
    (1)

    vi /etc/ld.so.conf
    在文件末尾添加路径
    /usr/local/ffmpeg_3/lib
    #usr/local/ffmpeg 目录是ffmpeg的安装目录,根据个人不同安装目录修改。
    /home/x264-snapshot-20191021-2245   #h264安装目录中的lib
    /home/x265_3.2/build/linux     #h265安装目录中的lib

    在这里插入图片描述
    (2)更新环境变量:sudo ldconfig
    (3)加入全局环境变量路径:sudo vi /etc/profile
    (4)在文件中加入以下内容:
    路径根据自己的安装路径调整

    export PATH="/usr/local/ffmpeg_3/bin:$PATH"

    (5)然后保存并运行source /etc/profile
    (6)其他软件安装环境配置也是类似如此!

    大功告成在这里插入图片描述

    参考链接

    (推荐)
    https://blog.csdn.net/season_hangzhou/article/details/24399371

    https://www.jianshu.com/p/4fe12077ebe9
    https://blog.csdn.net/u011809767/article/details/79709606
    https://blog.csdn.net/weixin_43166958/article/details/89335679
    https://www.cnblogs.com/CoderTian/p/6655568.html
    https://blog.csdn.net/season_hangzhou/article/details/52138537
    https://my.oschina.net/u/2326611/blog/757474

    展开全文
  • 用ffmpeg可以方便的计算两个视频文件之间的psnr,命令格式如下 ffmpeg -i reference.ts -i encode.ts -lavfi psnr -f null - ... ffmpeg -pix_fmt yuv420p -s 1920x1080 -i input.yuv-pix_fmt yuv420p -s 1920x108...

      用ffmpeg可以方便的计算两个视频文件之间的psnr,命令格式如下

      ffmpeg -i reference.ts -i encode.ts -lavfi psnr -f null -

      YUV的对比命令如下:

      ffmpeg  -pix_fmt  yuv420p  -s 1920x1080  -i input.yuv  -pix_fmt yuv420p  -s 1920x1080  -i output.yuv  -lavfi psnr  -f null  -

      不过,ffmpeg计算的psnr与x264、x265得到的psnr值是不一致的(用x264编码YUV,得到编码后PSNR,然后用ffmpeg计算x264的重建yuv与原始yuv的PSNR,两者结果不同),这主要是两者计算psnr的方式有差别:

      x264、x265是计算每一帧的psnr,最终对整个序列求平均psnr。

      ffmpeg是计算每一帧的MSE(均方差),然后计算整个序列的平均MSE,最后计算psnr。即ffmpeg是将整个视频当做一个信号来分析,x264、x265将每一帧当做一个信号来分析,然后将所有信号的结果求平均

      具体代码在vf_psnr.c文件的函数do_psnr()和unint()中: do_psnr对每一帧计算MSE,并且将结果累加;在unint函数中,根据整个序列的MSE,计算得到最终的PSNR.

    static AVFrame *do_psnr(AVFilterContext *ctx, AVFrame *main,
                            const AVFrame *ref)
    {
        PSNRContext *s = ctx->priv;
        double comp_mse[4], mse = 0;
        int j, c;
        AVDictionary **metadata = avpriv_frame_get_metadatap(main);
    
        compute_images_mse(s, (const uint8_t **)main->data, main->linesize,
                              (const uint8_t **)ref->data, ref->linesize,
                              main->width, main->height, comp_mse);
    
        for (j = 0; j < s->nb_components; j++)
            mse += comp_mse[j] * s->planeweight[j];  
    
        s->min_mse = FFMIN(s->min_mse, mse);
        s->max_mse = FFMAX(s->max_mse, mse);
    
        s->mse += mse;  // 每一帧的总的MSE进行累加
        for (j = 0; j < s->nb_components; j++)
            s->mse_comp[j] += comp_mse[j];  // 每一帧Y、U、V分量的MSE分别进行累加
        s->nb_frames++;
    
        for (j = 0; j < s->nb_components; j++) {
            c = s->is_rgb ? s->rgba_map[j] : j;
            set_meta(metadata, "lavfi.psnr.mse.", s->comps[j], comp_mse[c]);
            set_meta(metadata, "lavfi.psnr.psnr.", s->comps[j], get_psnr(comp_mse[c], 1, s->max[c]));
        }
        set_meta(metadata, "lavfi.psnr.mse_avg", 0, mse);
        set_meta(metadata, "lavfi.psnr.psnr_avg", 0, get_psnr(mse, 1, s->average_max));
    
        if (s->stats_file) {
            fprintf(s->stats_file, "n:%"PRId64" mse_avg:%0.2f ", s->nb_frames, mse);
            for (j = 0; j < s->nb_components; j++) {
                c = s->is_rgb ? s->rgba_map[j] : j;
                fprintf(s->stats_file, "mse_%c:%0.2f ", s->comps[j], comp_mse[c]);
            }
            fprintf(s->stats_file, "psnr_avg:%0.2f ", get_psnr(mse, 1, s->average_max));
            for (j = 0; j < s->nb_components; j++) {
                c = s->is_rgb ? s->rgba_map[j] : j;
                fprintf(s->stats_file, "psnr_%c:%0.2f ", s->comps[j],
                        get_psnr(comp_mse[c], 1, s->max[c]));
            }
            fprintf(s->stats_file, "\n");
        }
    
        return main;
    }
    
    static av_cold void uninit(AVFilterContext *ctx)
    {
        PSNRContext *s = ctx->priv;
    
        if (s->nb_frames > 0) {
            int j;
            char buf[256];
    
            buf[0] = 0;
            for (j = 0; j < s->nb_components; j++) {
                int c = s->is_rgb ? s->rgba_map[j] : j;
                av_strlcatf(buf, sizeof(buf), " %c:%f", s->comps[j],
                            get_psnr(s->mse_comp[c], s->nb_frames, s->max[c])); // 对整个序列计算Y、U、V分量的PSNR
            }
            av_log(ctx, AV_LOG_INFO, "PSNR%s average:%f min:%f max:%f\n",
                   buf,
                   get_psnr(s->mse, s->nb_frames, s->average_max),  // 对整个序列计算整体PSNR
                   get_psnr(s->max_mse, 1, s->average_max),
                   get_psnr(s->min_mse, 1, s->average_max));
        }
    
        ff_dualinput_uninit(&s->dinput);
    
        if (s->stats_file && s->stats_file != stdout)
            fclose(s->stats_file);
    }

      修改了ffmpeg,可以输出每一帧PSNR值,同时在最后输出两种方式的psnr结果,方便对比,两者的结果还是有很明显的差别的,下载链接:

      https://download.csdn.net/download/lrzkd/11998317

      https://pan.baidu.com/s/1fhZtZEVU-dm1V9BteIPS1Q

      

    展开全文
  • 参考博客:Linux下编译安装ffmpeg(修改-简单复杂...(1)安装x264 (2)安装x265 问题1:apt-get install libnuma-dev 问题2:NASM在Ubuntu上的安装简单使用 https://blog.csdn.net/longintchar/article/details/49

    参考博客:Linux下编译安装ffmpeg(修改-简单复杂最终版本-)
    https://blog.csdn.net/zhangwu1241/article/details/52354604
    (0)在github上搜索264、265、ffmpeg文件包
    (1)安装x264
    (2)安装x265

    在这里插入图片描述

    问题1:apt-get install libnuma-dev
    问题2:NASM在Ubuntu上的安装与简单使用
    https://blog.csdn.net/longintchar/article/details/49386929
    (3)ERROR: x265 not found using pkg-config
    https://blog.csdn.net/whereisdog/article/details/105572840

    展开全文
  • 编码速度: 编码速度肯定是x264快得多,x264的编码帧率为80.42fps,而x265是5.27fps,相差差不多15倍。(但比去年测试实验版快了) 压缩率: 比较生成的文件大小,x264的文件大小为6.1M,x265为3.0M,差不多是...


    1. 下载x265源文件

    下载页面http://www.videolan.org/developers/x265.html

    2. 编译

    注:编译需要cmake,参考在CentOS安装CMake

    然后根据readme,编译x265,

    cmake ./source

    make

    OK,编译过程很顺利

    3. x265编码测试

    我用ffmpeg将一个标清视频解码成YUV文件,然后将这个文件作为输入进行x265编码。

    从结果上看速度是够慢的。。。 

    4. 用x264编码

    使用同一个yuv文件,为了省事,基本采用默认参数。


    5.  简单对比

    由于时间关系,只做了粗劣的测试,可能不太准确,不过可以作为简单的参考。

    编码速度: 编码速度肯定是x264快得多,x264的编码帧率为80.42fps,而x265是5.27fps,相差差不多15倍。(但比去年测试实验版快了)

    压缩率: 比较生成的文件大小,x264的文件大小为6.1M,x265为3.0M,差不多是二倍关系。

    编码质量: 使用最新的ffmpeg2.2的ffplay播放,编码质量没啥区别,都不错。(当然了,采用默认参数编码质量是很好的)

    6. 简单总结一下

    x265的压缩率对比现在流行的x264确实提高了不少,这点在好多视频领域都是很期待的,比如我们可以用同样的带宽看更清晰的视频,比如节省存储空间等。。

    不过它的算法复杂度大幅增加了,需要高得多的算力,感觉性价比不太高,以我的设备,做265的高清直播感觉有点力不从心。

    总得来说感觉还是不错,至少压缩的文件明显小了。



    转载于:https://my.oschina.net/zhangxu0512/blog/213575

    展开全文
  • gcc g++ cmake一些开发工具都装了之后 ...错误: 证书通用名 “xiph.org” 所要求的主机名 “downloads.xiph.org” 不符。 要以不安全的方式连接至 downloads.xiph.org,使用‘–no-check-certificate’ ”的 在wge...
  • [x264/x265] Adaptive Quantization 使用指南源码分析【本文】 x264源码解析:码率控制之adaptive quantization x265源码解析:码率控制之adaptive quantization【待补充】 码率控制之VBV x264源码...
  • h.265编码库x265实例

    千次阅读 2015-09-14 12:59:55
    x265是一个开源的H.265编码库。API接口方面与x264很相像。本文介绍其在x86 linux的编译方法,并给出实例。
  • 一:编码介绍 软编码:使用cpu进行编码。 硬编码:使用显卡GPU专用的DSP\FPGA\ASIC芯片等硬件进行编码。 软编码的特点是升级方便,实现简单,但是cpu负载中,性能...MPEG-2和MPEG-4 ASP等压缩技术相比,H.264压缩技
  • x264帧预测大小原理

    2020-12-06 16:47:47
    x264帧预测大小原理 代码如下: static float predict_size( predictor_t *p, float q, float var ) { return (p->coeff*var + p->offset) / (q*p->count); } 根据x264码率控制理论 假定q不变,...
  • X265视频压缩源码

    2016-09-21 22:02:22
    X265视频压缩源码。 x265是一个用于编码符合高效率视频编码(HEVC/H.265)标准的视频的开源自由软件及函数库。与x264项目相比,同等视频质量下,带宽减小50%以上。
  • 前言:最近在做视频隐写分析的毕业设,现在做的差不多了。打算发几篇文章整理一下最近的工作,为写毕业论文做个准备。作为一只写第一次写CSDN的渣渣...虽然最新已经有H265格式了,但是H264格式应用依旧十分广泛。FFM...
  • x265下载及编译

    2020-12-29 14:53:58
    与x264项目类似,x265使用GNU通用公共许可证(GPL)2授权或商业许可证授权提供。 下载 (1) 在终端运使用git获取x265库源码 cd ~/av git clone https://github.com/videolan/x265.git (2) 百度云盘获取 链接: ...
  • 那么既然出现了更加先进的编码技术,大家肯定会问了,h264与h265哪个更清晰?哪个画质好?本文我们就是来回答这个问题的。 由于H.265相比H.264最主要的改变是采用了块的四叉树划分结构,采用了从64x64~8x8像素的...
  • x265帧预测大小分析

    2020-09-09 08:24:16
    代码如下: double RateControl::...根据x264码率控制理论 假定q不变,位率复杂度成正比,复杂度不变,位率q成反比,右边coeff是一个常数系数。 x265有如下代码: double new_coeff = X265_MAX((bits *
  • HEVC/H265 标准介绍 和 H264比较

    千次阅读 2013-03-09 15:23:04
    High Efficiency Video Coding HEVC : is it really twice as good as H.264?...On the left, a close up from 'Kristen and Sara' (720p resolution), encoded at 800kbps using x264. On the right, the sam
  • x265代码阅读:码率控制(一)

    千次阅读 2017-04-23 20:55:23
    x265中码率控制算法貌似与x264的码率控制算法基本相同,基本上是经验性的,ITU-T/MPEG各类标准推荐的码率控制算法均不同。 x265的率控应该只是帧级率控,虽然有CU相关的率控参数,但其实那是率失真优化技术,...
  • 上一篇博文详细讲解了【FFmpeg命令】使用x264库进行图像视频(批量)压缩编码,本文介绍FFmpeg里x265库的命令使用,以实现图像视频(批量)压缩编码。 1. 了解libx265库 用libx264编码的H.264视频相比,libx265...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 210
精华内容 84
关键字:

x264与x265