国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FFmpeg<第一篇>:環(huán)境配置

這篇具有很好參考價(jià)值的文章主要介紹了FFmpeg<第一篇>:環(huán)境配置。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1、官網(wǎng)地址

http://ffmpeg.org/download.html

2、linux下載ffmpeg

下載:
wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2

解壓:
tar xvf ffmpeg-snapshot.tar.bz2

3、FFmpeg ./configure編譯參數(shù)匯總

解壓 ffmpeg-snapshot.tar.bz2 之后,在根目錄下有配置文件:configure,執(zhí)行該文件可以生成Makefile,configure文件中記錄了configure的編譯參數(shù)。

【1】Help options 幫助選項(xiàng)

--help  打印顯示幫助信息
--quiet 禁止顯示信息輸出
--list-decoders 顯示所有可用的解碼器
--list-encoders 顯示所有可用的編碼器
--list-hwaccels 顯示所有可用的硬件加速器
--list-demuxers 顯示所有可用的解復(fù)用器
--list-muxers   顯示所有可用的復(fù)用器
--list-parsers  顯示所有可用的解析器
--list-protocols    顯示所有可用的協(xié)議
--list-bsfs 顯示所有可用的比特流過(guò)濾器
--list-indevs   顯示所有可用的輸入設(shè)備
--list-outdevs  顯示所有可用的輸出設(shè)備
--list-filters  顯示所有可用的過(guò)濾器

【2】 Standard options 標(biāo)準(zhǔn)選項(xiàng)

--logfile=FILE  記錄測(cè)試并輸出到 指定文件FILE ,默認(rèn)為ffbuild/config.log
--disable-logging   不記錄配置調(diào)試信息
--fatal-warnings    如果生成任何配置警告,則失敗
--prefix=PREFIX 安裝在指定路徑PREFIX,默認(rèn)為/usr/local
--bindir=DIR    在指定路徑DIR 中安裝二進(jìn)制文件,默認(rèn)為PREFIX/bin
--datadir=DIR   在指定路徑DIR中安裝數(shù)據(jù)文件,默認(rèn)為PREFIX/share/ffmpeg
--docdir=DIR    在指定路徑DIR中安裝文檔,默認(rèn)為PREFIX/share/doc/ffmpeg
--libdir=DIR    在指定路徑安裝庫(kù),默認(rèn)為PREFIX/lib
--shlibdir=DIR  在指定路徑安裝共享庫(kù),默認(rèn)為L(zhǎng)IBDIR,即PREFIX/lib
--incdir=DIR    在指定路徑安裝包含文件,默認(rèn)為PREFIX/include
--mandir=DIR    在指定路徑安裝手冊(cè)頁(yè),默認(rèn)為PREFIX/share/man
--pkgconfigdir=DIR  在指定路徑安裝pkg-config 文件,默認(rèn)為L(zhǎng)IBDIR/pkgconfig
--enable-rpath  使用rpath允許在不屬于動(dòng)態(tài)鏈接器搜索路徑的路徑中安裝庫(kù)鏈接程序時(shí)使用rpath(小心使用)
--install-name-dir=DIR  Darwin 已安裝目標(biāo)的目錄名稱

【3】Licensing options 證書選項(xiàng)

--enable-gpl    允許使用GPL代碼,編譯的庫(kù)和二進(jìn)制文件處于GPL許可下,默認(rèn)為否
--enable-version3   升級(jí)(L)GPL到版本3,默認(rèn)為否
--enable-nonfree    允許使用非自由代碼,并且二進(jìn)制文件將不可再分發(fā),默認(rèn)為否

【4】Configuration options 配置選項(xiàng)

--disable-static    不構(gòu)建靜態(tài)庫(kù),默認(rèn)為否
--enable-shared 構(gòu)建共享動(dòng)態(tài)庫(kù),默認(rèn)為否
--enable-small  優(yōu)化大小而不是速度
--disable-runtime-cpudetect 禁用在運(yùn)行時(shí)檢測(cè) CPU 功能(較小的二進(jìn)制文件)
--enable-gray   啟用全灰度支持(較慢的顏色)
--disable-swscale-alpha 在 swscale 中禁用 alpha 通道支持
--disable-all   禁用構(gòu)建組件、庫(kù)和程序
--disable-autodetect    禁用自動(dòng)檢測(cè)到的外部庫(kù),默認(rèn)為否

【5】Program options 程序選項(xiàng)

--disable-programs  不構(gòu)建命令行程序
--disable-ffmpeg    禁用 ffmpeg 構(gòu)建
--disable-ffplay    禁用 ffplay 構(gòu)建
--disable-ffprobe   禁用 ffprobe 構(gòu)建

【6】Documentation options 文檔選項(xiàng)

--disable-doc   不構(gòu)建文檔
--disable-htmlpages 不構(gòu)建 HTML 文檔頁(yè)面
--disable-manpages  不構(gòu)建手冊(cè)文檔頁(yè)面
--disable-podpages  不構(gòu)建 POD 文檔頁(yè)面
--disable-txtpages  不構(gòu)建文本文檔頁(yè)面

【7】Component options 組件選項(xiàng)

