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