Ubuntu系统下FFmpeg源码编译安装

      

        1、下载ffmpeg:

        通过ffmpeg的下载页面下载需要的ffmpeg的版本:Download FFmpeg

        本次编译下载的是ffmpeg-6.1.2.tar.xz版本。

        2、解压ffmpeg:

        解压ffmpeg-6.1.2.tar.xz:

     tar -xvf ffmpeg-6.1.2.tar.xz

        

        3、修改文件权限:

    sudo chmod 777 -R ffmpeg-6.1.2

        4、在ffmpeg-6.1.2同级目录创建一个c:

       再次目录下用于存放编译出来的文件结果,进入ffmpeg_build目录下pwd获取路径。

        5、编译./configure:

        cd进入ffmpeg-6.1.2目录下,输入“4”中pwd获取的路径如下:

    ./configure --enable-shared --prefix=/home/wyy/FFmpeg/ffmpeg_build

        6、make:

        make之后可能会出现如下问题

CC	libavdevice/alldevices.o
libavdevice/alldevices.c:140:1: fatal error: opening dependency file libavdevice/alldevices.d: Permission denied
  140 | }
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libavdevice/alldevices.o] Error 1

        可以修改对应目录下的文件权限

    sudo chmod 777 -R libavdevice/

        如还存现报错,则一直修改对应目录的权限:

wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libavdevice/alldevices.o
libavdevice/alldevices.c:140:1: fatal error: opening dependency file libavdevice/alldevices.d: Permission denied
  140 | }
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libavdevice/alldevices.o] Error 1
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ sudo chmod 777 -R libavdevice/
[sudo] password for wyy: 
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libavdevice/alldevices.o
.....
CC	libavfilter/aeval.o
libavfilter/aeval.c:478:1: fatal error: opening dependency file libavfilter/aeval.d: Permission denied
  478 | };
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libavfilter/aeval.o] Error 1
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ sudo chmod 777 -R libavfilter/
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libavfilter/aeval.o
......
STRIP	libavfilter/x86/yadif-10.o
X86ASM	libavfilter/x86/yadif-16.o
STRIP	libavfilter/x86/yadif-16.o
CC	libavfilter/yadif_common.o
CC	libavfilter/log2_tab.o
GEN	libavfilter/libavfilter.ver
CC	libswscale/alphablend.o
libswscale/alphablend.c:171:1: fatal error: opening dependency file libswscale/alphablend.d: Permission denied
  171 | }
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libswscale/alphablend.o] Error 1
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ sudo chmod 777 -R libswscale/
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libswscale/alphablend.o
........
CC	libswscale/log2_tab.o
GEN	libswscale/libswscale.ver
CC	libavutil/adler32.o
libavutil/adler32.c:96:1: fatal error: opening dependency file libavutil/adler32.d: Permission denied
   96 | }
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libavutil/adler32.o] Error 1
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ sudo chmod 777 -R libavutil/
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libavutil/adler32.o
........
LD	libavutil/libavutil.so.58
LD	libswscale/libswscale.so.7
CC	libavformat/3dostr.o
libavformat/3dostr.c:202:1: fatal error: opening dependency file libavformat/3dostr.d: Permission denied
  202 | };
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libavformat/3dostr.o] Error 1
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ sudo chmod 777 -R libavformat/
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libavformat/3dostr.o
......

      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libswresample/audioconvert.o] Error 1
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libswresample/audioconvert.o
libswresample/audioconvert.c:251:1: fatal error: opening dependency file libswresample/audioconvert.d: Permission denied
  251 | }
      | ^
compilation terminated.
make: *** [ffbuild/common.mak:81: libswresample/audioconvert.o] Error 1

        考虑到一直修改权限之后,还是有些编译时获取不到某个文件权限的问题,做如下修改:

        退到上级目录,再次对ffmpeg-6.1.2进行目录权限修改:

sudo chmod 777 -R ffmpeg-6.1.2

        再make一下就通过了:

wyy@wyy-virtual-machine:~/FFmpeg$ sudo chmod 777 -R ffmpeg-6.1.2
wyy@wyy-virtual-machine:~/FFmpeg$ cd ffmpeg-6.1.2/
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ LS
LS: command not found
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ ls
android                COPYING.GPLv3     fftools        MAINTAINERS
android_build.sh       COPYING.LGPLv2.1  INSTALL.md     Makefile
android_x265_build.sh  COPYING.LGPLv3    libavcodec     presets
Changelog              CREDITS           libavdevice    README.md
compat                 doc               libavfilter    RELEASE
config.asm             ffbuild           libavformat    RELEASE_NOTES
config_components.h    ffmpeg            libavutil      tests
config.h               ffmpeg_build.sh   libpostproc    tools
configure              ffmpeg_g          libswresample  VERSION
CONTRIBUTING.md        ffprobe           libswscale
COPYING.GPLv2          ffprobe_g         LICENSE.md
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ ls
android                COPYING.GPLv3     fftools        MAINTAINERS
android_build.sh       COPYING.LGPLv2.1  INSTALL.md     Makefile
android_x265_build.sh  COPYING.LGPLv3    libavcodec     presets
Changelog              CREDITS           libavdevice    README.md
compat                 doc               libavfilter    RELEASE
config.asm             ffbuild           libavformat    RELEASE_NOTES
config_components.h    ffmpeg            libavutil      tests
config.h               ffmpeg_build.sh   libpostproc    tools
configure              ffmpeg_g          libswresample  VERSION
CONTRIBUTING.md        ffprobe           libswscale
COPYING.GPLv2          ffprobe_g         LICENSE.md
wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make
CC	libswresample/audioconvert.o
CC	libswresample/dither.o
CC	libswresample/options.o
CC	libswresample/rematrix.o
CC	libswresample/resample.o
CC	libswresample/resample_dsp.o
CC	libswresample/swresample.o
CC	libswresample/swresample_frame.o
CC	libswresample/version.o
X86ASM	libswresample/x86/audio_convert.o
STRIP	libswresample/x86/audio_convert.o
CC	libswresample/x86/audio_convert_init.o
X86ASM	libswresample/x86/rematrix.o
STRIP	libswresample/x86/rematrix.o
CC	libswresample/x86/rematrix_init.o
X86ASM	libswresample/x86/resample.o
STRIP	libswresample/x86/resample.o
CC	libswresample/x86/resample_init.o
CC	libswresample/log2_tab.o
GEN	libswresample/libswresample.ver
LD	libswresample/libswresample.so.4
LD	libavcodec/libavcodec.so.60
LD	libavformat/libavformat.so.60
LD	libavfilter/libavfilter.so.9
LD	libavdevice/libavdevice.so.60
AR	libavfilter/libavfilter.a
GEN	libavfilter/libavfilter.pc
AR	libavformat/libavformat.a
GEN	libavformat/libavformat.pc
AR	libavcodec/libavcodec.a
GEN	libavcodec/libavcodec.pc
AR	libswresample/libswresample.a
GEN	libswresample/libswresample.pc
AR	libswscale/libswscale.a
GEN	libswscale/libswscale.pc
AR	libavutil/libavutil.a
GEN	libavutil/libavutil.pc
POD	doc/ffmpeg.pod
POD	doc/ffprobe.pod
POD	doc/ffmpeg-all.pod
POD	doc/ffprobe-all.pod
MAN	doc/ffmpeg.1
MAN	doc/ffprobe.1
MAN	doc/ffmpeg-all.1
MAN	doc/ffprobe-all.1
CC	fftools/ffmpeg_dec.o
CC	fftools/ffmpeg_demux.o
CC	fftools/ffmpeg_enc.o
CC	fftools/ffmpeg_filter.o
CC	fftools/ffmpeg_hw.o
CC	fftools/ffmpeg_mux.o
CC	fftools/ffmpeg_mux_init.o
CC	fftools/ffmpeg_opt.o
CC	fftools/thread_queue.o
CC	fftools/cmdutils.o
CC	fftools/opt_common.o
CC	fftools/ffmpeg.o
LD	ffmpeg_g
STRIP	ffmpeg
CC	fftools/ffprobe.o
LD	ffprobe_g
STRIP	ffprobe

        7、make install:

wyy@wyy-virtual-machine:~/FFmpeg/ffmpeg-6.1.2$ make install
INSTALL	libavdevice/libavdevice.a
INSTALL	libavdevice/libavdevice.so
STRIP	install-libavdevice-shared
INSTALL	libavfilter/libavfilter.a
INSTALL	libavfilter/libavfilter.so
STRIP	install-libavfilter-shared
INSTALL	libavformat/libavformat.a
INSTALL	libavformat/libavformat.so
STRIP	install-libavformat-shared
INSTALL	libavcodec/libavcodec.a
INSTALL	libavcodec/libavcodec.so
STRIP	install-libavcodec-shared
INSTALL	libswresample/libswresample.a
INSTALL	libswresample/libswresample.so
STRIP	install-libswresample-shared
INSTALL	libswscale/libswscale.a
INSTALL	libswscale/libswscale.so
STRIP	install-libswscale-shared
INSTALL	libavutil/libavutil.a
INSTALL	libavutil/libavutil.so
STRIP	install-libavutil-shared
INSTALL	doc/ffmpeg.1
INSTALL	doc/ffprobe.1
INSTALL	doc/ffmpeg-all.1
INSTALL	doc/ffprobe-all.1
INSTALL	doc/ffmpeg-utils.1
INSTALL	doc/ffmpeg-scaler.1
INSTALL	doc/ffmpeg-resampler.1
INSTALL	doc/ffmpeg-codecs.1
INSTALL	doc/ffmpeg-bitstream-filters.1
INSTALL	doc/ffmpeg-formats.1
INSTALL	doc/ffmpeg-protocols.1
INSTALL	doc/ffmpeg-devices.1
INSTALL	doc/ffmpeg-filters.1
INSTALL	doc/libavutil.3
INSTALL	doc/libswscale.3
INSTALL	doc/libswresample.3
INSTALL	doc/libavcodec.3
INSTALL	doc/libavformat.3
INSTALL	doc/libavdevice.3
INSTALL	doc/libavfilter.3
INSTALL	doc/ffmpeg.1
INSTALL	doc/ffprobe.1
INSTALL	doc/ffmpeg-all.1
INSTALL	doc/ffprobe-all.1
INSTALL	doc/ffmpeg-utils.1
INSTALL	doc/ffmpeg-scaler.1
INSTALL	doc/ffmpeg-resampler.1
INSTALL	doc/ffmpeg-codecs.1
INSTALL	doc/ffmpeg-bitstream-filters.1
INSTALL	doc/ffmpeg-formats.1
INSTALL	doc/ffmpeg-protocols.1
INSTALL	doc/ffmpeg-devices.1
INSTALL	doc/ffmpeg-filters.1
INSTALL	doc/libavutil.3
INSTALL	doc/libswscale.3
INSTALL	doc/libswresample.3
INSTALL	doc/libavcodec.3
INSTALL	doc/libavformat.3
INSTALL	doc/libavdevice.3
INSTALL	doc/libavfilter.3
INSTALL	install-progs-yes
INSTALL	ffmpeg
INSTALL	ffprobe
INSTALL	presets/libvpx-1080p50_60.ffpreset
INSTALL	presets/libvpx-1080p.ffpreset
INSTALL	presets/libvpx-360p.ffpreset
INSTALL	presets/libvpx-720p50_60.ffpreset
INSTALL	presets/libvpx-720p.ffpreset
INSTALL	doc/ffprobe.xsd
INSTALL	doc/examples/avio_http_serve_files.c
INSTALL	doc/examples/avio_list_dir.c
INSTALL	doc/examples/avio_read_callback.c
INSTALL	doc/examples/decode_audio.c
INSTALL	doc/examples/decode_filter_audio.c
INSTALL	doc/examples/decode_filter_video.c
INSTALL	doc/examples/decode_video.c
INSTALL	doc/examples/demux_decode.c
INSTALL	doc/examples/encode_audio.c
INSTALL	doc/examples/encode_video.c
INSTALL	doc/examples/extract_mvs.c
INSTALL	doc/examples/filter_audio.c
INSTALL	doc/examples/hw_decode.c
INSTALL	doc/examples/mux.c
INSTALL	doc/examples/qsv_decode.c
INSTALL	doc/examples/qsv_transcode.c
INSTALL	doc/examples/remux.c
INSTALL	doc/examples/resample_audio.c
INSTALL	doc/examples/scale_video.c
INSTALL	doc/examples/show_metadata.c
INSTALL	doc/examples/transcode_aac.c
INSTALL	doc/examples/transcode.c
INSTALL	doc/examples/vaapi_encode.c
INSTALL	doc/examples/vaapi_transcode.c
INSTALL	doc/examples/README
INSTALL	doc/examples/Makefile
INSTALL	doc/examples/avio_http_serve_files.c
INSTALL	doc/examples/avio_list_dir.c
INSTALL	doc/examples/avio_read_callback.c
INSTALL	doc/examples/decode_audio.c
INSTALL	doc/examples/decode_filter_audio.c
INSTALL	doc/examples/decode_filter_video.c
INSTALL	doc/examples/decode_video.c
INSTALL	doc/examples/demux_decode.c
INSTALL	doc/examples/encode_audio.c
INSTALL	doc/examples/encode_video.c
INSTALL	doc/examples/extract_mvs.c
INSTALL	doc/examples/filter_audio.c
INSTALL	doc/examples/hw_decode.c
INSTALL	doc/examples/mux.c
INSTALL	doc/examples/qsv_decode.c
INSTALL	doc/examples/qsv_transcode.c
INSTALL	doc/examples/remux.c
INSTALL	doc/examples/resample_audio.c
INSTALL	doc/examples/scale_video.c
INSTALL	doc/examples/show_metadata.c
INSTALL	doc/examples/transcode_aac.c
INSTALL	doc/examples/transcode.c
INSTALL	doc/examples/vaapi_encode.c
INSTALL	doc/examples/vaapi_transcode.c
INSTALL	doc/examples/README
INSTALL	doc/examples/Makefile
INSTALL	libavdevice/avdevice.h
INSTALL	libavdevice/version.h
INSTALL	libavdevice/version_major.h
INSTALL	libavdevice/libavdevice.pc
INSTALL	libavfilter/avfilter.h
INSTALL	libavfilter/buffersink.h
INSTALL	libavfilter/buffersrc.h
INSTALL	libavfilter/version.h
INSTALL	libavfilter/version_major.h
INSTALL	libavfilter/libavfilter.pc
INSTALL	libavformat/avformat.h
INSTALL	libavformat/avio.h
INSTALL	libavformat/version.h
INSTALL	libavformat/version_major.h
INSTALL	libavformat/libavformat.pc
INSTALL	libavcodec/ac3_parser.h
INSTALL	libavcodec/adts_parser.h
INSTALL	libavcodec/avcodec.h
INSTALL	libavcodec/avdct.h
INSTALL	libavcodec/avfft.h
INSTALL	libavcodec/bsf.h
INSTALL	libavcodec/codec.h
INSTALL	libavcodec/codec_desc.h
INSTALL	libavcodec/codec_id.h
INSTALL	libavcodec/codec_par.h
INSTALL	libavcodec/d3d11va.h
INSTALL	libavcodec/defs.h
INSTALL	libavcodec/dirac.h
INSTALL	libavcodec/dv_profile.h
INSTALL	libavcodec/dxva2.h
INSTALL	libavcodec/jni.h
INSTALL	libavcodec/mediacodec.h
INSTALL	libavcodec/packet.h
INSTALL	libavcodec/qsv.h
INSTALL	libavcodec/vdpau.h
INSTALL	libavcodec/version.h
INSTALL	libavcodec/version_major.h
INSTALL	libavcodec/videotoolbox.h
INSTALL	libavcodec/vorbis_parser.h
INSTALL	libavcodec/xvmc.h
INSTALL	libavcodec/libavcodec.pc
INSTALL	libswresample/swresample.h
INSTALL	libswresample/version.h
INSTALL	libswresample/version_major.h
INSTALL	libswresample/libswresample.pc
INSTALL	libswscale/swscale.h
INSTALL	libswscale/version.h
INSTALL	libswscale/version_major.h
INSTALL	libswscale/libswscale.pc
INSTALL	libavutil/adler32.h
INSTALL	libavutil/aes.h
INSTALL	libavutil/aes_ctr.h
INSTALL	libavutil/ambient_viewing_environment.h
INSTALL	libavutil/attributes.h
INSTALL	libavutil/audio_fifo.h
INSTALL	libavutil/avassert.h
INSTALL	libavutil/avstring.h
INSTALL	libavutil/avutil.h
INSTALL	libavutil/base64.h
INSTALL	libavutil/blowfish.h
INSTALL	libavutil/bprint.h
INSTALL	libavutil/bswap.h
INSTALL	libavutil/buffer.h
INSTALL	libavutil/cast5.h
INSTALL	libavutil/camellia.h
INSTALL	libavutil/channel_layout.h
INSTALL	libavutil/common.h
INSTALL	libavutil/cpu.h
INSTALL	libavutil/crc.h
INSTALL	libavutil/csp.h
INSTALL	libavutil/des.h
INSTALL	libavutil/detection_bbox.h
INSTALL	libavutil/dict.h
INSTALL	libavutil/display.h
INSTALL	libavutil/dovi_meta.h
INSTALL	libavutil/downmix_info.h
INSTALL	libavutil/encryption_info.h
INSTALL	libavutil/error.h
INSTALL	libavutil/eval.h
INSTALL	libavutil/executor.h
INSTALL	libavutil/fifo.h
INSTALL	libavutil/file.h
INSTALL	libavutil/frame.h
INSTALL	libavutil/hash.h
INSTALL	libavutil/hdr_dynamic_metadata.h
INSTALL	libavutil/hdr_dynamic_vivid_metadata.h
INSTALL	libavutil/hmac.h
INSTALL	libavutil/hwcontext.h
INSTALL	libavutil/hwcontext_cuda.h
INSTALL	libavutil/hwcontext_d3d11va.h
INSTALL	libavutil/hwcontext_drm.h
INSTALL	libavutil/hwcontext_dxva2.h
INSTALL	libavutil/hwcontext_qsv.h
INSTALL	libavutil/hwcontext_mediacodec.h
INSTALL	libavutil/hwcontext_opencl.h
INSTALL	libavutil/hwcontext_vaapi.h
INSTALL	libavutil/hwcontext_videotoolbox.h
INSTALL	libavutil/hwcontext_vdpau.h
INSTALL	libavutil/hwcontext_vulkan.h
INSTALL	libavutil/imgutils.h
INSTALL	libavutil/intfloat.h
INSTALL	libavutil/intreadwrite.h
INSTALL	libavutil/lfg.h
INSTALL	libavutil/log.h
INSTALL	libavutil/lzo.h
INSTALL	libavutil/macros.h
INSTALL	libavutil/mathematics.h
INSTALL	libavutil/mastering_display_metadata.h
INSTALL	libavutil/md5.h
INSTALL	libavutil/mem.h
INSTALL	libavutil/motion_vector.h
INSTALL	libavutil/murmur3.h
INSTALL	libavutil/opt.h
INSTALL	libavutil/parseutils.h
INSTALL	libavutil/pixdesc.h
INSTALL	libavutil/pixelutils.h
INSTALL	libavutil/pixfmt.h
INSTALL	libavutil/random_seed.h
INSTALL	libavutil/rc4.h
INSTALL	libavutil/rational.h
INSTALL	libavutil/replaygain.h
INSTALL	libavutil/ripemd.h
INSTALL	libavutil/samplefmt.h
INSTALL	libavutil/sha.h
INSTALL	libavutil/sha512.h
INSTALL	libavutil/spherical.h
INSTALL	libavutil/stereo3d.h
INSTALL	libavutil/threadmessage.h
INSTALL	libavutil/time.h
INSTALL	libavutil/timecode.h
INSTALL	libavutil/timestamp.h
INSTALL	libavutil/tree.h
INSTALL	libavutil/twofish.h
INSTALL	libavutil/uuid.h
INSTALL	libavutil/version.h
INSTALL	libavutil/video_enc_params.h
INSTALL	libavutil/xtea.h
INSTALL	libavutil/tea.h
INSTALL	libavutil/tx.h
INSTALL	libavutil/film_grain_params.h
INSTALL	libavutil/video_hint.h
INSTALL	libavutil/avconfig.h
INSTALL	libavutil/ffversion.h
INSTALL	libavutil/libavutil.pc

        8、编译的结果输出:

        在ffmpeg_build目录下有如下输出:

        

        9、ffmpeg环境变量的配置:

        把“8”目录路径获取到加入到环境变量的配置中:

    sudo gedit ~/.bashrc

 

        在~/.bashrc中加入如下配置后保存退出:

#ffmpeg tools bin
export FFMPEG_TOOLS=/home/wyy/FFmpeg/ffmpeg_build/bin
export PATH=$PATH:$FFMPEG_TOOLS
#ffmpeg tools lib
export LD_LIBRARY_PATH=/home/wyy/FFmpeg/ffmpeg_build/lib
export PATH=$PATH:$LD_LIBRARY_PATH

        接下来别忘了更新~/.bashrc:

    source ~/.bashrc

        10、验证ffmpeg工具是否安装成功:

    ffmpeg -version

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值