--disable-avdevice  禁用 libavdevice 構(gòu)建
--disable-avcodec   禁用 libavcodec 構(gòu)建
--disable-avformat  禁用 libavformat 構(gòu)建
--disable-swresample    禁用 libswresample 構(gòu)建
--disable-swscale   禁用 libswscale 構(gòu)建
--disable-postproc  禁用 libpostproc 構(gòu)建
--disable-avfilter  禁用 libavfilter 構(gòu)建
--enable-avresample 啟用 libavresample 構(gòu)建(已棄用),默認(rèn)為否
--disable-pthreads  禁用 pthreads [自動(dòng)檢測(cè)]
--disable-w32threads    禁用 Win32 線程 [自動(dòng)檢測(cè)]
--disable-os2threads    禁用 OS/2 線程 [自動(dòng)檢測(cè)]
--disable-network   禁用網(wǎng)絡(luò)支持 ,默認(rèn)為否
--disable-dct   禁用 DCT 代碼
--disable-dwt   禁用 DWT 代碼
--disable-error-resilience  禁用錯(cuò)誤恢復(fù)代碼
--disable-lsp   禁用 LSP 代碼
--disable-lzo   禁用 LZO 解碼器代碼
--disable-mdct  禁用 MDCT 代碼
--disable-rdft  禁用 RDFT 代碼
--disable-fft   禁用 FFT 代碼
--disable-faan  禁用浮點(diǎn) AAN (I)DCT 代碼
--disable-pixelutils    在 libavutil 中禁用像素工具

【8】Individual component options 獨(dú)立組件選項(xiàng)

--disable-everything    禁用下面列出的所有組件
--disable-encoder=NAME  禁用指定NAME的編碼器
--enable-encoder=NAME   啟用指定NAME的編碼器
--disable-encoders  禁用所有編碼器
--disable-decoder=NAME  禁用指定NAME的解碼器
--enable-decoder=NAME   啟用指定NAME的解碼器
--disable-decoders  禁用所有解碼器
--disable-hwaccel=NAME  禁用指定NAME的硬件
--enable-hwaccel=NAME   啟用指定NAME的硬件
--disable-hwaccels  禁用所有 hwaccels
--disable-muxer=NAME    禁用指定NAME的復(fù)用器
--enable-muxer=NAME 啟用指定NAME的復(fù)用器
--disable-muxers    禁用所有復(fù)用器
--disable-demuxer=NAME  禁用指定NAME的解復(fù)用器
--enable-demuxer=NAME   啟用指定NAME的解復(fù)用器
--disable-demuxers  禁用所有解復(fù)用器
--enable-parser=NAME    啟用指定NAME的解析器
--disable-parser=NAME   禁用指定NAME的解析器
--disable-parsers   禁用所有解析器
--enable-bsf=NAME   啟用指定NAME的比特流過(guò)濾器
--disable-bsf=NAME  禁用指定NAME的比特流過(guò)濾器
--disable-bsfs  禁用所有比特流過(guò)濾器
--enable-protocol=NAME  啟用指定NAME協(xié)議
--disable-protocol=NAME 禁用指定NAME協(xié)議
--disable-protocols 禁用所有協(xié)議
--enable-indev=NAME 啟用指定NAME的輸入設(shè)備
--disable-indev=NAME    禁用指定NAME的輸入設(shè)備
--disable-indevs    禁用輸入設(shè)備
--enable-outdev=NAME    啟用指定NAME的輸出設(shè)備
--disable-outdev=NAME   禁用指定NAME的輸出設(shè)備
--disable-outdevs   禁用輸出設(shè)備
--disable-devices   禁用所有設(shè)備
--enable-filter=NAME    啟用指定NAME的過(guò)濾器名稱
--disable-filter=NAME   禁用指定NAME的過(guò)濾器名稱
--disable-filters   禁用所有過(guò)濾器

【9】External library support 擴(kuò)展庫(kù)支持

使用以下任何選項(xiàng)將允許 FFmpeg 鏈接到相應(yīng)的外部庫(kù)。
如果滿足所有其他依賴項(xiàng)并且未明確禁用它們,則依賴于該庫(kù)的所有組件都將啟用。
例如,--enable-libopus 將啟用與 libopus 的鏈接并允許構(gòu)建 libopus 編碼器,
除非使用 --disable-encoder=libopus 明確禁用它。

