linux编译ffmpeg支持x264,x265
ffmpeg编译参数详解

ffmpeg编译参数详解ffmpeg是一个开源的音视频处理工具,可以用于音视频的录制、转码、剪辑等操作。
在使用ffmpeg时,我们可以通过编译参数来定制化编译过程,以满足不同的需求。
本文将详细介绍ffmpeg的编译参数。
首先,我们需要了解一些基本的编译参数。
在编译ffmpeg时,我们可以使用--prefix参数来指定安装目录,使用--enable-shared参数来编译共享库,使用--enable-static参数来编译静态库。
此外,还可以使用--disable-xxx参数来禁用某些功能,例如--disable-encoders可以禁用所有编码器,--disable-decoders可以禁用所有解码器。
接下来,我们来看一些常用的编译参数。
首先是--enable-gpl参数,它可以启用GPL许可证。
如果你的项目中使用了GPL许可证的代码,那么你需要使用这个参数来编译ffmpeg。
另外,还有--enable-nonfree 参数,它可以启用非自由许可证。
如果你的项目中使用了非自由许可证的代码,那么你需要使用这个参数来编译ffmpeg。
除了许可证相关的参数,还有一些与功能相关的参数。
例如,--enable-libxxx参数可以启用某个库的支持,例如--enable-libx264可以启用x264编码器的支持,--enable-libfdk-aac可以启用fdk-aac编码器的支持。
另外,还有一些与格式相关的参数,例如--enable-demuxer=xxx可以启用某个解封装器的支持,--enable-muxer=xxx可以启用某个封装器的支持。
此外,还有一些与硬件加速相关的参数。
例如,--enable-vaapi参数可以启用VA-API硬件加速,--enable-vdpau参数可以启用VDPAU硬件加速,--enable-cuda参数可以启用CUDA硬件加速。
这些参数可以提高音视频处理的速度,特别是在处理高分辨率的视频时。
Linux下源码安装ffmpeg及ffmpeg的简单使用说明

Linux下源码安装ffmpeg及ffmpeg的简单使⽤说明⼀、编译安装ffmpeg在安装时依赖的包和版本都很让⼈头疼,不同编译环境也各不相同。
公司之前封装了⼀个⼜各种出错。
其实办法很简单,就是到官⽹⼀步⼀步按着做就⾏了:⾃⼰系统⽤的什么系统,就选择什么系统,照着操作就⾏了。
我选的是“Compiling FFmpeg on CentOS / RHEL / Fedora”唯⼀的不⾜就是ffmpeg的git地址不起作⽤,我使⽤了下⾯的地址进⾏了替换参考⽹址:⼆、使⽤ffmpeg的作⽤:对于图⽚:可以裁剪图⽚,可以把图⽚导出成视频,可以把图⽚嵌⼊到视频中;对与视频:输⼊输出流⽀持⽂件和各种视频流,⽐如hls协议的m3u8播放串、udp流等;可以对视频进⾏转码,⽐如mp4转mpegts,编码率转恒码率等;对视频添加各种信息,主要⽤-metadata字段;视频的剪切封装提取图⽚等等。
主要参数:-i 设定输⼊流-f 设定输出格式-ss 开始时间视频参数:-b 设定视频流量,默认为200Kbit/s-r 设定帧速率,默认为25-s 设定画⾯的宽与⾼-aspect 设定画⾯的⽐例-vn 不处理视频-vcodec 设定视频编解码器,未设定时则使⽤与输⼊流相同的编解码器⾳频参数:-ar 设定采样率-ac 设定声⾳的Channel数-acodec 设定声⾳编解码器,未设定时则使⽤与输⼊流相同的编解码器-an 不处理⾳频-c copy表⽰不改变⾳频视频的格式和内容-muxrate 表⽰指定封装的码率-y 表⽰指定输出⽂件简单的使⽤说明:提取图⽚:ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg视频剪切:ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi视频录制:ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi推送rtmp视频流:./ffmpeg -re -i "bjqn01.mp4" -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://192.168.15.133:1935/myapplive/test1"推送udp流:./ffmpeg -re -i ./test.mp4 -fpre -threads 24 -b:v 1500k -s 720*576 -vsync 0 -ac 2 -ar 48000 -report -loglevel error -f mpegts -yudp://0.0.0.0:10021/test.ts转码:将MP4转换为mpegts的恒流的码率:./ffmpeg -i ./test.mp4 -fpre preset -b:v 30000k -b:a 128k -filter:v yadif=deint=interlaced -maxrate 30000k -minrate 30000k -acodec copy -metadata service_name="FFMPEG" -muxrate 32000k -s 3840x2160 -f mpegts -y /mpeg/output/a.tspreset是⼀个⽂本,只是将⼀些参数封装起来⽽已vcodec=libx264 vprofile=highlevel=4preset=superfastg=25keyint_min=25x264-params=force-cfr=1 rc-lookahead=10sc_threshold=0refs=4subq=6acodec=libfdk_aacb:a=32k。
ffmpeg crf参数

