精华内容
下载资源
问答
  • msys2,mingW64编译出的x264-157.dll x264-157.lib,将x264_config.h合并到了x264.h里,nasm可用
  • 基于rtp协议传输x264数据流:将x264数据流通过RTP传输。
  • X264 视频编码器X264的编译,包含脚本,静态库,X264源文件。 注意: 编译X264的脚本文件开头: build_x264_iOS_ptl.sh 编译FFmpeg和X264合并的编译脚本文件进行了命名: build_ffmpeg_iOS_x264_ptl 编译好的X264...
  • x264的官方最新源码
  • x264参数解释x264参数解释x264参数解释
  • ShiftMediaProject x264 ShiftMediaProject Shift Media Project旨在为x264和相关的依赖项提供本机Windows开发库,以支持直接在Visual Studio中更轻松地创建和调试富媒体内容。 x264 一个免费的软件库和应用程序...
  • x264 日记 

    2016-05-18 21:04:48
    x264 blog x264 作者的博客
  • x264-msvc 什么是x264-msvc? x264-msvc是x264项目的一个分支,与Microsoft Visual C ++兼容。 现在,x264-msvc基于x264-snapshot-20141218-2245,并且已在Visual Studio 2013(VC12)上成功构建。 为什么选择x264...
  • x264编译安装

    万次阅读 2020-06-21 11:27:20
    本文介绍在centos系统中编译安装x264的情况。 1、下载x264源码 可到https://www.videolan.org/developers/x264.html下载x264源码 2、解压编译 解压x264后执行命令./configure,报如下错误 编译x264需要使用...

    本文介绍在centos系统中编译安装x264的情况。

    1、下载x264源码

    可到https://www.videolan.org/developers/x264.html下载x264源码

    2、解压编译

    解压x264后执行命令./configure,报如下错误

    编译x264需要使用汇编器nasm,或使用--disable-asm模式。这里选择安装nasm

    3、安装nasm

    这里选择安装nasm2.14.01版本,到https://www.nasm.us/pub/nasm/releasebuilds/2.14.01/下载nasm-2.14.01.tar.gz

    解压nasm,进入nasm目录执行 ./configure,然后执行make命令,完成后执行make install安装nasm。

    通过命令whereis nasm验证nasm是否安装成功,如果输出nasm: /usr/local/bin/nasm则按照成功。

    4、编码x264

    进入x264目录执行./configure命令。完成后执行make。

    make结束后可在目录下看到生成x264可执行程序。

    使用x264 --help看看效果吧

    展开全文
  • x264代码剖析(二):如何编译运行x264以及x264代码基本框架    x264工程在x265出现之前一直在更新,但是自x264-20091007(含)不再支持VC++平台,也就是说支持VC++平台的x264的最新版本是x264-20091006。接下来就...

    x264代码剖析(二):如何编译运行x264以及x264代码基本框架

     

            x264工程在x265出现之前一直在更新,但是自x264-20091007(含)不再支持VC++平台,也就是说支持VC++平台的x264的最新版本是x264-20091006。接下来就以该版本为例简单介绍如何编译运行x264以及x264代码的基本框架。

     

            首先下载x264-20091006,地址为:http://ftp.videolan.org/pub/videolan/x264/snapshots/,找到对应版本下载后直接解压缩就可以了。

     

     

    1、编译运行x264

     

            平台:win7 32bitVS2010

            直接用VS打开“...\x264-091006\build\win32”文件夹下面的对应工程项目即可,由于VS版本与x264版本不一样,所以会自动兼容,全部采用默认兼容即可。编译过程中可能会出现一系列的问题,关于这部分将在后续进行分析解决。


        已经解决:见网址:http://blog.csdn.net/frd2009041510/article/details/50822847

     

    2x264代码基本框架(从源码结构方面)

     

            下面以x264-160228版本为例从源码结构方面分析其代码基本框架。

            X264源码文件夹内包括的内容如下图所示:



    2.1encoder

     

            Encoder文件夹内主要包括的内容如下图:


    2.2filters


            filters文件夹内主要包括的内容如下图:

            其中,video中包括:


    2.3input


            input文件夹内主要包括的内容如下图:


    2.4output


            output文件夹内主要包括的内容如下图:


    2.5extras


           extras文件夹内主要包括的内容如下图:



    2.6doc


            doc文件夹内主要包括的内容如下图:


    2.7toolscommon


            toolscommon文件夹内包含内容较多,common文件夹内包含了一些共用的函数,如下图所示:


            而tools则包含了常用的工具(个人尚未使用过),如下图所示:


    3x264代码基本框架(从编码结构方面)

     

            下面以x264-160228版本为例从编码结构方面分析其代码基本框架。

     

            主要参考:http://blog.csdn.net/leixiaohua1020/article/details/45536607

     

    3.1x264命令行程序

     

            x264命令行程序指的是x264项目提供的控制台程序,通过这个程序可以调用libx264编码YUVH.264码流。x264命令行工具的源码调用关系图如下图所示:



            这个流程中最关键的API包括:

    x264_param_default():设置参数集结构体x264_param_t的缺省值。

    x264_encoder_open():打开编码器。

    x264_encoder_headers():输出SPSPPSSEI等信息。

    x264_encoder_encode():编码输出一帧图像。

    x264_encoder_close():关闭编码器。

     

            具体分析如下:

    该程序的入口函数为main()main()函数首先调用parse()解析输入的参数,然后调用encode()编码YUV数据。parse()首先调用x264_param_default()为保存参数的x264_param_t结构体赋默认值;然后在一个大循环中通过getopt_long()解析通过命令行传递来的存储在argv[]中的参数,并作相应的设置工作;最后调用select_input()select_output()完成输入文件格式(yuvy4m等)和输出文件格式(裸流,mp4mkvFLV等)的设置。encode()首先调用x264_encoder_open()打开编码器;接着在一个循环中反复调用encode_frame()一帧一帧地进行编码;最后在编码完成后调用x264_encoder_close()关闭编码器。encode_frame()则调用x264_encoder_encode()将存储YUV数据的x264_picture_t编码为存储H.264数据的x264_nal_t


    3.2libx264类库的接口

     

             在一个x264编码流程中,至少需要调用如下API函数:

    x264_param_default():设置参数集结构体x264_param_t的缺省值。

    x264_picture_alloc():为图像结构体x264_picture_t分配内存。

    x264_encoder_open():打开编码器。

    x264_encoder_encode():编码一帧图像。

    x264_encoder_close():关闭编码器。

    x264_picture_clean():释放x264_picture_alloc()申请的资源。

     

    3.3libx264主干函数

     

            libx264主干函数指的是编码API之后,x264_slice_write()之前的函数,如下图所示。


            从图中可以看出,x264主干部分最复杂的函数就是x264_encoder_encode(),该函数完成了编码一帧YUVH.264码流的工作。与之配合的还有打开编码器的函数x264_encoder_open(),关闭编码器的函数x264_encoder_close(),以及输出SPS/PPS/SEI这样的头信息的x264_encoder_headers()。这一部分函数较多,暂时不详细分析,仅仅举几个例子列一下它们的功能。


    3.3.1x264_encoder_open()

            x264_encoder_open()用于打开编码器,其中初始化了libx264编码所需要的各种变量。它调用了下面的函数:

    x264_validate_parameters():检查输入参数(例如输入图像的宽高是否为正数)。

    x264_predict_16x16_init():初始化Intra16x16帧内预测汇编函数。

    x264_predict_4x4_init():初始化Intra4x4帧内预测汇编函数。

    x264_pixel_init():初始化像素值计算相关的汇编函数(包括SADSATDSSD等)。

    x264_dct_init():初始化DCT变换和DCT反变换相关的汇编函数。

    x264_mc_init():初始化运动补偿相关的汇编函数。

    x264_quant_init():初始化量化和反量化相关的汇编函数。

    x264_deblock_init():初始化去块效应滤波器相关的汇编函数。

    x264_lookahead_init():初始化Lookahead相关的变量。

    x264_ratecontrol_new():初始化码率控制模块。


    3.3.2x264_encoder_headers()

     

    x264_encoder_headers()输出SPS/PPS/SEI这些H.264码流的头信息。它调用了下面的函数:

    x264_sps_write():输出SPS

    x264_pps_write():输出PPS

    x264_sei_version_write():输出SEI

    如下图所示:


    3.3.3x264_encoder_encode()

     

            x264_encoder_encode()编码一帧YUVH.264码流。它调用了下面的函数:

    x264_frame_pop_unused():获取1x264_frame_t类型结构体fenc。如果frames.unused[]队列不为空,就调用x264_frame_pop()unused[]队列取1个现成的;否则就调用x264_frame_new()创建一个新的。

    x264_frame_copy_picture():将输入的图像数据拷贝至fenc

    x264_lookahead_put_frame():将fenc放入lookahead.next.list[]队列,等待确定帧类型。

    x264_lookahead_get_frames():通过lookahead分析帧类型。该函数调用了x264_slicetype_decide()x264_slicetype_analyse()x264_slicetype_frame_cost()等函数。经过一些列分析之后,最终确定了帧类型信息,并且将帧放入frames.current[]队列。

    x264_frame_shift():从frames.current[]队列取出一帧用于编码。

    x264_reference_update():更新参考帧列表。

    x264_reference_reset():如果为IDR帧,调用该函数清空参考帧列表。

    x264_reference_hierarchy_reset():如果是I(非IDR帧)、P帧、B帧(可做为参考帧),调用该函数。

    x264_reference_build_list():创建参考帧列表list0list1

    x264_ratecontrol_start():开启码率控制。

    x264_slice_init():创建 Slice Header

    x264_slices_write():编码数据(最关键的步骤)。其中调用了x264_slice_write()完成了编码的工作(注意“x264_slices_write()”和“x264_slice_write()”名字差了一个“s”)。

    x264_encoder_frame_end():编码结束后做一些后续处理,例如释放一些中间变量以及打印输出一些统计信息。其中调用了x264_frame_push_unused()fenc重新放回frames.unused[]队列,并且调用x264_ratecontrol_end()关闭码率控制。

     

    3.3.4x264_encoder_close()

     

            x264_encoder_close()用于关闭解码器,同时输出一些统计信息。它调用了下面的函数:

    x264_lookahead_delete():释放Lookahead相关的变量。

    x264_ratecontrol_summary():汇总码率控制信息。

    x264_ratecontrol_delete():关闭码率控制。


    3.4x264_slice_write()

     

    x264_slice_write()x264项目的核心,它完成了编码了一个Slice的工作。根据功能的不同,该函数可以分为滤波(Filter),分析(Analysis),宏块编码(Encode)和熵编码(Entropy Encoding)几个子模块,如下图所示。


            x264_slice_write()用于编码Slice。该函数中包含了一个很长的for()循环。该循环每执行一遍编码一个宏块。x264_slice_write()中以下几个函数比较重要:

    x264_nal_start():开始写一个NALU

    x264_macroblock_thread_init():初始化存储宏块的重建数据缓存fdec_buf[]和编码数据缓存fenc_buf[]

    x264_slice_header_write():输出 Slice Header

    x264_fdec_filter_row():滤波模块。该模块包含了环路滤波,半像素插值,SSIM/PSNR的计算。

    x264_macroblock_cache_load():将要编码的宏块的周围的宏块的信息读进来。

    x264_macroblock_analyse():分析模块。该模块包含了帧内预测模式分析以及帧间运动估计等。

    x264_macroblock_encode():宏块编码模块。该模块通过对残差的DCT变换、量化等方式对宏块进行编码。

    x264_macroblock_write_cabac()CABAC熵编码模块。

    x264_macroblock_write_cavlc()CAVLC熵编码模块。

    x264_macroblock_cache_save():保存当前宏块的信息。

    x264_ratecontrol_mb():码率控制。

    x264_nal_end():结束写一个NALU

     

    3.5、滤波模块

     

    滤波模块对应的函数是x264_fdec_filter_row()。该函数完成了环路滤波,半像素插值,SSIM/PSNR的计算的功能,如下图所示。


            该函数调用了以下几个比较重要的函数:

    x264_frame_deblock_row():去块效应滤波器。

    x264_frame_filter():半像素插值。

    x264_pixel_ssd_wxh()PSNR计算。

    x264_pixel_ssim_wxh()SSIM计算。

     

    3.6、分析模块

     

            分析模块对应的函数是x264_macroblock_analyse()。该函数包含了帧内预测模式分析以及帧间运动估计等,如下图所示。



            该函数调用了以下比较重要的函数(只列举了几个有代表性的函数):

    x264_mb_analyse_init()Analysis模块初始化。

    x264_mb_analyse_intra()I宏块帧内预测模式分析。

    x264_macroblock_probe_pskip():分析是否是skip模式。

    x264_mb_analyse_inter_p16x16()P16x16宏块帧间预测模式分析。

    x264_mb_analyse_inter_p8x8()P8x8宏块帧间预测模式分析。

    x264_mb_analyse_inter_p16x8()P16x8宏块帧间预测模式分析。

    x264_mb_analyse_inter_b16x16()B16x16宏块帧间预测模式分析。

    x264_mb_analyse_inter_b8x8()B8x8宏块帧间预测模式分析。

    x264_mb_analyse_inter_b16x8()B16x8宏块帧间预测模式分析。

     

    3.7、宏块编码模块

     

            宏块编码模块对应的函数是x264_macroblock_encode()。该模块通过对残差的DCT变换、量化等方式对宏块进行编码。对于Intra16x16宏块,调用x264_mb_encode_i16x16()进行编码,对于Intra4x4,调用x264_mb_encode_i4x4()进行编码。对于Inter类型的宏块则直接在函数体里面编码。


            从图中可以看出,宏块编码模块的x264_macroblock_encode()调用了x264_macroblock_encode_internal(),而x264_macroblock_encode_internal()完成了如下功能:

    x264_macroblock_encode_skip():编码Skip类型宏块。

    x264_mb_encode_i16x16():编码Intra16x16类型的宏块。该函数除了进行DCT变换之外,还对16个小块的DC系数进行了Hadamard变换。

    x264_mb_encode_i4x4():编码Intra4x4类型的宏块。

    帧间宏块编码:这一部分代码直接写在了函数体里面。

    x264_mb_encode_chroma():编码色度块。

     

    3.8、熵编码模块

     

            CABAC熵编码对应的函数是x264_macroblock_write_cabac()CAVLC熵编码对应的函数是x264_macroblock_write_cavlc(),如下图所示。


            x264_macroblock_write_cavlc()调用了以下几个比较重要的函数:

    x264_cavlc_mb_header_i():写入I宏块MB Header数据。包含帧内预测模式等。

    x264_cavlc_mb_header_p():写入P宏块MB Header数据。包含MVD、参考帧序号等。

    x264_cavlc_mb_header_b():写入B宏块MB Header数据。包含MVD、参考帧序号等。

    x264_cavlc_qp_delta():写入QP

    x264_cavlc_block_residual():写入残差数据。

     

    3.9、码率控制模块

     

            码率控制模块函数分布在x264源代码不同的地方,包含了以下几个比较重要的函数:

    x264_encoder_open()中的x264_ratecontrol_new():创建码率控制。

    x264_encoder_encode()中的x264_ratecontrol_start():开始码率控制。

    x264_slice_write()中的x264_ratecontrol_mb():码率控制算法。

    x264_encoder_encode()中的x264_ratecontrol_end():结束码率控制。

    x264_encoder_close()中的x264_ratecontrol_summary():码率控制信息。

    x264_encoder_close()中的x264_ratecontrol_delete():释放码率控制。

     

    截止到这儿,x264的基本框架就差不多完全介绍完了,具体的细节性问题以及代码分析将在后续进行不断更新。

    (此处要多谢雷神提供众多的资料) 大笑
    展开全文
  • x264vfw.zip

    2021-07-28 11:04:01
    x264vfw
  • 本菜谱提供了一种安装x264的简便方法。 更多信息? 要求 食谱: 本食谱依赖于以下食谱: 必要的 吉特 平台: 的Ubuntu 属性 node['x264']['install_method'] -安装方法,':source'或':package'-默认':source'...
  • x264源文件

    2016-04-05 15:43:54
    x264库源文件
  • X264源代码

    2019-09-08 09:55:17
    X264源代码,一个挺不错的H264开源实现,可以通过vs2005编译。 x264-snapshot-20081222-2245.zip (280.47 KB, 下载次数: 34 ) 源代码
  • ubuntu下安装ffmpeg和X264,最新的X264源码
  • x264测试yuv文件

    2018-06-06 21:49:42
    X264测试用原始yuv文件,用x264将该文件编码成h264等等X264测试用原始yuv文件,用x264将该文件编码成h264等等
  • 函数原型: int x264_encoder_encode( x264_t *h, x264_nal_t **pp_nal, int *pi_nal, x264_picture_t *pic_in,

    函数原型:

    <span style="font-size:18px;">int     x264_encoder_encode( x264_t *h,  
                                 x264_nal_t **pp_nal, int *pi_nal,  
                                 x264_picture_t *pic_in,  
                                 x264_picture_t *pic_out )  </span>
    

    具体的调用例子:

    <span style="font-size:18px;">            if( x264_encoder_encode( p264Handle, &p264Nal, &i264Nal, p264Pic ,&pic_out) < 0 )
                {
                    fprintf( stderr, "x264_encoder_encode failed/n" );
                }</span>
    其中, i264Nal为调用一次 x264_encoder_encode 获得到的NAL单元个数。p264为NAL的首地址。所以需要对每个NAL单元编码。会调用到x264_nal_encode函数。

    <span style="font-size:18px;">           for( int i = 0; i < i264Nal; i++ ) //循环获取每个NAL
                {
                    int i_size;
                    int i_data;  //该变量记录每个NAL的字节数
                    i_data = 1024*32;
                    if( ( i_size = x264_nal_encode( pNal, &i_data, 1, &p264Nal[i] ) ) > 0 ) //pNal指向每个解码后NAL的指针。
                    {
                        if ((pNal[4]&0x60)==0)
                        {
                            continue;
                        }
                        if (pNal[4]==0x67)  //SPS包
                        {
                            continue;
                        }
                        if (pNal[4]==0x68)  //PPS包
                        {
                            continue;
                        }
                        memmove(pNal,pNal+4,i_size-4); //头4个字节为0.
                        pNal+=i_size-4;
                    }
                    else if( i_size < 0 )
                    {
                        fprintf( stderr,"need to increase buffer size (size=%d)/n", -i_size );
                    }
                }</span>


    x264_nal_encode的函数原型:

    <span style="font-size:18px;"> * x264_nal_encode: 
     * x264_nal_encode( mux_buffer, &i_size, 1, &nal[i] ); 
     ****************************************************************************/  
    int x264_nal_encode( void *p_data, int *pi_data, int b_annexeb, x264_nal_t *nal )  
    {  
        uint8_t *dst = p_data;/*nal首地址*/  
        uint8_t *src = nal->p_payload;/*裸数据的首地址*/  
        uint8_t *end = &nal->p_payload[nal->i_payload];/*下一个裸数据的首地址,-> 和 [] 属于同一优先级,从左到右结合*/  
        int i_count = 0;  
      
        /* FIXME this code doesn't check overflow */  
      
        if( b_annexeb )/*H.264附录B中的方案,此处b_annexeb一直取1,利用RTP打包时去掉下面4个字节的start_code,但在存储介质上时,由于NAL 
                       是依次紧密排列的,解码器将无法在数据流中分辨出每个NAL的起始位置和终止位置,故而采用了start_code*/  
        {  
            /* long nal start code (we always use long ones)*/  
            *dst++ = 0x00;  
            *dst++ = 0x00;  
            *dst++ = 0x00;  
            *dst++ = 0x01;  
        }  
      
        /* nal header */  
        *dst++ = ( 0x00 << 7 ) | ( nal->i_ref_idc << 5 ) | nal->i_type;/*第一个字节*/  
      
        while( src < end )  
        {  
            if( i_count == 2 && *src <= 0x03 )  
            {  
                *dst++ = 0x03;  
                i_count = 0;  
            }  
            if( *src == 0 )/*如果遇到数据中有0x00的,则i_cout++,直到检测到2次0x00,则在其后面添加03以防止与起始码竞争*/  
                i_count++;  
            else  
                i_count = 0;  
            *dst++ = *src++;  
        }  
        *pi_data = dst - (uint8_t*)p_data;/*p_data为nal的首地址,最后pi_data记录的是整个nal的字节数*/  
      
        return *pi_data;  
    }  </span>


    也可以不调用系统函数自己实现:

    <span style="font-size:18px;">static int encode_nals (Ctx *c, x264_nal_t *nals, int nal_cnt)
    {
    	char *pout = (char*)c->output;
    	c->output_datasize = 0;
    	for (int i = 0; i < nal_cnt; i++) 
    	{
    		if (c->output_datasize + nals[i].i_payload > c->output_bufsize) 
    		{
    			// 扩展
    			c->output_bufsize = (c->output_datasize+nals[i].i_payload+4095)/4096*4096;
    			c->output = realloc(c->output, c->output_bufsize);
    		}
    		memcpy(pout+c->output_datasize, nals[i].p_payload, nals[i].i_payload);
    		c->output_datasize += nals[i].i_payload;
    	}
    
    	return c->output_datasize;
    }</span>



     

    展开全文
  • x264压缩包

    2017-09-19 15:28:44
    使ffmpeg支持yuv格式编码为h264的x264压缩文件,未编译使ffmpeg支持yuv格式编码为h264的x264压缩文件,未编译
  • 错误位置:(x264_encoder_encode(h, &nal, &nnal, &pic, &pic_out) ) 显示的错误: 0x00000000 处有未经处理的异常: 0xC0000005: Access violation nal这个变量为NULL。 下面是我初始化的代码: bool x264enc::...
  • build x264

    2014-07-11 14:18:29
    ffmpeg build x264的部分
  • 若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 ... 目录 前话 x264库介绍 功能概述 编码器功能 使用x254编解码库的软件 x264库下载 Windows下x264库编译 步骤...

    若该文为原创文章,未经允许不得转载
    原博主博客地址:https://blog.csdn.net/qq21497936
    原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
    本文章博客地址:https://blog.csdn.net/qq21497936/article/details/103397771
    各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究

    红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)

    Qt开发笔记之编码x264码流并封装mp4

    Qt开发笔记之编码h264码流并封装mp4(一):x264介绍、windows平台x264库编译

    Qt开发笔记之编码h264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译

    Qt开发笔记之编码h264码流并封装mp4(三):Qt使用x264库对.yuv文件编码为.h264文件

    Qt开发笔记之编码h264码流并封装mp4(四):mp4v2库的介绍和windows平台编译

    Qt开发笔记之编码h264码流并封装mp4(五):ubuntu平台编译x264

    Qt开发笔记之编码h264码流并封装mp4(六):ubuntu平台编译mp4v2并封装mp4

     

    前话

    本篇介绍x264,使用mingw32编译该库,并使用x264将yuv文件编码为.h264文件。

    Windows下使用视频编码一般使用opencv、ffmpeg、vlc,opencv其实也是调用ffmpeg,ffmpeg底层又调用了其他编码的库,与此类似的vlc平台也是一样。

     

    x264库介绍

    功能概述

    • 提供一流的性能,压缩和功能。
    • 实现出色的性能,在一台消费者级计算机上实时编码4个或更多1080p流。
    • 提供最好的质量,具有最先进的心理视觉优化。
    • 许多不同应用程序所必需的支持功能,例如电视广播,蓝光低延迟视频应用程序和Web视频。
    • x264构成了许多网络视频服务的核心,例如YoutubeFacebookVimeoHulu。它已被电视广播公司和ISP广泛使用。

    编码器功能

    • 8x84x4自适应空间变换
    • 自适应B帧放置
    • B帧作为参考/任意帧顺序
    • CAVLC / CABAC熵编码
    • 自定义量化矩阵
    • 内部:所有宏块类型(具有所有预测的16x168x84x4PCM
    • Inter P:所有分区(从16x164x4
    • Inter B:从16x168x8的分区(包括跳过/直接)
    • 隔行扫描(MBAFF
    • 多个参考系
    • 速率控制:恒定量化器,恒定质量,单通道或多通道ABR,可选VBV
    • 场景切换检测
    • B帧中的时空直接模式,自适应模式选择
    • 在多个CPU上并行编码
    • 预测性无损模式
    • 用于细节保留的Psy优化(自适应量化,psy-RDpsy-网格)
    • 任意调整比特率分布的区域

    使用x254编解码库的软件

    • Avidemux
    • ELDER
    • ffdshow
    • ffmpeg
    • GordianKnot
    • Handbrake
    • LiVES
    • MeGUI
    • MEncoder
    • Bencos (formerly RealAnime)
    • StaxRip
    • VLC media player

    …and many more

     

    x264库下载

           下载地址:https://www.videolan.org/developers/x264.html

     

    Windows下x264库编译

    步骤一:下载,放入编译文件夹并解压,如下图:

     

    步骤二:安装Msys环境

           笔者使用环境为win10+Qt5.9.3 mingw32,而x264库不支持CMake,所以只能搭建mingw的msys环境(windows下的仿linux环境)。

           读者看心情选吧,为了环境可控,建议msys1.0。

           下载msys:https://download.csdn.net/download/qq21497936/12009320

           或者下载msys2:http://www.msys2.org

           (msys2比msys更智能,并带有基础的编译环境,但是编译涉及到其他基础编译库和工具等等,所以使用之前需要检查版本,版本不合适则安装和修改环境变量切换到目标版本)

    步骤三:部署mingw32编译环境

    安装好后,将Qt5.9,3的mingw拷贝到msys根目录文件夹

           并检查环境,如下图:

    步骤四:迁移源代码至msys

    步骤五:linux的常规编译步骤,configure配置

    ./configure –enbale-shared

    ./configure --enable-shared --disable-asm

    (补充解释下--enable-asm:纯C实现,不使用汇编代码,那部分是针对各个CPU架构做专门优化的。一般不需要disable)。

           重新配置下,主要是prefix参数配置install路径,好方便我们提取头文件和库文件:

    ./configure --enable-shared --disable-asm --prefix=/home/21497/compile/x264/x264-snapshot-20191130-2245/install

           (注意:此处对mp4是不支持的,“mp4: no”,要支持mp4请看:

            《Qt开发笔记之编码x264码流并封装mp4(二):windows平台x264添加mp4支持,gpac库的介绍与编译

    步骤六:linux的常规编译步骤,make(mingw32-make.exe)

    mingw32-make.exe

    步骤七:linux的常规编译步骤,make install(mingw32-make.exe install)

           提取可执行文件、头文件和库文件,如下图:

     

    Windows平台x264库模块化

           其中x264Manager.pri文件内容,如下图:

           建立模板工程测试,报错如下:

           添加”stdint.h”头文件,如下图:

    编译测试通过。

     

    工程模板v1.0.0

           Windows下mingw32的x264工程模板v1.0,0

     

    Yuv格式文件下载

           测试文件yuv下载地址:

                   http://www.cipr.rpi.edu/resource/sequences/index.html

                   http://trace.eas.asu.edu/yuv/index.html

           连不上或者下载太慢,笔者下载一个后上传到CSDN

           CSDN下载地址(三个文件,2个yuv,1个y4m):

            https://download.csdn.net/download/qq21497936/12010079

     

    视频格式

    • .y4m:Y4m(YUV4MPEG2)文件格式是一种以头文件存储视频规格的未压缩视频序列。简单来说,在原始的YUV序列的起始和每一帧的头部都加入了纯文字形式的视频参数信息,包括分辨率、帧率、逐行/隔行扫描方式、高宽比,以及每一起始帧标志位。
    • .h264:h264不属于视频格式,而是一种视频编码标准,跟avi、mpg不属于同一类。
    • .flv:FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。
    • .mp4:全称MPEG-4 Part 14,是一种使用MPEG-4的多媒体电脑档案格式, Mp4实际为容器,包含编码数据,编码与mp4没有直接关系。

     

    使用x264命令行测试

    Yuv格式编码到flv

    Yuv格式编码到mp4

     


    原博主博客地址:https://blog.csdn.net/qq21497936
    本文章博客地址:https://blog.csdn.net/qq21497936/article/details/103397771

    展开全文
  • ffmpeg + x265 + x264

    2017-09-24 00:18:47
    在ffmpeg 中加入x265和x264。通过这个你可以直接使用ffmpep进行x265的转码,我使用的系统是Ubuntu 16.10 ,
  • X264注释代码 X264原代码

    热门讨论 2012-02-09 11:36:15
    最详细最适合初学者的X264高手注释代码,非常详细,欢迎下载,不会后悔的,VC6的工程
  • x264源代码简单分析:x264命令行工具(x264.exe)

    万次阅读 多人点赞 2015-05-08 18:30:23
    本文简单分析x264项目中的命令行工具(x264.exe)的源代码。该命令行工具可以调用libx264将YUV格式像素数据编码为H.264码流。
  • 这个小巧易用的程序是FFmpeg的GUI,可让您使用x264编解码器轻松转换视频和音频。 在质量,文件大小和速度方面,x264是最好的视频编解码器之一。 这意味着x264ncoder可以在几分钟内以低文件大小生成非常美观的视频! ...
  • x264源代码

    2019-04-25 15:09:32
    x264源代码,对于视频编解码的学习帮助比较大。可以看代码慢慢熟悉编解码流程。
  • (x264 README 在下面列出) x264android 是 Android NDK 的源项目,其中包含最新的 X264 编解码器,以及使用 x264 编码器编译的 ANDROID-USE-ONLY 库 请确保,在您遵循下面的“如何 xxx”之前,您已经知道什么是ndk-...
  • simplest_encoder_x264

    2021-09-08 10:22:29
    * 简单的x264视频编码器 *Simple x264 video encoder * * 梁启东 qidong.liang * 18088708700@163.com * https://blog.csdn.net/u011645307 * * * 本程序实现了简单的x264视频编码功能; * 支持强制输出...
  • x264.rar window编译成x64

    2019-07-11 07:30:42
    window 编译x264成x64,适用于window开发,音视频编码,
  • LINUX X264

    2015-07-26 21:33:59
    用于ARM或PC的X264库函数,你值得拥有 用于ARM或PC的X264库函数,你值得拥有 用于ARM或PC的X264库函数,你值得拥有

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,256
精华内容 31,302
关键字:

x264