--disable-alsa  禁用 ALSA 支持 [自動(dòng)檢測(cè)]
--disable-appkit    禁用 Apple AppKit 框架 [自動(dòng)檢測(cè)]
--disable-avfoundation  禁用 Apple AVFoundation 框架 [自動(dòng)檢測(cè)]
--enable-avisynth   啟用讀取 AviSynth 腳本文件 [否]
--disable-bzlib 禁用 bzlib [自動(dòng)檢測(cè)]
--disable-coreimage 禁用 Apple CoreImage 框架 [自動(dòng)檢測(cè)]
--enable-chromaprint    使用 chromaprint 啟用音頻指紋識(shí)別,默認(rèn)為否
--enable-frei0r 啟用 frei0r 視頻過(guò)濾 ,默認(rèn)為否
--enable-gcrypt 啟用 gcrypt,需要 rtmp(t)e 支持,如果未使用 openssl、librtmp 或 gmp則默認(rèn)為否
--enable-gmp    啟用 gmp,需要 rtmp(t)e 支持,如果未使用 openssl 或 librtmp則默認(rèn)為否
--enable-gnutls 啟用 gnutls,需要 https 支持,如果未使用 openssl、libtls 或 mbedtls則默認(rèn)為否
--disable-iconv 禁用 iconv [自動(dòng)檢測(cè)]
--enable-jni    啟用 JNI 支持,默認(rèn)為否
--enable-ladspa 啟用 LADSPA 音頻過(guò)濾,默認(rèn)為否
--enable-libaom 通過(guò) libaom 啟用 AV1 視頻編碼/解碼,默認(rèn)為否
--enable-libaribb24 通過(guò) libaribb24 啟用 ARIB 文本和字幕解碼,默認(rèn)為否
--enable-libass 啟用 libass 字幕渲染,需要字幕,默認(rèn)為否
--enable-libbluray  使用 libbluray 啟用藍(lán)光閱讀,默認(rèn)為否
--enable-libbs2b    啟用 bs2b DSP 庫(kù),默認(rèn)為否
--enable-libcaca    使用 libcaca 啟用文本顯示,默認(rèn)為否
--enable-libcelt    通過(guò) libcelt 啟用 CELT 解碼,默認(rèn)為否
--enable-libcdio    啟用使用 libcdio 抓取音頻 CD,默認(rèn)為否
--enable-libcodec2  使用 libcodec2 啟用 codec2 編碼/解碼,默認(rèn)為否
--enable-libdav1d   通過(guò) libdav1d 啟用 AV1 解碼,默認(rèn)為否
--enable-libdavs2   通過(guò) libdavs2 啟用 AVS2 解碼,默認(rèn)為否
--enable-libdc1394  使用 libdc1394和libraw1394啟用IIDC-1394 抓取
--enable-libfdk-aac 通過(guò) libfdk-aac 啟用 AAC 解碼/編碼,默認(rèn)為否
--enable-libflite   通過(guò) libflite 啟用 flite(語(yǔ)音合成)支持,默認(rèn)為否
--enable-libfontconfig  啟用 libfontconfig,對(duì) drawtext 過(guò)濾器有用,默認(rèn)為否
--enable-libfreetype    啟用 libfreetype,drawtext 過(guò)濾器需要,默認(rèn)為否
--enable-libfribidi 啟用 libfribidi,改進(jìn) drawtext 過(guò)濾器,默認(rèn)為否
--enable-libglslang 啟用 GLSL->SPIRV 編譯通過(guò) libglslang,默認(rèn)為否
--enable-libgme 通過(guò) libgme 啟用游戲音樂(lè) Emu,默認(rèn)為否
--enable-libgsm 通過(guò) libgsm 啟用 GSM 解碼/編碼,默認(rèn)為否
--enable-libiec61883    通過(guò) libiec61883 啟用 iec61883,默認(rèn)為否
--enable-libilbc    通過(guò) libilbc 啟用 iLBC 解碼/編碼,默認(rèn)為否
--enable-libjack    啟用 JACK 音頻聲音服務(wù)器,默認(rèn)為否
--enable-libklvanc  啟用內(nèi)核實(shí)驗(yàn)室 VANC 處理,默認(rèn)為否
--enable-libkvazaar 通過(guò) libkvazaar 啟用 HEVC 編碼,默認(rèn)為否
--enable-liblensfun 啟用 lensfun 鏡頭校正,默認(rèn)為否
--enable-libmodplug 通過(guò) libmodplug 啟用 ModPlug,默認(rèn)為否
--enable-libmp3lame 通過(guò) libmp3lame 啟用 MP3 編碼,默認(rèn)為否
--enable-libopencore-amrnb  通過(guò) libopencore-amrnb 啟用 AMR-NB 解碼/編碼,默認(rèn)為否
--enable-libopencore-amrwb  通過(guò) libopencore-amrwb 啟用 AMR-WB 解碼,默認(rèn)為否
--enable-libopencv  通過(guò) libopencv 啟用視頻過(guò)濾,默認(rèn)為否
--enable-libopenh264    通過(guò) OpenH264 啟用 H.264 編碼,默認(rèn)為否
--enable-libopenjpeg    通過(guò) OpenJPEG 啟用 JPEG 2000 解碼/編碼,默認(rèn)為否
--enable-libopenmpt 啟用通過(guò) libopenmpt 解碼跟蹤的文件,默認(rèn)為否
--enable-libopenvino    啟用 OpenVINO 作為 DNN 模塊后端,默認(rèn)為否
--enable-libopus    通過(guò) libopus 啟用 Opus 解碼/編碼,默認(rèn)為否
--enable-libpulse   通過(guò) libpulse 啟用 Pulseaudio 輸入,默認(rèn)為否
--enable-librabbitmq    啟用 RabbitMQ 庫(kù),默認(rèn)為否
--enable-librav1e   通過(guò) rav1e 啟用 AV1 編碼,默認(rèn)為否
--enable-librist    通過(guò) librist 啟用 RIST,默認(rèn)為否
--enable-librsvg    通過(guò) librsvg 啟用 SVG 光柵化,默認(rèn)為否
--enable-librubberband  啟用橡皮筋過(guò)濾器所需的橡皮筋,默認(rèn)為否
--enable-librtmp    通過(guò) librtmp 啟用 RTMP[E] 支持,默認(rèn)為否
--enable-libshine   通過(guò) libshine 啟用定點(diǎn) MP3 編碼,默認(rèn)為否
--enable-libsmbclient   通過(guò) libsmbclient 啟用 Samba 協(xié)議,默認(rèn)為否
--enable-libsnappy  啟用 Snappy 壓縮,需要 hap 編碼,默認(rèn)為否
--enable-libsoxr    啟用libsoxr 重采樣,默認(rèn)為否
--enable-libspeex   通過(guò) libspeex 啟用 Speex 解碼/編碼,默認(rèn)為否
--enable-libsrt 通過(guò) libsrt 啟用 Haivision SRT 協(xié)議,默認(rèn)為否
--enable-libssh 通過(guò) libssh 啟用 SFTP 協(xié)議,默認(rèn)為否
--enable-libsvtav1  通過(guò) SVT 啟用 AV1 編碼,默認(rèn)為否
--enable-libtensorflow  啟用TensorFlow作為基于DNN的過(guò)濾器的DNN模塊后端,默認(rèn)為否
--enable-libtesseract   啟用 Tesseract,ocr 過(guò)濾器需要,默認(rèn)為否
--enable-libtheora  通過(guò) libtheora 啟用 Theora 編碼,默認(rèn)為否
--enable-libtls 如果未使用openssl、gnutls或mbedtls,則啟用https支持所需的LibreSSL,默認(rèn)為否
--enable-libtwolame 通過(guò) libttwolame 啟用 MP2 編碼,默認(rèn)為否
--enable-libuavs3d  通過(guò) libuavs3d 啟用 AVS3 解碼,默認(rèn)為否
--enable-libv4l2    啟用 libv4l2/v4l-utils,默認(rèn)為否
--enable-libvidstab 使用 vid.stab 啟用視頻穩(wěn)定,默認(rèn)為否
--enable-libvmaf    通過(guò) libvmaf 啟用 vmaf 過(guò)濾器,默認(rèn)為否
--enable-libvo-amrwbenc 通過(guò) libvo-amrwbenc 啟用 AMR-WB 編碼,默認(rèn)為否
--enable-libvorbis  通過(guò) libvorbis 啟用 Vorbis 編碼/解碼,默認(rèn)為否
--enable-libvpx 通過(guò) libvpx 啟用 VP8 和 VP9 解碼/編碼,默認(rèn)為否
--enable-libwebp    通過(guò) libwebp 啟用 WebP 編碼,默認(rèn)為否
--enable-libx264    通過(guò) x264 啟用 H.264 編碼,默認(rèn)為否
--enable-libx265    通過(guò) x265 啟用 HEVC 編碼,默認(rèn)為否
--enable-libxavs    通過(guò) xavs 啟用 AVS 編碼,默認(rèn)為否
--enable-libxavs2   通過(guò) xavs2 啟用 AVS2 編碼,默認(rèn)為否
--enable-libxcb 使用 XCB 啟用 X11 抓取 [自動(dòng)檢測(cè)]
--enable-libxcb-shm 啟用 X11 抓取 shm 通信 [自動(dòng)檢測(cè)]
--enable-libxcb-xfixes  啟用 X11 抓取鼠標(biāo)渲染 [自動(dòng)檢測(cè)]
--enable-libxcb-shape   啟用 X11 抓取形狀渲染 [自動(dòng)檢測(cè)]
--enable-libxvid    通過(guò) xvidcore 啟用 Xvid 編碼,存在原生 MPEG-4/Xvid 編碼器,默認(rèn)為否
--enable-libxml2    使用 C 庫(kù) libxml2 啟用 XML 解析,默認(rèn)為否
--enable-libzimg    啟用 z.lib,zscale 過(guò)濾器需要,默認(rèn)為否
--enable-libzmq 啟用通過(guò) libzmq 傳遞消息,默認(rèn)為否
--enable-libzvbi    通過(guò) libzvbi 啟用圖文電視支持,默認(rèn)為否
--enable-lv2    啟用 LV2 音頻過(guò)濾,默認(rèn)為否
--disable-lzma  禁用 lzma [自動(dòng)檢測(cè)]
--enable-decklink   啟用 Blackmagic DeckLink I/O 支持,默認(rèn)為否
--enable-mbedtls    如果未使用openssl、gnutls或libtls,則啟用https支持所需的mbedTLS,默認(rèn)為否
--enable-mediacodec 啟用 Android MediaCodec 支持,默認(rèn)為否
--enable-mediafoundation    通過(guò) MediaFoundation 啟用編碼
--enable-libmysofa  啟用 libmysofa,需要 soflizer 過(guò)濾器,默認(rèn)為否
--enable-openal 啟用 OpenAL 1.1 捕獲支持,默認(rèn)為否
--enable-opencl 啟用 OpenCL 處理,默認(rèn)為否
--enable-opengl 啟用 OpenGL 渲染,默認(rèn)為否
--enable-openssl    如果未使用gnutls、libtls 或 mbedtls,則啟用https支持所需的openssl,默認(rèn)為否
--enable-pocketsphinx   啟用 PocketSphinx,asr 過(guò)濾器需要,默認(rèn)為否
--disable-sndio 禁用 sndio 支持 [自動(dòng)檢測(cè)]
--disable-schannel  禁用 SChannel SSP,需要 TLS 支持[自動(dòng)檢測(cè)]
--disable-sdl2  禁用 sdl2 [自動(dòng)檢測(cè)]
--disable-securetransport   禁用安全傳輸,需要 TLS 支持
--enable-vapoursynth    啟用 VapourSynth 解復(fù)用器,默認(rèn)為否
--enable-vulkan 啟用 Vulkan 代碼,默認(rèn)為否
--disable-xlib  禁用 xlib [自動(dòng)檢測(cè)]
--disable-zlib  禁用 zlib [自動(dòng)檢測(cè)]