ffmpeg crf参数
CRF(Constant Rate Factor)是FFmpeg中用于控制视频质量
的一个重要参数。
CRF值越低,视频质量越高,但文件大小也越大;反之,CRF值越高,视频质量越低,但文件大小也越小。
CRF参数通
常用于x264和x265编码器。
在FFmpeg中,使用CRF参数进行视频编码时,可以通过以下命
令进行设置:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4。
在这个命令中,-c:v libx264表示使用x264编码器进行视频
编码,-crf 23表示设置CRF参数为23。
CRF参数的取值范围通常
在0-51之间,其中0表示无损压缩,51表示最低质量。
需要注意的是,CRF参数的选择需要权衡视频质量和文件大小
之间的关系。
一般来说,建议先尝试默认值(例如23),然后根据
实际情况进行调整。
如果希望获得更高质量的视频,可以尝试降低CRF值;如果希望减小文件大小,可以尝试增加CRF值。
另外,需要注意的是,不同的视频内容对CRF参数的影响也不同。
例如,细节丰富的视频可能需要更低的CRF值才能保持高质量,而相对简单的视频则可以使用较高的CRF值来实现更好的压缩效果。
总之,CRF参数在FFmpeg中是一个非常重要的控制视频质量的
参数,合理地设置CRF值可以在视频质量和文件大小之间取得平衡,从而获得满意的压缩效果。
linux编译ffmpeg支持x264,x265

