网站中文域名,重庆阳光投诉平台,yandex网站推广,晋城市住房城乡建设局网站使用FFMPEG作编码操作时#xff0c;会涉及到将yuv数据编码成h264数据#xff0c;FFmpeg的libavcodec中的libx264.c会调用x264库的源码作编码#xff1a;
1.x264库编译 下载X264#xff0c;地址为#xff1a;http://www.videolan.org/developers/x264.html#xff0c;并解…使用FFMPEG作编码操作时会涉及到将yuv数据编码成h264数据FFmpeg的libavcodec中的libx264.c会调用x264库的源码作编码
1.x264库编译 下载X264地址为http://www.videolan.org/developers/x264.html并解压。 mkdir my_build ./configure --enable-shared --prefix./my_build/ make -j4 make install
2.编译后可以查看 my_build目录
.
|-- bin
| -- x264
|-- include
| |-- x264.h
| -- x264_config.h
-- lib|-- libx264.so - libx264.so.164|-- libx264.so.164-- pkgconfig-- x264.pc其中bin目录下x264为可执行文件我们通过此可执行文件来分析x264库的相关功能
3.运行 通过-h信令我们大致可以了解x264的主要功能和使用方法 ./x264 -h
$ ./x264 -h
x264 core:164
Syntax: x264 [options] -o outfile infileInfile 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/10Options:-h, --help List basic options--longhelp List more options--fullhelp List all optionsExample usage:Constant quality mode:x264 --crf 24 -o output inputTwo-pass with a bitrate of 1000kbps:x264 --pass 1 --bitrate 1000 -o output inputx264 --pass 2 --bitrate 1000 -o output inputLossless:x264 --qp 0 -o output inputMaximum PSNR at the cost of speed and visual quality:x264 --preset placebo --tune psnr -o output inputConstant bitrate at 1000kbps with a 2 second-buffer:x264 --vbv-bufsize 2000 --bitrate 1000 -o output inputPresets:--profile string Force the limits of an H.264 profileOverrides 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 sourceor situationOverridden 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,zerolatencyFrame-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 (-12-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 fileInput/Output:-o, --output string Specify output file--sar width: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 ModeFiltering:--vf, --video-filter filter0/filter1/... Apply video filtering to the input fileFilter options may be specified in filter:optionvalue format.Available filters:crop:left,top,right,bottomselect_every:step,offset1[,...]4.建立一个工程用于将YUV转成H264
编写测试程序 代码结构
.
|-- Makefile
|-- in420.yuv
|-- inc
|-- obj
| -- test.o
|-- out.h264
|-- src
| -- test.cpp
|-- third_lib
| -- x264
| |-- include
| | |-- x264.h
| | -- x264_config.h
| -- lib
| -- libx264.so
-- video_prj
test.cpp内容
#include stdio.h
#include stdlib.h#include stdint.h#if defined ( __cplusplus)
extern C
{
#include x264.h
};
#else
#include x264.h
#endifint main(int argc, char** argv)
{int ret;int y_size;int i,j;FILE* fp_src fopen(./in420.yuv, rb);FILE* fp_dst fopen(out.h264, wb);int frame_num50;int cspX264_CSP_I420;int width640,height360;int iNal 0;x264_nal_t* pNals NULL;x264_t* pHandle NULL;x264_picture_t* pPic_in (x264_picture_t*)malloc(sizeof(x264_picture_t));x264_picture_t* pPic_out (x264_picture_t*)malloc(sizeof(x264_picture_t));x264_param_t* pParam (x264_param_t*)malloc(sizeof(x264_param_t));//Checkif(fp_srcNULL||fp_dstNULL){printf(Error open files.\n);return -1;}x264_param_default(pParam);pParam-i_width width;pParam-i_height height;pParam-i_cspcsp;x264_param_apply_profile(pParam, x264_profile_names[5]);pHandle x264_encoder_open(pParam);x264_picture_init(pPic_out);x264_picture_alloc(pPic_in, csp, pParam-i_width, pParam-i_height);y_size pParam-i_width * pParam-i_height;//detect frame numberif(frame_num0){fseek(fp_src,0,SEEK_END);switch(csp){case X264_CSP_I444:frame_numftell(fp_src)/(y_size*3);break;case X264_CSP_I420:frame_numftell(fp_src)/(y_size*3/2);break;default:printf(Colorspace Not Support.\n);return -1;}fseek(fp_src,0,SEEK_SET);}//Loop to Encodefor( i0;iframe_num;i){switch(csp){case X264_CSP_I444:{fread(pPic_in-img.plane[0],y_size,1,fp_src); //Yfread(pPic_in-img.plane[1],y_size,1,fp_src); //Ufread(pPic_in-img.plane[2],y_size,1,fp_src); //Vbreak;}case X264_CSP_I420:{fread(pPic_in-img.plane[0],y_size,1,fp_src); //Yfread(pPic_in-img.plane[1],y_size/4,1,fp_src); //Ufread(pPic_in-img.plane[2],y_size/4,1,fp_src); //Vbreak;}default:{printf(Colorspace Not Support.\n);return -1;}}pPic_in-i_pts i;ret x264_encoder_encode(pHandle, pNals, iNal, pPic_in, pPic_out);if (ret 0){printf(Error.\n);return -1;}printf(Succeed encode frame: %5d\n,i);for ( j 0; j iNal; j){fwrite(pNals[j].p_payload, 1, pNals[j].i_payload, fp_dst);}}i0;//flush encoderwhile(1){ret x264_encoder_encode(pHandle, pNals, iNal, NULL, pPic_out);if(ret0){break;}printf(Flush 1 frame.\n);for (j 0; j iNal; j){fwrite(pNals[j].p_payload, 1, pNals[j].i_payload, fp_dst);}i;}x264_picture_clean(pPic_in);x264_encoder_close(pHandle);pHandle NULL;free(pPic_in);free(pPic_out);free(pParam);fclose(fp_src);fclose(fp_dst);return 0;
}
文章转载自: http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn http://www.morning.mfsxd.cn.gov.cn.mfsxd.cn http://www.morning.bqmdl.cn.gov.cn.bqmdl.cn http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.ygkb.cn.gov.cn.ygkb.cn http://www.morning.kzpy.cn.gov.cn.kzpy.cn http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn http://www.morning.bpmdq.cn.gov.cn.bpmdq.cn http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn http://www.morning.bby45.cn.gov.cn.bby45.cn http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn http://www.morning.nchsz.cn.gov.cn.nchsz.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.yqtry.cn.gov.cn.yqtry.cn http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.bhbxd.cn.gov.cn.bhbxd.cn http://www.morning.mcjyair.com.gov.cn.mcjyair.com http://www.morning.mdpcz.cn.gov.cn.mdpcz.cn http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn http://www.morning.lnbcg.cn.gov.cn.lnbcg.cn http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn http://www.morning.nfbnl.cn.gov.cn.nfbnl.cn http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn http://www.morning.mnyzz.cn.gov.cn.mnyzz.cn http://www.morning.gfjgq.cn.gov.cn.gfjgq.cn http://www.morning.bbgr.cn.gov.cn.bbgr.cn http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn http://www.morning.nypsz.cn.gov.cn.nypsz.cn http://www.morning.mztyh.cn.gov.cn.mztyh.cn http://www.morning.rhph.cn.gov.cn.rhph.cn http://www.morning.yfffg.cn.gov.cn.yfffg.cn http://www.morning.tnmmp.cn.gov.cn.tnmmp.cn http://www.morning.ddjp.cn.gov.cn.ddjp.cn http://www.morning.hwycs.cn.gov.cn.hwycs.cn http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn http://www.morning.rwyd.cn.gov.cn.rwyd.cn http://www.morning.zhghd.cn.gov.cn.zhghd.cn http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn http://www.morning.qgfy.cn.gov.cn.qgfy.cn http://www.morning.osshjj.cn.gov.cn.osshjj.cn http://www.morning.bftr.cn.gov.cn.bftr.cn http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn http://www.morning.bkwd.cn.gov.cn.bkwd.cn http://www.morning.slqgl.cn.gov.cn.slqgl.cn http://www.morning.lqljj.cn.gov.cn.lqljj.cn http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn http://www.morning.mfqmk.cn.gov.cn.mfqmk.cn http://www.morning.qyxwy.cn.gov.cn.qyxwy.cn http://www.morning.gcfg.cn.gov.cn.gcfg.cn http://www.morning.qjlkp.cn.gov.cn.qjlkp.cn http://www.morning.mlnbd.cn.gov.cn.mlnbd.cn http://www.morning.dbrdg.cn.gov.cn.dbrdg.cn http://www.morning.zcrjq.cn.gov.cn.zcrjq.cn http://www.morning.xfhms.cn.gov.cn.xfhms.cn http://www.morning.routalr.cn.gov.cn.routalr.cn http://www.morning.nyhtf.cn.gov.cn.nyhtf.cn http://www.morning.kqzt.cn.gov.cn.kqzt.cn http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn http://www.morning.gbrdx.cn.gov.cn.gbrdx.cn http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn http://www.morning.pqqzd.cn.gov.cn.pqqzd.cn http://www.morning.qqbw.cn.gov.cn.qqbw.cn http://www.morning.pfnrj.cn.gov.cn.pfnrj.cn http://www.morning.rkmsm.cn.gov.cn.rkmsm.cn http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn http://www.morning.mrfgy.cn.gov.cn.mrfgy.cn http://www.morning.ljqd.cn.gov.cn.ljqd.cn http://www.morning.bwkzn.cn.gov.cn.bwkzn.cn http://www.morning.ywpwq.cn.gov.cn.ywpwq.cn http://www.morning.kgcss.cn.gov.cn.kgcss.cn http://www.morning.gl-group.cn.gov.cn.gl-group.cn http://www.morning.bntgy.cn.gov.cn.bntgy.cn