以下庫(kù)提供各種硬件加速功能:

--disable-amf   禁用 AMF 視頻編碼代碼 [自動(dòng)檢測(cè)]
--disable-audiotoolbox  禁用 Apple AudioToolbox 代碼 [自動(dòng)檢測(cè)]
--enable-cuda-nvcc  啟用 Nvidia CUDA 編譯器,默認(rèn)為否
--disable-cuda-llvm 使用 clang, 禁用 CUDA 編譯[自動(dòng)檢測(cè)]
--disable-cuvid 禁用 Nvidia CUVID 支持 [自動(dòng)檢測(cè)]
--disable-d3d11va   禁用 Microsoft Direct3D 11 視頻加速代碼 [自動(dòng)檢測(cè)]
--disable-dxva2 禁用 Microsoft DirectX 9 視頻加速代碼 [自動(dòng)檢測(cè)]
--disable-ffnvcodec 禁用動(dòng)態(tài)鏈接的 Nvidia 代碼 [自動(dòng)檢測(cè)]
--enable-libdrm 啟用 DRM 代碼 (Linux),默認(rèn)為否
--enable-libmfx 通過(guò) libmfx 啟用英特爾 MediaSDK(AKA 快速同步視頻)代碼,默認(rèn)為否
--enable-libnpp 啟用基于 Nvidia Performance Primitives 的代碼,默認(rèn)為否
--enable-mmal   通過(guò) MMAL 啟用 Broadcom 多媒體抽象層 (Raspberry Pi) ,默認(rèn)為否
--disable-nvdec 禁用 Nvidia 視頻解碼加速(通過(guò) hwaccel)[自動(dòng)檢測(cè)]
--disable-nvenc 禁用 Nvidia 視頻編碼代碼 [自動(dòng)檢測(cè)]
--enable-omx    啟用 OpenMAX IL 代碼,默認(rèn)為否
--enable-omx-rpi    為 Raspberry Pi 啟用 OpenMAX IL 代碼 ,默認(rèn)為否
--enable-rkmpp  啟用瑞芯微媒體處理平臺(tái)代碼 ,默認(rèn)為否
--disable-v4l2-m2m  禁用 V4L2 mem2mem 代碼 [自動(dòng)檢測(cè)]
--disable-vaapi 禁用視頻加速 API(主要是 Unix/Intel)代碼 [自動(dòng)檢測(cè)]
--disable-vdpau 禁用適用于 Unix 代碼的 Nvidia Video Decode 和 Presentation API [自動(dòng)檢測(cè)]
--disable-videotoolbox  禁用 VideoToolbox 代碼 [自動(dòng)檢測(cè)]