linux编译ffmpeg支持x264,x2651. 前言本教程涉及的ffmpeg, x264, x2652. 环境依赖2.1 删除系统中安装的ffmpeg等库[plain] view plain copy1.sudo apt-get --purge remove ffmpeg mplayer x264 x2652.2 安装依赖库[plain] view plain copy1.sudo apt-get update2.sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \3.libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \4.libxcb-xfixes0-dev pkg-config texi2html zlib1g-dev注: 服务器版本可忽略libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码(1) ffmpeg[plain] view plain copy1.git clone git:///ffmpeg.git ffmpeg(2) x264[plain] view plain copy1.<pre name="code" class="plain"><pre name="code" clas s="plain">git clone git:///x264.git(3) x265[plain] view plain copy1.hg clone /multicoreware/x265(4) yasmyasm 是x86平台的一个汇编优化器, 能够加快ffmpeg x264的编译[plain] view plain copy1.wget /projects/yasm/releases/yasm-1.3.0.tar.gz2.tar xzvf yasm-1.3.0.tar.gz3. 编译3.1 配置编译输出目录[plain] view plain copy1.export FFMPEG_PATH="YOUR_PATH"2.export PATH="$FFMPEG_PATH/bin:$PATH"例如我输出目录为$HOME/ffmpeg_2.6.3/build_out那么:[plain] view plain copy1.export FFMPEG_PATH="$HOME/ffmpeg_2.6.3/build_out"3.1 yasm[plain] view plain copy1.cd yasm-1.3.02../configure --prefix="$HOME/"3.make4.make install或者安装已有的库(yasm version ≥ 1.3.0)[plain] view plain copy1.sudo apt-get install yasm3.2 x264在配置ffmpeg config时需要加入--enable-gpl和--enable-libx264[plain] view plain copy1.cd x264*2../configure --prefix="$FFMPEG_PATH" --enable-shared --enable-static3.make -j44.make install5.make clean或者安装已有的库(yasm version ≥ 1.3.0)[plain] view plain copy1.sudo apt-get install libx264-dev3.3 x265[plain] view plain copy1.cd x265/build/linux2.cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$FFMPEG_PATH" -DENABLE_SHARED:bool=off ../../source3.make -j44.make install5.make clean6.</tt></span>3.4 aac在配置ffmpeg config时需要加入--enable-libfdk_aac(如果开启--enable-gpl同时需要开启--enable-nonfree )[plain] view plain copy1.PKG_CONFIG_PATH="$FFMPEG_PATH/lib/pkgconfig" ./co nfigure \2.--prefix="$FFMPEG_PATH" \3.--pkg-config-flags="--static" \4.--extra-cflags="-I$FFMPEG_PATH/include" \5.--extra-ldflags="-L$FFMPEG_PATH/lib" \6.--enable-gpl \7.--enable-libass \8.--enable-libfaac \9.--enable-libfreetype \10.--enable-libmp3lame \11.--enable-libtheora \12.--enable-libvorbis \13.--enable-libx264 \14.--enable-libx265 \15.--enable-nonfree \16.--enable-shared \17.--enable-postproc \18.--enable-x11grab \19.--enable-bzlib \20.--enable-libxvid \21.--enable-zlib \22.--disable-debug4. 将ffmpeg添加到环境变量4.1 将ffmpeg添加到环境变量[plain] view plain copy1.vim ~/.bashrc在最后添加[plain] view plain copy1.export FFMPEG_PATH="/home/guohe/workspace/ffmpeg _2.6.3/build_out"2.export PATH="$FFMPEG_PATH/bin:$PATH"4.2 添加链接库编译完成之后调用ffmpeg 会出现error while loading shared libraries: xxx解决这种问题有2中方法:(1) 修改/etc/ld.so.conf[plain] view plain copy1.vim /etc/ld.so.conf在最后添加[plain] view plain copy1.$FFMPEG_PATH/lib然后执行[plain] view plain copy1.sudo ldconfig(2) 修改LD_LIBRARY_PATH[plain] view plain copy1.vim ~/.bashrc在最后添加[plain] view plain copy1.export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FFMPEG_ PATH/ib。
Linux源码安装ffmpeg

cd /usr/local/src/a52dec-0.7.4/
./configure --enable-shared
make && make install
##### 如果出现以下错误提示 #####
wget https:///project/opencore-amr/opencore-amr/opencore-amr-0.1.5.tar.gz
tar -zxvf opencore-amr-0.1.5.tar.gz -C /usr/local/src/
cd /usr/local/src/lame-3.99.5/
./configure --enable-shared
make && make install
cd -
二、安装libogg
#/downls/ogg/libogg-1.3.2.tar.gz
yum install unzip patch -y
tar -jxvf amrnb-11.0.0.0.tar.bz2 -C /usr/local/src/
cp 26104-610.zip /usr/local/src/amrnb-11.0.0.0/
cd /usr/local/src/amrnb-11.0.0.0/
Linux下ffmpeg的完整安装
首先要安装各种解码器
一、安装lame(MP3音频编码器)
wget https:///project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -zxvf lame-3.99.5.tar.gz -C /usr/local/src/
ffmpeg的编译

