zoukankan      html  css  js  c++  java
  • 【PE】x264编解码器在Windows(MinGw环境)和Linux平台的编译过程以及使用方法

    ###Date: 2017/12/23

    ###Author: SoaringLee

    ======================================================================

    1、x264简介

         x264是H264标准的开源编码器,由于x264编码器进行了很多优化,现在已经成为了工业界实用的H264编码器,其编码性能也是很高的。

         x264下载地址:ftp://ftp.videolan.org/pub/videolan/x264/snapshots/


    2、x264在Linux平台下的编译


    在linux平台下的编译很简单,开源工程的编译都是通过makefile实现的,步骤如下:

    (1)./configure


    (2)make



    3、x264在Windows平台(MinGW)下的编译

    (1)需要安装MinGW

    (2)需要安装yasm或者nasm汇编编译器,http://www.nasm.us/,将nasm.exe放在工程目录下。

    (3)./configure --enable-shared


     (4) make


    最后,静态库libx264.a和编码器可执行文件x264.exe成功生成了!

    至于动态库dll的编译可以采用./configure --enable-shared  make生成libx264.-152.dll。

    如下图:


    至于如何从dll中生成引导库lib,可以采用pexports生成def文件,然后采用lib命令在mingGW中生成lib。

    $ pexports.exe  -v libx264-152.dll >libx264-152.def
    $ lib /machine:x86 /def:libx264-152.def


    至此,x264编码器的静态库、动态库以及可执行文件的编译就完成了。


    4、x264编码参数设置及编码过程

    (1)编码参数设置

    x264 core:152
    Syntax: x264 [options] -o outfile infile
    
    Infile can be raw (in which case resolution is required),
      or YUV4MPEG (*.y4m),
      or Avisynth if compiled with support (yes).
      or libav* formats if compiled with lavf support (no) or ffms support (no).
    Outfile type is selected by filename:
     .264 -> Raw bytestream
     .mkv -> Matroska
     .flv -> Flash Video
     .mp4 -> MP4 if compiled with GPAC or L-SMASH support (no)
    Output bit depth: 8 (configured at compile time)
    
    Options:
    
      -h, --help                  List basic options
          --longhelp              List more options
          --fullhelp              List all options
    
    Example usage:
    
          Constant quality mode:
                x264 --crf 24 -o <output> <input>
    
          Two-pass with a bitrate of 1000kbps:
                x264 --pass 1 --bitrate 1000 -o <output> <input>
                x264 --pass 2 --bitrate 1000 -o <output> <input>
    
          Lossless:
                x264 --qp 0 -o <output> <input>
    
          Maximum PSNR at the cost of speed and visual quality:
                x264 --preset placebo --tune psnr -o <output> <input>
    
          Constant bitrate at 1000kbps with a 2 second-buffer:
                x264 --vbv-bufsize 2000 --bitrate 1000 -o <output> <input>
    
    Presets:
    
          --profile <string>      Force the limits of an H.264 profile
                                      Overrides all settings.
                                      - baseline,main,high,high10,high422,high444
          --preset <string>       Use a preset to select encoding settings [medium]
                                      Overridden by user settings.
                                      - ultrafast,superfast,veryfast,faster,fast
                                      - medium,slow,slower,veryslow,placebo
          --tune <string>         Tune the settings for a particular type of source
                                  or situation
                                      Overridden by user settings.
                                      Multiple tunings are separated by commas.
                                      Only one psy tuning can be used at a time.
                                      - psy tunings: film,animation,grain,
                                                     stillimage,psnr,ssim
                                      - other tunings: fastdecode,zerolatency
    
    Frame-type options:
    
      -I, --keyint <integer or "infinite"> Maximum GOP size [250]
          --tff                   Enable interlaced mode (top field first)
          --bff                   Enable interlaced mode (bottom field first)
          --pulldown <string>     Use soft pulldown to change frame rate
                                      - none, 22, 32, 64, double, triple, euro (requires cfr input)
    
    Ratecontrol:
    
      -B, --bitrate <integer>     Set bitrate (kbit/s)
          --crf <float>           Quality-based VBR (0-51) [23.0]
          --vbv-maxrate <integer> Max local bitrate (kbit/s) [0]
          --vbv-bufsize <integer> Set size of the VBV buffer (kbit) [0]
      -p, --pass <integer>        Enable multipass ratecontrol
                                      - 1: First pass, creates stats file
                                      - 2: Last pass, does not overwrite stats file
    
    Input/Output:
    
      -o, --output <string>       Specify output file
          --sar height      Specify Sample Aspect Ratio
          --fps <float|rational>  Specify framerate
          --seek <integer>        First frame to encode
          --frames <integer>      Maximum number of frames to encode
          --level <string>        Specify level (as defined by Annex A)
          --quiet                 Quiet Mode
    
    Filtering:
    
          --vf, --video-filter <filter0>/<filter1>/... Apply video filtering to the input file
    
          Filter options may be specified in <filter>:<option>=<value> format.
    
          Available filters:
          crop:left,top,right,bottom
          select_every:step,offset1[,...]
    
    

    (2)编码过程



    参考:http://blog.csdn.net/table/article/details/8085004



    本文为博主原创文章,未经博主允许不得转载。若允许转载,请注明来源https://www.cnblogs.com/SoaringLee/,否则保留追究法律责任的权利!另外,本人提供付费咨询服务并长期承接各类毕设以及外包项目。联系QQ:2963033731。加Q备注:CSDN外包
  • 相关阅读:
    linux初学者-正则表达式
    linux初学者-文件管理篇
    linux初学者-常用基本命令篇
    初学者的linux
    java中接口的定义和接口的实现
    深入理解Java的接口和抽象类
    在pom.xml中的dependencies点击add怎么没有搜索到相关jar包
    json对象(对象+数组)
    poi导出模板(我的备份)
    js对象和数组的定义
  • 原文地址:https://www.cnblogs.com/SoaringLee/p/10532550.html
Copyright © 2011-2022 走看看