【10】Toolchain options 工具鏈選項(xiàng)

--arch=ARCH 選擇架構(gòu)
--cpu=CPU   選擇所需的最小CPU(影響指令選擇,可能會(huì)在較舊的 CPU 上崩潰)
--cross-prefix=PREFIX   編譯工具使用 PREFIX
--progs-suffix=SUFFIX   程序名后綴
--enable-cross-compile  使能交叉編譯器
--sysroot=PATH  交叉構(gòu)建樹(shù)的根
--sysinclude=PATH   交叉構(gòu)建系統(tǒng)頭文件的位置
--target-os=OS  編譯器目標(biāo) OS
--target-exec=CMD   目標(biāo)上運(yùn)行可執(zhí)行文件的命令
--target-path=DIR   在目標(biāo)上查看構(gòu)建目錄的路徑
--target-samples=DIR    目標(biāo)樣本目錄的路徑
--tempprefix=PATH   強(qiáng)制固定目錄/前綴而不是 mktemp 進(jìn)行檢查
--toolchain=NAME    根據(jù) NAME 設(shè)置工具默認(rèn)值
--nm=NM 使用 nm 工具 NM [nm -g]
--ar=AR 使用存檔工具 AR [ar]
--as=AS 使用匯編器 AS
--ln_s=LN_S 使用符號(hào)鏈接工具 LN_S [ln -s -f]
--strip=STRIP   使用剝離工具STRIP [strip]
--windres=WINDRES   使用windows資源編譯器WINDRES [windres]
--x86asmexe=EXE 使用 nasm 兼容的匯編程序 EXE [nasm]
--cc=CC 使用 C 編譯器 CC [gcc]
--cxx=CXX   使用 C 編譯器 CXX [g++]
--objcc=OCC 使用 ObjC 編譯器 OCC [gcc]
--dep-cc=DEPCC  使用依賴生成器 DEPCC [gcc]
--nvcc=NVCC 使用 Nvidia CUDA 編譯器 NVCC 或 clang
--ld=LD 使用鏈接器 LD
--pkg-config=PKGCONFIG  使用 pkg-config 工具 PKGCONFIG [pkg-config]
--pkg-config-flags=FLAGS    將附加標(biāo)志傳遞給 pkgconf
--ranlib=RANLIB 使用ranlib RANLIB
--doxygen=DOXYGEN   使用 DOXYGEN 生成 API doc [doxygen]
--host-cc=HOSTCC    使用主機(jī) C 編譯器 HOSTCC
--host-cflags=HCFLAGS   在為主機(jī)編譯時(shí)使用 HCFLAGS
--host-cppflags=HCPPFLAGS   在為主機(jī)編譯時(shí)使用 HCPPFLAGS
--host-ld=HOSTLD    使用主機(jī)鏈接器 HOSTLD
--host-ldflags=HLDFLAGS 鏈接主機(jī)時(shí)使用 HLDFLAGS
--host-extralibs=HLIBS  鏈接主機(jī)時(shí)使用庫(kù) HLIBS
--host-os=OS    編譯器主機(jī)操作系統(tǒng)
--extra-cflags=ECFLAGS  將 ECFLAGS 添加到 CFLAGS
--extra-cxxflags=ECFLAGS    將 ECFLAGS 添加到 CXXFLAGS
--extra-objcflags=FLAGS 將 FLAGS 添加到 OBJCFLAGS
--extra-ldflags=ELDFLAGS    將 ELDFLAGS 添加到 LDFLAGS
--extra-ldexeflags=ELDFLAGS 將 ELDFLAGS 添加到 LDEXEFLAGS
--extra-ldsoflags=ELDFLAGS  將 ELDFLAGS 添加到 LDSOFLAGS
--extra-libs=ELIBS  添加 ELIBS
--extra-version=STRING  版本字符串后綴
--optflags=OPTFLAGS 覆蓋優(yōu)化相關(guān)的編譯器標(biāo)志
--nvccflags=NVCCFLAGS   覆蓋 nvcc 標(biāo)志
--build-suffix=SUFFIX   庫(kù)名后綴
--enable-pic    構(gòu)建與位置無(wú)關(guān)的代碼
--enable-thumb  編譯 Thumb 指令集
--enable-l  使用鏈接時(shí)優(yōu)化
--env=“ENV=override”    覆蓋環(huán)境變量