ffmpeg的编译全文共四篇示例,供读者参考第一篇示例:FFmpeg是一个开源的跨平台音视频处理工具,它可以进行解码、编码、转码、流媒体处理等多种操作。
FFmpeg支持众多音视频格式,功能强大,使用广泛。
在实际应用中,可能会遇到需要对FFmpeg进行定制编译的情况,以满足自己的需求。
本文将介绍如何编译FFmpeg,并提供一些常见问题的解决方案。
第一步,准备开发环境在编译FFmpeg之前,首先需要准备好开发环境。
FFmpeg的编译过程需要依赖一些开发工具和库文件,这些工具和库文件可以通过包管理工具进行安装。
在不同的操作系统上,具体的安装方法可能有所不同。
在Ubuntu上,可以通过以下命令安装所需的开发工具和库文件:```bashsudo apt-get updatesudo apt-get install build-essentialsudo apt-get install git yasm libx264-dev libx265-dev```第二步,下载FFmpeg源代码接下来,我们需要下载FFmpeg的源代码。
FFmpeg的源代码托管在Git仓库中,可以通过Git工具进行下载。
在命令行中执行以下命令即可下载FFmpeg的源代码:```bashgit clone https:///ffmpeg.git``````bashcd ffmpeg```第三步,配置编译选项在编译FFmpeg之前,需要对其进行配置,配置编译选项。
FFmpeg的配置支持很多参数,可以根据需要进行定制。
通常情况下,我们可以使用以下命令进行配置:--prefix参数指定FFmpeg安装的路径,--enable-gpl参数表示开启GPL许可证的功能,--enable-libx264和--enable-libx265参数表示开启x264和x265编码器的支持。
在配置时,还可以根据实际需要添加其他参数,比如开启其他编码器的支持、开启特定格式的支持等。
ffmpeg 转码参数

ffmpeg 转码参数FFmpeg是一个开源跨平台的音视频处理工具,它可以用于录制、转换和流媒体处理等多种音视频处理任务。
在使用FFmpeg进行转码时,可以通过指定一系列参数来控制转码过程,下面我将从不同角度介绍一些常用的转码参数。
1. 输入输出参数,在使用FFmpeg进行转码时,需要指定输入文件和输出文件的路径,可以使用"-i"参数指定输入文件,使用输出文件路径作为命令的最后一个参数。
2. 视频编解码参数,可以使用"-c:v"参数指定视频编解码器,例如"-c:v libx264"表示使用H.264编码器进行视频编码。
还可以通过"-b:v"参数指定视频的比特率,"-s"参数指定视频的分辨率等。
3. 音频编解码参数,使用"-c:a"参数指定音频编解码器,例如"-c:a aac"表示使用AAC编码器进行音频编码。
可以使用"-b:a"参数指定音频的比特率,"-ar"参数指定音频的采样率等。
4. 视频滤镜参数,可以使用"-vf"参数指定视频滤镜,例如"-vf scale=1280:720"表示将视频缩放到1280x720的分辨率。
还可以使用"-af"参数指定音频滤镜。
5. 格式参数,可以使用"-f"参数指定输出文件的格式,例如"-f mp4"表示将输出文件格式设置为MP4。
6. 其他参数,除了上述参数外,还可以使用一些其他参数来控制转码过程,例如"-preset"参数用于指定转码速度和质量的预设值,"-t"参数用于指定转码的时长等。
总的来说,使用FFmpeg进行转码时,需要根据具体的需求选择合适的参数来控制转码过程,以达到所需的转码效果。
ffmpeg应用x264编码,编码参数解析-wfqxx的专栏-CSDN博客

