linux编译ffmpeg支持x264,x265

合集下载

ffmpeg编译参数详解

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的简单使用说明

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参数

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,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

Linux源码安装ffmpeg
tar -zxvf a52dec-0.7.4.tar.gz -C /usr/local/src/
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之前,首先需要准备好开发环境。

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是一个开源跨平台的音视频处理工具,它可以用于录制、转换和流媒体处理等多种音视频处理任务。

在使用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博客

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 },。

交叉编译ffmpeg + x264 编码H264 (arm Linux

交叉编译ffmpeg + x264 编码H264 (arm Linux
make CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-gcc RANLIB=arm-linux-ranlib STRIP=arm-linux-strip
由于我电脑上的交叉编译器是从以下目录去查找头文件和库的,所以把x264.h和libx264.a拷贝到相应目录:(我是通过在/usr/local/4.3.3下查找pthread.h和libpthread.a来获取这个目录的)
cp x264.h /usr/local/4.3.3/arm-none-linux-gnueabi/libc/usr/include/
cp libx264.a /usr/local/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib/ Leabharlann 2、 编译ffmpeg
ffmpeg + x264 编码H264 (arm Linux) (2010-12-07 21:08:02)转载
标签: ffmpeg x264
arm linux 平台
1、 交叉编译x264
我用的是目前最新版:x264-snapshot-20101130-2245.tar.bz2
./configure --enable-pthread --enable-static --disable-shared --host=arm-linux --disable-asm
我用的是目前最新版:ffmpeg-0.6.1.tar.gz
./configure --enable-cross-compile --arch=arm --target-os=linux --enable-static --disable-shared --cc=arm-linux-gcc --enable-libx264 --enable-gpl --disable-network --disable-mpegaudio-hp --enable-pthreads --enable-small --disable-parsers --disable-debug

ffmpeg 压片 参数

ffmpeg 压片 参数

ffmpeg 压片参数
FFmpeg是一个开源的跨平台的音视频处理工具,它可以用来进行音视频的压缩、转码、剪辑等操作。

在使用FFmpeg进行视频压片时,可以通过一系列参数来控制压片的质量、大小和格式等。

首先,可以使用参数“-i”指定输入文件,然后使用参数“-c:v”指定视频编码器,例如“libx264”用于H.264编码。

接着可以使用参数“-b:v”指定视频的比特率,例如“2M”表示2Mbps的比特率。

还可以使用参数“-s”指定视频的分辨率,例如
“1280x720”表示720p分辨率。

此外,还可以使用参数“-r”指定视频的帧率,例如“30”表示30帧每秒。

对于音频部分,可以使用参数“-c:a”指定音频编码器,例如“aac”用于AAC编码。

可以使用参数“-b:a”指定音频的比特率,例如“128k”表示128kbps的比特率。

还可以使用参数“-ar”指定音频的采样率,例如“44100”表示44.1kHz的采样率。

除了上述参数外,还可以使用其他参数来控制视频的编解码、滤镜效果、水印添加等操作。

需要根据具体的需求来选择合适的参数进行设置,以达到所需的压片效果。

需要注意的是,压片操作可能会损失一定的画质和音质,因此在设置参数时需要权衡压片效果和文件质量之间的关系,以达到最佳的压片效果。

建议在压片前对不同参数进行测试,以找到最适合的参数组合。

ffmpeg编译参数说明

ffmpeg编译参数说明

ffmpeg编译参数说明【原创版】目录1.FFmpeg 简介2.FFmpeg 编译参数分类3.常见编译参数及其用法4.参数设置示例5.总结正文FFmpeg 是一款开源的音视频处理软件,广泛应用于视频剪辑、格式转换、拼接、音频转换等领域。

它的强大功能得益于丰富的编译参数,使得开发者可以根据需求定制适合自己的版本。

下面我们来详细介绍一下FFmpeg 的编译参数。

FFmpeg 编译参数主要分为以下几个类别:1.编译选项:这类参数主要用于控制编译过程中的各种选项,如优化、调试等。

常见的编译选项包括`-O`(优化级别)、`-O2`(更高级别的优化)、`-g`(开启调试)、`-pg`(开启程序运行时性能分析)等。

2.链接选项:这类参数主要用于控制链接过程中的库文件,如指定链接的库文件、排除某些库文件等。

常见的链接选项包括`-l`(链接库文件)、`-L`(指定链接库文件的目录)、`-Wl,-rpath`(设置运行时库文件的路径)等。

3.输出选项:这类参数主要用于控制编译后输出文件的格式、名称等。

常见的输出选项包括`-o`(输出文件名)、`-c`(输出文件的编码方式)、`-b:v`(输出视频流的码率)等。

4.输入选项:这类参数主要用于控制编译过程中输入文件的格式、路径等。

常见的输入选项包括`-i`(输入文件名)、`-c:v`(输入视频流的编码方式)、`-c:a`(输入音频流的编码方式)等。

5.处理器选项:这类参数主要用于控制编译过程中使用的处理器架构,如 CPU、GPU 等。

常见的处理器选项包括`-cpu-type`(指定 CPU 类型)、`-硬件编码`(使用硬件编码器进行编码)等。

下面我们举一个参数设置示例,以帮助大家更好地理解这些编译参数:```ffmpeg -O2 -g -pg -o output.mp4 -i input.avi -c:v libx264 -b:v 1000k -c:a aac -strict -2```这个命令的含义如下:- 使用`-O2`选项进行优化编译。

ubuntu下编译ffmpeg+x264库(android和Linux)

ubuntu下编译ffmpeg+x264库(android和Linux)

ubuntu下编译ffmpeg+x264库(android和Linux)前⾔言ffmpeg是⼀一个跨平台的⾳音视频处理理库,为了了跨平台那么就需要编译出适⽤用于各个平台的ffmpeg库。

前⽂文分别实现了了在windows平台和Mac平台下编译安卓,mac,windows使⽤用的库,本⽂文的⽬目的就是在Linux 平台下编译⽤用于Linux和安卓使⽤用的ffmpeg库。

这⾥里里采⽤用的Linux为Ubuntu系统,基本上Mac平台的编译脚本只需要做少量量的修改就可以移植到Ubuntu系统。

编译环境准备1、安装Ubuntu系统虚拟机:我这⾥里里⽤用的是Mac电脑(ps:mac电脑的可以直接使⽤用脚本编译android的库,⽆无需费⼒力力装linux虚拟机),windows操作系统⾃自⾏行行Google。

ubuntu系统版本:Ubuntu 18.04.4 LTS虚拟机:VirtualBox 6.1tips:记得更更换ubuntu的源,步骤如下:1、⾸首先备份源列列表sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup2、打开sources.list⽂文件sudo gedit /etc/apt/sources.list3、编辑/etc/apt/sources.list⽂文件, 在⽂文件最前⾯面添加镜像源,这⾥里里添加的为163的源地址#163源deb /ubuntu/ bionic main restricted universe multiverse deb /ubuntu/ bionic-security main restricted universe multiversedeb /ubuntu/ bionic-updates main restricted universe multiversedeb /ubuntu/ bionic-proposed main restricted universe multiversedeb /ubuntu/ bionic-backports main restricted universe multiversedeb-src /ubuntu/ bionic main restricted universemultiversedeb-src /ubuntu/ bionic-security main restricted universe multiversedeb-src /ubuntu/ bionic-updates main restricted universe multiversedeb-src /ubuntu/ bionic-proposed main restricted universe multiversedeb-src /ubuntu/ bionic-backports main restricteduniverse multiverse4、刷新源列列表(此命令要执⾏行行,因为可以更更新安装Linux下的基本命令库)sudo apt-get updatesudo apt-get upgradesudo apt-get install build-essentialtips 其它源地址参考⽂文章ubuntu 18.04更更换源地址编译android 的ffmpeg库1、下载ffmpeg编译脚本git clone https:///nldzsz/ffmpeg-build-scripts.gitcd ffmpeg-build-scripts2、打开./compile-ffmepg-android.sh脚本,填写如下的信息# 编译的API级别 (最⼩小5.0以上系统)export FF_ANDROID_API=21# 根据实际情况填写ndk路路径# windows,linux,mac平台有各⾃自对应的ndk版本下载地址https:///ndk/downloads#export NDK_PATH=C:/cygwin64/home/Administrator/android-ndk-r21b#export NDK_PATH=/Users/apple/devoloper/mine/android/android-ndk-r17c#export NDK_PATH=/Users/apple/devoloper/mine/android/android-ndk-r20bexport NDK_PATH=/home/zsz/android-ndk-r20b# 开启编译动态库,默认开启export FF_COMPILE_SHARED=TRUE# 开启编译静态库,默认关闭,动态库和静态库同时只能开启⼀一个,不不然导⼊入android使⽤用时会出错export FF_COMPILE_STATIC=FALSE# windows下统⼀一⽤用bat脚本来⽣生成独⽴立⼯工具编译⽬目录(因为低于18的ndk库中的make_standalone_toolchain.py脚本在cygwin中执⾏行行会出错)exportWIN_PYTHON_PATH=C:/Users/Administrator/AppData/Local/Programs/Python/Python38-32/python.exe# 是否将这些外部库添加进去;如果不不添加则将对应的值改为FALSE即可;默认添加2个库export lIBS=(x264 fdk-aac mp3lame)export LIBFLAGS=(TRUE FALSE TRUE)FF_ANDROID_API 代表编译采⽤用的API级别,例例⼦子为21,代表ffmpeg库要5.0以上系统才可以使⽤用NDK_PATH 代表ndk的具体路路径LIBFLAGS代表是否编译对应的第三⽅方库,为TRUE代表安装,FALSE则不不安装3、开始编译执⾏行行指令./compile-ffmpeg-android all等待⼏几分钟分钟即可编译armv7a和arm64两个平台的ffmpeg,最后⽬目录如下:4、在android studio中使⽤用ffmpeg库导⼊入android⼯工程,通过cmake⽅方式导⼊入CMakeLists.txt⽂文件导⼊入ffmpeg动态库的关键代码如下:设置ffmpeg头⽂文件路路径set(SRC_DIR ${PROJECT_SOURCE_DIR}/src/main/cpp)set(FFMPEG_INC ${SRC_DIR}/ffmpeg)include_directories(${FFMPEG_INC})设置ffmpeg.so动态库⽂文件路路径# import ffmpeg libraryset(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/src/main/jniLibs/${CMAKE_ANDROID_ARCH_ABI}")# ding yi jiang gai ku da bao jin app de lei xingadd_library(adMedia SHARED${src_cpp}${ffmpeg_demo}${ffmpeg_common}${com_cpp}${opensles_cpp})target_link_libraries(adMedia android logOpenSLESmediandkavformat avcodec avfilter avutil swresample swscale${log-lib})5、遇到问题:1、编译fdk-aac时提示提示"configure.ac:7: error: version mismatch. This is Automake 1.15.1"分析原因:下载的fdk-aac源码⽬目录已经⽣生成的configure.ac中的配置信息和Linux系统⾃自带的AutoMake 不不匹配所致解决⽅方案:执⾏行行./configure前先⽤用命令autoreconf重新⽣生成configure.ac即可,具体参考android/do-compile-fdk-aac.sh编译脚本6、总结建议windows系统⽤用虚拟机安装Ubuntu系统的⽅方式来编译android⽤用的ffmpeg库,⽽而⾮非前⽂文采⽤用的cygwin,理理由很简单,编译速度快,⼏几分钟就可以完成⾸首次编译,⽽而且坑少;⽽而cygwin基本30分钟以上,且编译库时各种问题(毕竟cygwin始终是通过模拟Linux系统环境实现的)。

Linux下交叉编译FFmpeg

Linux下交叉编译FFmpeg
mkdir build cd build ../configure --enable-static --enable-shared --host=arm-linux-gnueabihf make make instalit clone https:///FFmpeg/FFmpeg.git
Linux下交叉编译 FFmpeg
首先编译 x264 安装
下载
wget ftp:///pub/x264/snapshots/last_stable_x264.tar.bz2
解压
tar jxvf x264-snapshot-20191216-2245.tar.bz2
编译安装
make make install
其中,--extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib 用来指定libx264的路径,需要--extra-libs=-ldl才能查找到libx264的路径,--enable-pic 如果静态地编译 FFmpeg库,并且想要使用它们来构建自己的共享库,则可能需要强制PIC支持
安装
cd FFmpeg mkdir build cd build ../configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --enable-sws

ffmpeg编码格式

ffmpeg编码格式

ffmpeg编码格式FFmpeg 是一个开源的多媒体处理工具,支持包括音频、视频、字幕等多种多媒体格式的编解码。

下面是一些常见的FFmpeg 支持的编码格式:1. 视频编码格式:- H.264(libx264):一种广泛使用的视频编码标准,常用于高清视频和在线视频流。

- H.265(libx265):也称为HEVC(High Efficiency Video Coding),是H.264 的继任者,具有更高的压缩效率。

- VP9:Google 开发的开放式视频编码格式,用于WebM 格式的视频。

- AV1:一种由Alliance for Open Media 开发的开放式视频编码格式,旨在提供更高的压缩效率。

2. 音频编码格式:- AAC(libfdk_aac):一种广泛使用的音频编码格式,通常用于存储和流媒体。

- MP3(libmp3lame):一种常见的音频编码格式,用于音乐和广播等领域。

- Opus:一种开放式的音频编码格式,旨在提供高质量的音频流。

- Vorbis:一种开放式的音频编码格式,通常用于Ogg 文件格式。

3. 容器格式:- MP4:一种常见的多媒体容器格式,支持视频、音频和字幕。

- MKV(Matroska):一种开放式的多媒体容器格式,支持包含多个音频、视频、字幕流的文件。

- WebM:一种开放式的多媒体容器格式,用于Web 视频,通常包含VP9 视频和Opus 音频。

- AVI:一种老旧的多媒体容器格式,仍然在一些场景中使用。

4. 字幕格式:- SRT(SubRip):一种简单的文本字幕格式,常用于存储和传输视频字幕。

- ASS/SSA:Advanced SubStation Alpha/SubStation Alpha,一种高级字幕格式,支持丰富的样式和效果。

上述列举的是一些常见的编码和容器格式,实际上FFmpeg 支持众多的编码和容器格式,具体支持的编解码器和容器格式取决于FFmpeg 编译时使用的配置。

交叉编译ffmpeg+x264编码H264(armLinux

交叉编译ffmpeg+x264编码H264(armLinux

交叉编译ffmpeg+x264编码H264(armLinuxffmpeg + x264 编码H264 (arm Linux) (2010-12-07 21:08:02)转载标签: ffmpeg x264arm linux 平台1、交叉编译x264我用的是目前最新版:x264-snapshot-20101130-2245.tar.bz2 ./configure --enable-pthread --enable-static --disable-shared --host=arm-linux --disable-asmmake CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-gcc RANLIB=arm-linux-ranlib STRIP=arm-linux-strip由于我电脑上的交叉编译器是从以下目录去查找头文件和库的,所以把x264.h和libx264.a拷贝到相应目录:(我是通过在/usr/local/4.3.3下查找pthread.h和libpthread.a来获取这个目录的)cp x264.h /usr/local/4.3.3/arm-none-linux-gnueabi/libc/usr/include/cp libx264.a /usr/local/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib/2、编译ffmpeg我用的是目前最新版:ffmpeg-0.6.1.tar.gz./configure --enable-cross-compile --arch=arm --target-os=linux --enable-static --disable-shared --cc=arm-linux-gcc --enable-libx264 --enable-gpl --disable-network --disable-mpegaudio-hp --enable-pthreads --enable-small --disable-parsers --disable-debugmake CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-gcc RANLIB=arm-linux-ranlib STRIP=arm-linux-strip。

LINUX下编译ffmpeg-x264

LINUX下编译ffmpeg-x264

LINUX下编译ffmpeg-x2641版本:X264.r663,ffmpeg.r94532yasm2.1 下载yasm新版本要安裝x264,就需要用yasm來編譯。

那就先裝個yasm吧。

yasm下載網址:/projects/yasm/releases/yasm-0.6.0.tar.gz2.2 编译安装#tar xzvf yasm-0.6.0.tar.gz#cd yasm-0.6.0#./configure --prefix=/usr/local/yasm#make#make instal l3x2643.1 编译3.1.1编译静态库3.1.2编译动态库3.2 安装由于一般ffmpeg采用静态连接x264,所以只需要编译安装x264静态库#cp libx264.a /usr/lib#cp x264.h /usr/include4ffmpeg4.1 下载到FFmpeg官方下载最新的FFmpeg版本。

CVS服务器地址如下:cvs -z9 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co ffmpeg。

现在已改成SVN下载:svn://svn.mplayerhq.hu/ffmpeg4.2 编译安装#./configure --enable-shared --disable-static --enable-memalign-hack --enable-libx264 --enable-gpl --enable-pthreads#make#make installmake install结果:1)头文件:/usr/local/include/ffmpeg-rw-r--r-- 1 root root 5180 7月 3 17:18 swscale.h-rw-r--r-- 1 root root 3053 7月 3 17:18 rtsp.h-rw-r--r-- 1 root root 1712 7月 3 17:18 rtspcodes.h-rw-r--r-- 1 root root 3797 7月 3 17:18 rtp.h-rw-r--r-- 1 root root 7647 7月 3 17:18 rgb2rgb.h-rw-r--r-- 1 root root 3062 7月 3 17:18 rational.h-rw-r--r-- 1 root root 2408 7月 3 17:18 random.h-rw-r--r-- 1 root root 3087 7月 3 17:18 opt.h-rw-r--r-- 1 root root 2044 7月 3 17:18 mem.h-rw-r--r-- 1 root root 1174 7月 3 17:18 md5.h-rw-r--r-- 1 root root 1767 7月 3 17:18 mathematics.h-rw-r--r-- 1 root root 1132 7月 3 17:18 lzo.h-rw-r--r-- 1 root root 3599 7月 3 17:18 log.h-rw-r--r-- 1 root root 1302 7月 3 17:18 intfloat_readwrite.h-rw-r--r-- 1 root root 2343 7月 3 17:18 integer.h-rw-r--r-- 1 root root 2943 7月 3 17:18 fifo.h-rw-r--r-- 1 root root 9315 7月 3 17:18 common.h-rw-r--r-- 1 root root 1223 7月 3 17:18 base64.h-rw-r--r-- 1 root root 6020 7月 3 17:18 avutil.h-rw-r--r-- 1 root root 2494 7月 3 17:18 avstring.h-rw-r--r-- 1 root root 9406 7月 3 17:18 avio.h-rw-r--r-- 1 root root 31796 7月 3 17:18 avformat.h-rw-r--r-- 1 root root 95102 7月 3 17:18 avcodec.h-rw-r--r-- 1 root root 993 7月 3 17:18 adler32.h2)库文件:/usr/local/libdrwxr-xr-x 2 root root 4096 7月 3 17:18 vhookdrwxr-xr-x 2 root root 4096 7月 3 17:18 pkgconfig-rwxr-xr-x 1 root root 29412 7月 3 17:18 libavutil.so.49.4.1lrwxrwxrwx 1 root root 19 7月 3 17:18 libavutil.so.49 -> libavutil.so.49.4.1lrwxrwxrwx 1 root root 19 7月 3 17:18 libavutil.so -> libavutil.so.49.4.1-rwxr-xr-x 1 root root 557856 7月 3 17:18 libavformat.so.51.12.1lrwxrwxrwx 1 root root 22 7月 3 17:18 libavformat.so.51 -> libavformat.so.51.12.1lrwxrwxrwx 1 root root 22 7月 3 17:18 libavformat.so -> libavformat.so.51.12.1-rwxr-xr-x 1 root root 4105568 7月 3 17:18 libavcodec.so.51.40.4lrwxrwxrwx 1 root root 21 7月 3 17:18 libavcodec.so.51 -> libavcodec.so.51.40.4lrwxrwxrwx 1 root root 21 7月 3 17:18 libavcodec.so -> libavcodec.so.51.40.44.3 合并libavcodec和libavutil1)新建一个目录make_my2)拷贝需要的.o文件a)#cp ffmpeg/libavcodec/*.o make_myb)#mkdir make_my/i386c)#cp ffmpeg/libavcodec/i386/*.o make_my/i386d)#cp ffmpeg/libavutil/*.o make_my3)合并libavcodec和libavutil成一个库(注意路径问题)gcc -shared -Wl,-soname,libavcodec.so.51 -pthread -rdynamic -export-dynamic -Wl,--warn-common -Wl,--as-needed -Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavcodec-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavformat-Wl,-rpath-link,"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -o libavcodec.so.51 bitstream.o utils.o allcodecs.o mpegvideo.o jrevdct.o jfdctfst.o jfdctint.o resample.o resample2.o dsputil.o motion_est.o imgconvert.o mpeg12.o simple_idct.o ratecontrol.o eval.o error_resilience.o raw.o faandct.o parser.o rangecoder.o h263.o opt.o bitstream_filter.o audioconvert.o imgresample.o i386/fdct_mmx.o i386/cputest.o i386/dsputil_mmx.o i386/mpegvideo_mmx.o i386/motion_est_mmx.oi386/simple_idct_mmx.o i386/idct_mmx_xvid.o i386/fft_sse.o i386/fft_3dn.o i386/fft_3dn2.o aasc.o ac3enc.o ac3tab.o ac3.o alac.o asv1.o atrac3.o mdct.o fft.o avs.o bethsoftvideo.o bmp.o bmpenc.o c93.o cavs.o cavsdsp.o golomb.o cinepak.o cljr.o cook.o cscd.o cyuv.o dca.o dnxhddec.o dsicinav.o dvbsubdec.o dvbsub.o dvdsubdec.o dvdsubenc.o dv.o dxa.o 8bps.o ffv1.o huffyuv.o flac.o flacenc.o flashsv.o flashsvenc.o flicvideo.o 4xm.o fraps.o gifdec.o lzw.o gif.o h261dec.o h261.o h261enc.o h263dec.o h264.o h264idct.o cabac.o idcinvideo.o imc.o indeo2.o indeo3.o interplayvideo.o dpcm.o jpeglsdec.o jpegls.o mjpegdec.o mjpeg.o jpeglsenc.o kmvc.o ljpegenc.o mjpegenc.o loco.o mace.o mjpegbdec.o mmvideo.o mpegaudiodec.o mpegaudiodecheader.o mpegaudio.o mpegaudiodata.o mpegaudioenc.o mpc.o msmpeg4.o msmpeg4data.o msrle.o msvideo1.o lcl.o nuv.o rtjpeg.o pnmenc.o pnm.o png.o ptx.o qdm2.o qdrw.o qpeg.o qtrle.o qtrleenc.o ra144.o ra288.o roqvideodec.o roqvideo.o roqvideoenc.o elbg.o roqaudioenc.o rpza.o rv10.o sgidec.o sgienc.o rle.o shorten.o smacker.o smc.o snow.o sonic.o sp5xdec.o svq1.o targa.o targaenc.o vp3.o xiph.o vp3dsp.o tiertexseqv.o tiff.o tiffenc.o lzwenc.o truemotion1.o truemotion2.o truespeech.o tscc.o tta.o txd.o s3tc.o ulti.o vc1.o vc1data.o vc1dsp.o vcr1.o vmdav.o vmnc.o vorbis_dec.o vorbis.o vorbis_data.o vorbis_enc.o vp5.o vp56.o vp56data.o vp6.o vqavideo.o wavpack.o wmadec.o wma.o wmaenc.o wnv1.o ws-snd1.o xan.o xl.o zmbv.o zmbvenc.o pcm.o adpcm.o adx.o g726.o libx264.o aac_parser.o aac_ac3_parser.o ac3_parser.o cavs_parser.o dca_parser.o dvbsub_parser.o dvdsub_parser.o h261_parser.o h263_parser.o h264_parser.o mjpeg_parser.o mpeg4video_parser.o mpegaudio_parser.o mpegvideo_parser.o pnm_parser.o vc1_parser.o dump_extradata_bsf.o remove_extradata_bsf.o noise_bsf.o mp3_header_compress_bsf.o mp3_header_decompress_bsf.o mjpega_dump_header_bsf.o imx_dump_header_bsf.o pthread.o i386/idct_mmx.o i386/cavsdsp_mmx.o i386/snowdsp_mmx.o i386/vp3dsp_mmx.o i386/vp3dsp_sse2.o tree.o string.o rational.o random.o mem.o md5.o mathematics.o lzo.o log.o lls.o intfloat_readwrite.o fifo.o crc.o base64.o aes.o adler32.o -L"/home/wncheng/vtapp/ffmpeg/ffmpeg.r9453"/libavutil -lavutil -lm -lz -lx264 -ldl5问题1)configure时提示“bad interpreter”答:vi configure然后:set ff=unix2) configure时提示“某文件权限问题”答:chmod +x filename。

ffmpeg 编译选项 格式

ffmpeg 编译选项 格式

题目:ffmpeg编译选项解析正文:一、引言最近,随着视频处理技术的飞速发展,越来越多的开发者开始涉及到视频编解码和处理的工作。

而ffmpeg作为一个开源的跨评台多媒体处理工具,备受众多开发者的青睐。

在使用ffmpeg时,编译选项是非常重要的,它可以影响到ffmpeg的功能和性能表现。

学习ffmpeg的编译选项是十分必要的。

二、常见的ffmpeg编译选项1. --enable-libx264:这个选项用于启用libx264,libx264是一个优秀的H.264编码器,很多场景下都会用到。

2. --enable-libopus:这个选项用于启用libopus,libopus是一个优秀的音频编解码器,通常在音频处理领域会使用到。

3. --enable-libvpx:这个选项用于启用libvpx,libvpx是一个开源的VP8和VP9编解码器,适用于WebM格式。

4. --enable-gpl:这个选项用于启用GPL软件,一般情况下,如果你的项目是开源的,可以启用这个选项。

5. --enable-libfreetype:这个选项用于启用libfreetype,libfreetype是一个用于渲染文本的库,如果你需要在视频中加入文本,可以启用这个选项。

三、常用的ffmpeg编译选项详解1. --enable-libx264启用libx264后,ffmpeg就可以使用x264库进行H.264的编码和解码。

这个选项是非常常用的,因为H.264是目前应用最广泛的视频编码格式之一,例如在视频会议、在线直播等场景中,H.264都是非常常用的。

如果你的项目涉及到H.264编码解码,一般都会启用这个选项。

2. --enable-libopus启用libopus后,ffmpeg就可以使用opus库进行音频的编码和解码。

Opus是一种新型的可变比特率音频编解码器,它在音频通话、网络流媒体等场景中有着广泛的应用。

如果你的项目需要音频的处理,那么启用这个选项是非常必要的。

FFmpeg开发环境构建

FFmpeg开发环境构建

FFmpeg开发环境构建本⽂为作者原创,转载请注明出处:1. 相关资源介绍本⽂主要讲述 linux 平台 x86(及x86-64) 架构下的 ffmpeg 编译安装过程。

其他嵌⼊式平台需要交叉编译,过程类似,不详述。

本实验在 opensuse 和 ubuntu 两个平台作了验证。

使⽤lsb_release -a命令查看系统发⾏版版本:opensuse 平台版本:openSUSE Leap 15.1。

ubuntu 平台版本:Ubuntu 16.04.5 LTS。

1.1 ffmpegffmpeg官⽹:1.2 SDLSDL(Simple DirectMedia Layer) 是⼀套开源的跨平台多媒体开发库。

SDL提供了数种控制图像、声⾳、输出输⼊的函数,封装了复杂的视⾳频底层操作,简化了视⾳频处理的难度。

⽬前SDL多⽤于开发游戏、模拟器、媒体播放器等多媒体应⽤领域。

SDL 官⽹:1.3 yasm/nasm旧版 ffmpeg 及 x264/x265 使⽤ yasm 汇编器Yasm 是英特尔x86架构下的⼀个汇编器和反汇编器。

Yasm 是⼀个完全重写的 Netwide 汇编器(NASM)。

Yasm 通常可以与 NASM 互换使⽤,并⽀持 x86 和 x86-64 架构。

其许可协议为修订过的 BSD 许可证。

此处 Yasm ⽤来编译 x86 平台下 ffmpeg 中部分汇编代码。

注意,Yasm 是 x86 平台汇编器,不需要交叉编译。

若是 arm 等其他平台,交叉编译⼯具链中包含有对应的汇编器,则交叉编译ffmpeg 时需要 --disable-yasm 选项。

Yasm 官⽹:新版 ffmpeg 及 x264/x265 改⽤ nasm 汇编器Netwide Assembler (简称NASM) 是⼀款基于英特尔 x86 架构的汇编与反汇编⼯具。

NASM 被认为是 Linux 平台上最受欢迎的汇编⼯具之⼀。

注意,NASM 是 x86 平台汇编器,不需要交叉编译。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 &lt;pre name="code"
class="plain"&gt;&lt;pre name="code" class="plain"&gt;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 &lt;/tt&gt;&lt;/span&gt;
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。

相关文档
最新文档