【11】Advanced options 高級(jí)選項(xiàng)

--malloc-prefix=PREFIX  前綴 malloc 和帶有 PREFIX 的相關(guān)名稱
--custom-allocator=NAME 使用支持的自定義分配器
--disable-symver    禁用符號(hào)版本控制
--enable-hardcoded-tables   使用硬編碼表而不是運(yùn)行時(shí)生成
--disable-safe-bitstream-reader 在位讀取器中禁用緩沖區(qū)邊界檢查(更快,但可能會(huì)崩潰)
--sws-max-filter-size=N swscale 使用的最大過(guò)濾器大小 ,默認(rèn)為256

【12】Optimization options 優(yōu)化選項(xiàng)

--disable-asm   禁用所有程序集優(yōu)化
--disable-altivec   禁用 AltiVec 優(yōu)化
--disable-vsx   禁用 VSX 優(yōu)化
--disable-power8    禁用 POWER8 優(yōu)化
--disable-amd3dnow  禁用 3DNow!優(yōu)化
--disable-amd3dnowext   禁用 3DNow!擴(kuò)展優(yōu)化
--disable-mmx   禁用 MMX 優(yōu)化
--disable-mmxext    禁用 MMXEXT 優(yōu)化
--disable-sse   禁用 SSE 優(yōu)化
--disable-sse2  禁用 SSE2 優(yōu)化
--disable-sse3  禁用 SSE3 優(yōu)化
--disable-ssse3 禁用 SSSE3 優(yōu)化
--disable-sse4  禁用 SSE4 優(yōu)化
--disable-sse42 禁用 SSE4.2 優(yōu)化
--disable-avx   禁用 AVX 優(yōu)化
--disable-xop   禁用 XOP 優(yōu)化
--disable-fma3  禁用 FMA3 優(yōu)化
--disable-fma4  禁用 FMA4 優(yōu)化
--disable-avx2  禁用 AVX2 優(yōu)化
--disable-avx512    禁用 AVX-512 優(yōu)化
--disable-aesni 禁用 AESNI 優(yōu)化
--disable-armv5te   禁用 armv5te 優(yōu)化
--disable-armv6 禁用 armv6 優(yōu)化
--disable-armv6t2   禁用 armv6t2 優(yōu)化
--disable-vfp   禁用 VFP 優(yōu)化
--disable-neon  禁用 NEON 優(yōu)化
--disable-inline-asm    禁用內(nèi)聯(lián)匯編
--disable-x86asm    禁用獨(dú)立 x86 程序集
--disable-mipsdsp   禁用 MIPS DSP ASE R1 優(yōu)化
--disable-mipsdspr2 禁用 MIPS DSP ASE R2 優(yōu)化
--disable-msa   禁用 MSA 優(yōu)化
--disable-msa2  禁用 MSA2 優(yōu)化
--disable-mipsfpu   禁用浮點(diǎn) MIPS 優(yōu)化
--disable-mmi   禁用龍芯 SIMD 優(yōu)化
--disable-fast-unaligned    考慮未對(duì)齊訪問(wèn)緩慢

【13】開(kāi)發(fā)人員選項(xiàng)

--disable-debug 禁用調(diào)試符號(hào)
--enable-debug=LEVEL    設(shè)置調(diào)試級(jí)別
--disable-optimizations 禁用編譯器優(yōu)化
--enable-extra-warnings 啟用更多編譯器警告
--disable-stripping 禁用剝離可執(zhí)行文件和共享庫(kù)
--assert-level=level    0(默認(rèn)),1或2,斷言測(cè)試的數(shù)量,2 會(huì)導(dǎo)致運(yùn)行時(shí)變慢
--enable-memory-poisoning   用任意數(shù)據(jù)填充堆未初始化的分配空間
--valgrind=VALGRIND 通過(guò) valgrind 運(yùn)行“make fate”測(cè)試以檢測(cè)內(nèi)存泄漏和錯(cuò)誤,使用指定的 valgrind 二進(jìn)制文件。不能與 --target-exec 結(jié)合使用
--enable-ftrapv 陷阱算術(shù)溢出
--samples=FATE  測(cè)試樣本的路徑位置
--enable-neon-clobber-test  檢查 NEON 寄存器的破壞(應(yīng)該是僅用于調(diào)試目的)
--enable-xmm-clobber-test   檢查 XMM 寄存器的破壞(僅限 Win64;應(yīng)僅用于調(diào)試目的)
--enable-random 隨機(jī)啟用/禁用組件
--enable-random=LIST    隨機(jī)啟用/禁用特定組件,LIST 是一個(gè)逗號(hào)分隔的列表 NAME[:PROB] 條目,其中 NAME 是一個(gè)組件(group) 和 PROB 相關(guān)的概率 名稱(默認(rèn) 0.5)。
--random-seed=VALUE --enable/disable-random 的種子值
--disable-valgrind-backtrace    在 Valgrind 下不打印回溯(僅適用于 --disable-optimizations 構(gòu)建)
--enable-ossfuzz    啟用構(gòu)建模糊器工具
--libfuzzer=PATH    libfuzzer 的路徑
--ignore-tests=TESTS    被忽略的測(cè)試
--enable-linux-perf 啟用 Linux 性能監(jiān)視器 API
--disable-large-tests   禁用使用大量?jī)?nèi)存的測(cè)試