ffmpeg应用x264编码,编码参数解析-wfqxx的专栏-CSDN博客应用X264进行H.264编码,如果编码不能成功,大部分情况是编码参数选择不正确请看图片:这里边的编码参数大家应该看到了吧,那么如果我们用ffmpeg怎么设置这些编码参数呢?代码为证:view plaincopy to clipboardprint?1.m_VCtx->codec_type = CODEC_TYPE_VIDEO;2.m_VCtx->bit_rate = bitrate * 1000;3.m_VCtx->width = width;4.m_VCtx->height = height;5.m_VCtx->time_base.den = fps;6.m_VCtx->time_base.num = 1;7.m_VCtx->gop_size = fps * 10;8.//m_VCtx->gop_size = 1;9.m_VCtx->crf = 26;10.m_VCtx->refs = 3;11.m_VCtx->flags2 = CODEC_FLAG2_MIXED_REFS;12.m_VCtx->max_b_frames = 3;13.m_VCtx->deblockbeta = -1;14.m_VCtx->deblockalpha = -1;15.m_VCtx->trellis = 2;16.m_VCtx->partitions = X264_PART_I4X4 | X264_PART_I8 X8 | X264_PART_P8X8 | X264_PART_P4X4 | X264_PART_B8X8;17.m_VCtx->flags2 |= CODEC_FLAG2_8X8DCT;18.m_VCtx->me_method = 8;19.m_VCtx->me_range = 16;20.m_VCtx->me_subpel_quality = 7;21.m_VCtx->qmin = 10;22.m_VCtx->qmax = 51;23.m_VCtx->rc_initial_buffer_occupancy = 0.9;24.m_VCtx->i_quant_factor = 1.0 / 1.40f; // x4->params.rc.f_ip_factor = 1 / fabs(avctx->i_quant_factor);25.m_VCtx->b_quant_factor = 1.30f;26.m_VCtx->chromaoffset = 0;27.m_VCtx->max_qdiff = 4;28.m_VCtx->qcompress = 0.6f;29.m_VCtx->complexityblur = 20.0f;30.m_VCtx->qblur = 0.5f;31.m_VCtx->directpred = 1;32.m_VCtx->noise_reduction = 0;33.m_VCtx->pix_fmt = PIX_FMT_YUV420P;34.35.m_VCtx->thread_count = 1;36.m_VCtx->scenechange_threshold = 40;37.m_VCtx->bframebias = 0;38.m_VCtx->flags2 |= CODEC_FLAG2_AUD;39.m_VCtx->coder_type = FF_CODER_TYPE_AC;40.m_VCtx->flags |= CODEC_FLAG_LOOP_FILTER;41.m_VCtx->me_cmp = FF_CMP_CHROMA;42.m_VCtx->flags2 |= CODEC_FLAG2_FASTPSKIP;43.m_VCtx->flags2 |= CODEC_FLAG2_BPYRAMID;44.m_VCtx->flags2 |= CODEC_FLAG_NORMALIZE_AQP;45.m_VCtx->flags2 |= CODEC_FLAG2_WPRED;46.m_VCtx->keyint_min = 25;47.m_VCtx->flags2 |= CODEC_FLAG2_MBTREE;48.49.// m_VCtx->rc_min_rate =1024 * 1000;50.// m_VCtx->rc_max_rate = 1024 * 1000;51.// m_VCtx->bit_rate_tolerance = 1024 * 1000;52.// m_VCtx->rc_buffer_size=1024 * 1000;53.// m_VCtx->rc_initial_buffer_occupancy = m_VCtx->rc _buffer_size*3/4;54.// m_VCtx->rc_buffer_aggressivity= (float)1.0;55.// m_VCtx->rc_initial_cplx= 0.5;56.57.//m_VCtx->ticks_per_frame = 2;58.m_VCtx->level = 30;59.m_VCtx->b_frame_strategy = 2;60.m_VCtx->codec_tag = 7; // FLV must not = 0 {CODEC_ID_H264, FLV_CODECID_H264 },。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux 编译ffmpeg 支持x264, x265
1. 前言
本教程涉及的ffmpeg, x264, x2652. 环境依赖
2.1 删除系统中安装的ffmpeg等库
[plain] view plain copy sudo apt-get --purge remove ffmpeg mplayer x264 x265
2.2 安装依赖库
[plain] view plain copy sudo apt-get update sudo apt-get -y --force-yes install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev \ libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \ libxcb-xfixes0-dev
pkg-config texi2html zlib1g-dev
注: 服务器版本可忽略
libsdl1.2-dev libva-dev libvdpau-dev libxcb1-dev
libxcb-shm0-dev libxcb-xfixes0-dev2.3 下载源代码
(1) ffmpeg
[plain] view plain copy git clone
git:///ffmpeg.git ffmpeg
(2) x264[plain] view plain copy <pre name="code"
class="plain"><pre name="code" class="plain">git clone git:///x264.git (3) x265[plain] view plain copy hg clone
https:///multicoreware/x265
(4) yasm
yasm 是x86平台的一个汇编优化器, 能够加快ffmpeg
x264的编译
[plain] view plain copy wget
/projects/yasm/releases/yasm-1.3.0.ta r.gz tar xzvf yasm-1.3.0.tar.gz
3. 编译
3.1 配置编译输出目录
[plain] view plain copy export
FFMPEG_PATH="YOUR_PATH" export
PATH="$FFMPEG_PATH/bin:$PATH" 例如我输出目录为$HOME/ffmpeg_2.6.3/build_out
那么:
[plain] view plain copy export
FFMPEG_PATH="$HOME/ffmpeg_2.6.3/build_out"
3.1 yasm
[plain] view plain copy cd yasm-1.3.0 ./configure
--prefix="$HOME/" make make install
或者安装已有的库(yasm version ≥ 1.3.0)
[plain] view plain copy sudo apt-get install yasm 3.2 x264 在配置ffmpeg config时需要加入--enable-gpl和
--enable-libx264
[plain] view plain copy cd x264* ./configure
--prefix="$FFMPEG_PATH" --enable-shared
--enable-static make -j4 make install make clean 或者安装已有的库(yasm version ≥ 1.3.0)[plain] view plain copy sudo apt-get install libx264-dev 3.3 x265
[plain] view plain copy cd x265/build/linux cmake -G "Unix Makefiles"
-DCMAKE_INSTALL_PREFIX="$FFMPEG_PATH"
-DENABLE_SHARED:bool=off ../../source make -j4 make install make clean </tt></span>
3.4 aac
在配置ffmpeg config时需要加入--enable-libfdk_aac(如果
开启--enable-gpl同时需要开启--enable-nonfree ) [plain] view plain copy
PKG_CONFIG_PATH="$FFMPEG_PATH/lib/pkgconfig" ./ configure \ --prefix="$FFMPEG_PATH" \
--pkg-config-flags="--static" \
--extra-cflags="-I$FFMPEG_PATH/include" \
--extra-ldflags="-L$FFMPEG_PATH/lib" \ --enable-gpl \ --enable-libass \ --enable-libfaac \
--enable-libfreetype \ --enable-libmp3lame \
--enable-libtheora \ --enable-libvorbis \
--enable-libx264 \ --enable-libx265 \
--enable-nonfree \ --enable-shared \
--enable-postproc \ --enable-x11grab \
--enable-bzlib \ --enable-libxvid \ --enable-zlib \
--disable-debug
4. 将ffmpeg添加到环境变量
4.1 将ffmpeg添加到环境变量
[plain] view plain copy vim ~/.bashrc 在最后添加[plain] view plain copy export
FFMPEG_PATH="/home/guohe/workspace/ffmpeg_2.6.3/ build_out" export PATH="$FFMPEG_PATH/bin:$PATH"
4.2 添加链接库编译完成之后调用ffmpeg 会出现error
while loading shared libraries: xxx
解决这种问题有2中方法:
(1) 修改/etc/ld.so.conf
[plain] view plain copy vim /etc/ld.so.conf
在最后添加[plain] view plain copy $FFMPEG_PATH/lib
然后执行
[plain] view plain copy sudo ldconfig (2) 修改
LD_LIBRARY_PATH
[plain] view plain copy vim ~/.bashrc 在最后添加[plain] view plain copy export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FFMPEG_P ATH/ib。