4、ffmpeg shell腳本

#!/bin/bash

NDK_ROOT=/home/zhouyunchong/Android/Sdk/ndk/17.2.4988734
CPU=arm-linux-androideabi
TOOLCHAIN=$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64
# 打開(kāi)一個(gè)NDK項(xiàng)目,找到build.ninja文件,可以找到FLAGS
# FLAGS="-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -std=c++11 -fno-limit-debug-info  -fPIC"
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC"
INCLUDES=" -isystem $NDK_ROOT/sources/android/support/include"
PREFIX=./android/armeabi-v7a

# 執(zhí)行 configure 生成Makefile
# prefix             安裝路徑默認(rèn)為/usr/local
# --enable-small      優(yōu)化大小
# --disable-programs  不構(gòu)建可執(zhí)行文件
# --disable-avdevice  禁用 libavdevice 構(gòu)建
# --disable-encoders  禁用所有編碼器
# --disable-muxers    禁用所有混合器
# --disable-filters    禁用所有過(guò)濾器
# --enable-cross-compile  開(kāi)啟交叉編譯器
# --cross-prefix  指定交叉編譯的編譯鏈
# --disable-shared 關(guān)閉動(dòng)態(tài)庫(kù)
# --enable-static  開(kāi)啟靜態(tài)庫(kù)
# -isystem         編譯時(shí)查找頭文件的路徑 
# --sysroot        指定頭文件和庫(kù)文件目錄
# --extra-cflags   將 ECFLAGS 添加到 CFLAGS(傳給gcc編譯器的參數(shù))
# --arch          選擇架構(gòu)
# --target-os        編譯器目標(biāo) OS android、linux
# --disable-x86asm 生成編譯相關(guān)的配置
./configure --disable-x86asm
./configure \
prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/$CPU- \
--disable-shared \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS $INCLUDES" \
--extra-cflags="-isysroot $NDK_ROOT/sysroot/" \
--arch=arm \
--target-os=android \

make clean

make install

以上腳本只能生成在Android端使用的靜態(tài)庫(kù)。

當(dāng)然,修改下指定參數(shù)可以生成動(dòng)態(tài)庫(kù)或者可執(zhí)行文件。

以上腳本的環(huán)境和條件:
【1】linux(ubuntu)系統(tǒng)
【2】ffmpeg版本:最新的release版本即可(當(dāng)前最高版本是FFmpeg 5.1.2 "Riemann"),官網(wǎng):http://ffmpeg.org/
【3】NDK版本,需要 < 19,19及19以上的版本已經(jīng)去除了gcc和g++,所以不適用以上腳本
【4】腳本需要額外添加 ./configure --disable-x86asm
【5】prefix 前面不能添加 --
【6】當(dāng)前ffmpeg支持clang編譯,需要在configure中將cc_default="clang"改成cc_default="gcc"

5、將編譯出來(lái)的靜態(tài)庫(kù)在cmake項(xiàng)目中使用

新建一個(gè)cmake項(xiàng)目

MainActivity.java

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // Example of a call to a native method
        binding.sampleText.text = stringFromJNI()
    }

    /**
     * A native method that is implemented by the 'myplayer' native library,
     * which is packaged with this application.
     */
    private external fun stringFromJNI(): String

    companion object {
        // Used to load the 'myplayer' library on application startup.
        init {
            System.loadLibrary("myplayer")
        }
    }
}

native-lib.cpp

#include <jni.h>
#include <string>

extern "C"{
#include <libavcodec/avcodec.h>
}

extern "C" JNIEXPORT jstring JNICALL
Java_com_android_myplayer_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(av_version_info());
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.18.1)

add_library(
        myplayer
        SHARED
        native-lib.cpp)

include_directories("ffmpeg-include")

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}")
message("${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}")

target_link_libraries(
        myplayer
        avcodec
        avfilter
        avformat
        avutil
        swresample
        swscale
        log)

build.gradle部分配置:

android {
    compileSdk 32

    defaultConfig {
        applicationId "com.android.xxxx"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        externalNativeBuild {
            cmake {
                cppFlags ""
                abiFilters 'armeabi-v7a'
            }
        }
        ndk { // "armeabi-v7a", "arm64-v8a"
            abiFilters 'armeabi-v7a'
        }
    }

    externalNativeBuild {
        cmake {
            path file('src/main/cpp/CMakeLists.txt')
            version '3.18.1'
        }
    }

}

將ffmpeg交叉編譯出來(lái)的頭文件和靜態(tài)庫(kù)放入項(xiàng)目中:

FFmpeg<第一篇>:環(huán)境配置,ffmpeg

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672437.html

到了這里,關(guān)于FFmpeg<第一篇>:環(huán)境配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python指南 | 第一篇】Python環(huán)境配置及pip安裝教程

    【Python指南 | 第一篇】Python環(huán)境配置及pip安裝教程

    在學(xué)習(xí)Python前需搭建Python環(huán)境,同時(shí)在部分情況下需使用pip,本文為Python指南第一篇,給出實(shí)操教程。 官網(wǎng): 選擇如下版本: 下載到: 接著將 添加到環(huán)境變量中的PATH中: cmd輸入Python,出現(xiàn)如下回顯說(shuō)明環(huán)境搭建成功: 使用vscode運(yùn)行python文件前,需安裝python拓展,及選擇

    2024年02月03日
    瀏覽(33)
  • ffmpeg與SDL下載及VScode上相應(yīng)的編程環(huán)境配置踩坑(windows系統(tǒng))

    ffmpeg與SDL下載及VScode上相應(yīng)的編程環(huán)境配置踩坑(windows系統(tǒng))

    注:本教程默認(rèn)您已經(jīng)配置好vscode的C++開(kāi)發(fā)環(huán)境,如果沒(méi)有,請(qǐng)先看我的另一篇文章:https://blog.csdn.net/qq_45807140/article/details/112862592 選擇ffmpeg4.4版本,這個(gè)版本似乎是一個(gè)承前啟后的版本,兼容了舊的接口,能運(yùn)行雷神的代碼 下載方法: 進(jìn)入官網(wǎng),選擇Windows builds by BtbN,從

    2023年04月08日
    瀏覽(77)
  • 【FFmpeg】學(xué)會(huì)添加水印,只要這一篇就足夠

    【FFmpeg】學(xué)會(huì)添加水印,只要這一篇就足夠

    打算寫這樣一篇文章很久了,算是對(duì)過(guò)往的一種總結(jié),也希望能獲得更多的反饋繼續(xù)迭代。在這個(gè)人類的主要信息載體已經(jīng)變?yōu)橐曨l的年代,水印的添加也成為了一個(gè)許多人不可或缺的技能,對(duì)于技術(shù)人來(lái)講,那就更不用提。本文詳細(xì)的介紹了通過(guò)FFmpeg為視頻添加各種各樣的

    2024年02月01日
    瀏覽(20)
  • 【配置環(huán)境】安裝Ffmpeg音視頻編解碼工具和搭建EasyDarwin開(kāi)源流媒體服務(wù)器

    【配置環(huán)境】安裝Ffmpeg音視頻編解碼工具和搭建EasyDarwin開(kāi)源流媒體服務(wù)器

    目錄 一,安裝Ffmpeg音視頻編解碼工具 1,簡(jiǎn)介 2,開(kāi)發(fā)文檔 3,安裝部署 二,搭建EasyDarwin開(kāi)源流媒體服務(wù)器 1,簡(jiǎn)介 2,主要功能特點(diǎn) 3,安裝部署 4,效果圖 三,簡(jiǎn)單測(cè)試 Ffmpeg是一套可以用來(lái)記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開(kāi)源計(jì)算機(jī)程序。采用LGPL或GPL許

    2024年02月07日
    瀏覽(122)
  • 【QT+ffmpeg】QT+ffmpeg 環(huán)境搭建

    【QT+ffmpeg】QT+ffmpeg 環(huán)境搭建

    1.qt下載地址 download.qt.io/archive/ 2. win10sdk 下載 https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/ 安裝 debug工具路徑 qtcreater會(huì)自動(dòng)識(shí)別 調(diào)試器選擇

    2024年02月12日
    瀏覽(14)
  • FFmpeg開(kāi)發(fā)筆記(十七)Windows環(huán)境給FFmpeg集成字幕庫(kù)libass

    ? libass是一個(gè)適用于ASS和SSA格式(Advanced Substation Alpha/Substation Alpha)的字幕渲染器,支持的字幕類型包括srt、ass等,凡是涉及到給視頻畫面添加字幕,均需事先集成libass。 《FFmpeg開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“7.3.1 ?Linux環(huán)境安裝libass”介紹了如何在Linux環(huán)境給

    2024年04月27日
    瀏覽(22)
  • FFmpeg開(kāi)發(fā)筆記(十二)Linux環(huán)境給FFmpeg集成libopus和libvpx

    ? MP4是最常見(jiàn)的視頻封裝格式,在《FFmpeg開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“1.2.3 ?自行編譯與安裝FFmpeg”介紹了如何給FFmpeg集成x264和x265兩個(gè)庫(kù),從而支持H.264和H.265兩種標(biāo)準(zhǔn)的編解碼。 視頻的封裝格式除了古老的MP4和ASF之外,還有較新的WebM格式,該格式的音頻編

    2024年04月08日
    瀏覽(18)
  • FFmpeg開(kāi)發(fā)筆記(十三)Windows環(huán)境給FFmpeg集成libopus和libvpx

    ? MP4是最常見(jiàn)的視頻封裝格式,在《FFmpeg開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“1.2.3 ?自行編譯與安裝FFmpeg”介紹了如何給FFmpeg集成x264和x265兩個(gè)庫(kù),從而支持H.264和H.265兩種標(biāo)準(zhǔn)的編解碼。 視頻的封裝格式除了悠久的MP4和ASF之外,還有較新的WebM格式,該格式的音頻編

    2024年04月13日
    瀏覽(23)
  • FFmpeg開(kāi)發(fā)筆記(十一)Windows環(huán)境給FFmpeg集成vorbis和amr

    ? FFmpeg內(nèi)置了aac音頻格式,在《FFmpeg開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“5.2.2 ?Linux環(huán)境集成mp3lame”又介紹了如何給FFmpeg集成mp3格式,常見(jiàn)的音頻文件除了這兩種之外,還有ogg和amr兩種格式也較常用。其中ogg格式的編解碼依賴于libogg和libvorbis,而amr格式的編解碼依賴

    2024年04月08日
    瀏覽(20)
  • FFmpeg開(kāi)發(fā)筆記(十)Linux環(huán)境給FFmpeg集成vorbis和amr

    ? FFmpeg內(nèi)置了aac音頻格式,在《FFmpeg開(kāi)發(fā)實(shí)戰(zhàn):從零基礎(chǔ)到短視頻上線》一書的“5.2.2 ?Linux環(huán)境集成mp3lame”又介紹了如何給FFmpeg集成mp3格式,常見(jiàn)的音頻文件除了這兩種之外,還有ogg和amr兩種格式也較常用。其中ogg格式的編解碼依賴于libogg和libvorbis,而amr格式的編解碼依賴

    2024年04月08日
    瀏覽(14)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包