FFNPEG編譯腳本

下面是一個ffmpeg編譯腳本:

#!/bin/bash
set -eu -o pipefail
set +eu +o pipefailFFMPEG_TAG=n4.5-dev
build_path=$1
git_repo="https://github.com/FFmpeg/FFmpeg.git"
cache_tool=""
sysroot=""
c_compiler="gcc"
cxx_compiler="g++"
ffmpeg_dir=""
build_only=false
parallel="-j$(nproc)"usage="Usage: $0 [FFMPEG_TAG [build_path [git_repo [cache_tool]]]] [Options]Options:FFMPEG_TAG          FFMPEG git tag. (default $FFMPEG_TAG)build_path          Target folder to build. (default \$(pwd))git_repo            Link of FFmpeg.git. (default $git_repo)[-c ]cache_tool     ccache or sccache-S sysroot          sysroot-C c-compiler       c compiler-X cxx-compier      cxx compiler-F ECFLAGS          add ECFLAGS to CFLAGS []-s ffmpeg_dir       ffmpeg_dir cloned.-j parallel         make -j parallel default is \$(nproc)-b                  build only
exp:1. $0 $FFMPEG_TAG \$(pwd) $git_repo ccache2. $0 $FFMPEG_TAG -c ccache
"for _ff in FFMPEG_TAG build_path git_repo cache_tool; doif [ "${1::1}" = "-" ]; thenbreakelseeval $_ff="$1"shiftfi
donewhile getopts ':hc:C:X:S:bs:j:' opt; docase "$opt" inb)build_only=true;;c)cache_tool="$OPTARG ";;C)c_compiler="$OPTARG";;X)cxx_compiler="$OPTARG";;S)sysroot="--sysroot=$OPTARG";;s)ffmpeg_dir=$(realpath $OPTARG);;j)if [ "$OPTARG" -eq "$OPTARG" ]; thenparallel="-j $OPTARG"elseecho "$OPTARG should be a number, use '$parallel' by default"fi;;? | h)echo "$usage"exit 1;;esac
donesrc_path=$(dirname $(readlink -f $0))
echo "src path: ${src_path}"
echo "build path: ${build_path}"
echo "ffmpeg path: ${ffmpeg_dir}"if [ -z $ffmpeg_dir ]; thenecho "delete old FFmpeg files"rm -rf ${build_path}/FFmpeg-${FFMPEG_TAG}rm -rf ${build_path}/ffmpeg_gcuecho "download FFmpeg-${FFMPEG_TAG}"git clone -b ${FFMPEG_TAG} $git_repo ${build_path}/FFmpeg-${FFMPEG_TAG}ffmpeg_dir=${build_path}/FFmpeg-${FFMPEG_TAG}
elif ! [ -d $ffmpeg_dir ]; thenecho "FFmpeg need to be cloned to $ffmpeg_dir"exit 1
fiecho "copy FFmpeg GCU Plugin files info FFmpeg source tree"
cd $ffmpeg_dir
cp ${src_path}/src/configure ${ffmpeg_dir}/
cp ${src_path}/src/libavformat/* ${ffmpeg_dir}/libavformat/
cp ${src_path}/src/libavcodec/* ${ffmpeg_dir}/libavcodec/
cp ${src_path}/src/libavutil/* ${ffmpeg_dir}/libavutil/
cp ${src_path}/src/examples/* ${ffmpeg_dir}/doc/examples/echo "configure FFmpeg"
./configure \--prefix=${build_path}/ffmpeg_gcu \--extra-cflags="-g" \--extra-ldflags="-fuse-ld=gold" \--extra-ldflags="-m64 -lefrt -lefdrv -ltopsrt -ltopscodec -ldl -lpthread" \--disable-stripping \--disable-x86asm \--enable-swscale \--disable-decoders \--disable-optimizations \--enable-topscodec \--enable-decoder=vc1 \--enable-decoder=av1 \--enable-decoder=h264 \--enable-decoder=hevc \--enable-decoder=vp8 \--enable-decoder=vp9 \--enable-decoder=mpeg4 \--enable-decoder=mpeg2video \--enable-decoder=mjpeg \--enable-decoder=h264_topscodec \--enable-decoder=hevc_topscodec \--enable-decoder=mpeg2_topscodec \--enable-decoder=mpeg4_topscodec \--enable-decoder=h263_topscodec \--enable-decoder=vc1_topscodec \--enable-decoder=vp8_topscodec \--enable-decoder=vp9_topscodec \--enable-decoder=avs_topscodec \--enable-decoder=avs2_topscodec \--enable-decoder=mjpeg_topscodec \--enable-decoder=av1_topscodec \--cc="${cache_tool}$c_compiler" \--cxx="${cache_tool}$cxx_compiler" \$sysroot \--enable-cross-compile \--disable-static \--enable-sharedif [ $? -ne 0 ]; thenecho "configure failed"exit 1
fimake cleanecho "make"
make $parallel
if [ $? -ne 0 ]; thenecho "make failed"exit 1
fiecho "make examples"
make examples -j
if [ $? -ne 0 ]; thenecho "make examples failed"exit 1
fiif $build_only; thenexit 0
fiecho "make install"
make install
if [ $? -ne 0 ]; thenecho "make install failed"exit 1
ficp ${ffmpeg_dir}/doc/examples/hw_decode_tops  ${build_path}/ffmpeg_gcu/bin
cp ${ffmpeg_dir}/doc/examples/decode_tops     ${build_path}/ffmpeg_gcu/bin

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166929.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2023年亞太地區數學建模大賽 C 題

我國新能源電動汽車的發展趨勢 新能源汽車是指以先進技術原理、新技術、新結構的非常規汽車燃料為動力來源(非常規汽車燃料指汽油、柴油以外的燃料),將先進技術進行汽車動力控制和驅動相結合的汽車。新能源汽車主要包括四種類型:…

【mybatis注解實現條件查詢】

文章目錄 步驟1: 引入MyBatis依賴步驟2: 創建數據模型步驟3: 創建Mapper接口步驟4: 配置MyBatis步驟5: 執行條件查詢 步驟1: 引入MyBatis依賴 <dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.x.…

MobaXterm連接節點一段時間后超時Session stopped

1、MobaXterm &#xff08;1&#xff09;設置ssh 超時時間 &#xff08;2&#xff09;設置保持連接 如果服務器端設置了超時時間&#xff0c;會以服務器為準&#xff0c;具體設置&#xff1a; 2、服務端 cat /etc/ssh/sshd_config | grep "ClientAlive" 可以把設置…

一穿一戴一世界 | 紫光展銳2023智能穿戴沙龍成功舉辦

11月23日&#xff0c;紫光展銳在深圳成功舉辦了以“一穿一戴一世界”為主題的2023智能穿戴沙龍。展銳智能穿戴沙龍已舉辦四屆&#xff0c;旨在為行業提供啟發性的觀點和前瞻性的創新理念。本屆沙龍吸引了終端廠商、行業翹楚、生態伙伴等行業各領域超過500人匯聚一堂&#xff0c…

【HTML5-webscoket實時通信(web)】

websocket是什么&#xff1f; 就是用來創建網絡聊天室&#xff0c;實時通信websocket的方法有哪些&#xff1f; https://developer.mozilla.org/zh-CN/docs/Web/API/WebSockets如何實現&#xff1a;&#xff08;以下實現流程&#xff09; 前端&#xff1a; // 直播中// 聊天web…

機器篇——決策樹(六) 細說 評估指標的交叉驗證

本小節&#xff0c;細說 評估指標的交叉驗證。 三. 評估指標 3. 交叉驗證(cross validation) (1). 概念 交叉驗證(cross validation, cv) 主要用于模型訓練或建模應用中&#xff0c;如分類預測、PCR、PLS 回歸建模等。在給定的樣本空間中&#xff0c;拿出大部分…

HCIA-RS基礎-靜態路由協議

摘要&#xff1a;靜態路由是一種在網絡中廣泛應用的路由選擇方案&#xff0c;它以其簡單的配置和低開銷而備受青睞。本文將介紹靜態路由的配置方法、默認路由的設置、路由的負載分擔和備份策略。通過學習本文&#xff0c;希望可以你能夠掌握靜態路由的基本概念和在華為模擬器中…

貪心算法個人見解

目錄 基本思想&#xff1a; 貪心算法的步驟&#xff1a; 示例&#xff1a; 貪心算法&#xff08;Greedy Algorithm&#xff09;是一種基于貪心策略的算法范式&#xff0c;它在每一步選擇中都采取當前狀態下的最優選擇&#xff0c;而不考慮全局最優解。貪心算法通常適用于那些…

U-Boot 之九 詳解 Pinctrl 子系統、命令、初始化流程、使用方法

嵌入式芯片中,引腳復用是一個非常常見的功能,U-Boot 提供一個類似 Linux Kernel 的 Pinctrl 子系統來處理引腳復用功能。正好最近用到了這部分功能,需要移植 Pinctrl 驅動,特此記錄一下學習過程。 架構 U-Boot 提供一個類似 Linux Kernel 的 Pinctrl 子系統,用來統一各芯…

Double 4 VR智能互動教學系統在小語種課堂中的教學應用

小語種課堂一直是教育領域的一個難點。由于語言本身的復雜性和文化背景的差異&#xff0c;小語種教學一直是一個挑戰。傳統的課堂教學方法往往難以激發學生的學習興趣和動力&#xff0c;教學效果不盡如人意。而Double 4 VR智能互動教學系統為小語種課堂帶來了新的可能。 Double…

視頻服務網關的三大部署(三)

視頻網關是軟硬一體的一款產品&#xff0c;可提供多協議&#xff08;RTSP/ONVIF/GB28181/海康ISUP/EHOME/大華、海康SDK等&#xff09;的設備視頻接入、采集、處理、存儲和分發等服務&#xff0c; 配合視頻網關云管理平臺&#xff0c;可廣泛應用于安防監控、智能檢測、智慧園區…

RK WiFi部分信道在部分地區無法使用的原因

不同國家支持的WiFi信道不一樣&#xff0c;需要正確設置wificountrycode 修改路徑&#xff1a; device\rockchip\common\BoardConfig.mk 修改內容&#xff1a;androidboot.wificountrycodeXX 該屬性會被解析為 ro.boot.wificountrycode framework層會在&#xff1a; framewor…

用好語言模型:temperature、top-p等核心參數解析

編者按&#xff1a;我們如何才能更好地控制大模型的輸出? 本文將介紹幾個關鍵參數&#xff0c;幫助讀者更好地理解和運用 temperature、top-p、top-k、frequency penalty 和 presence penalty 等常見參數&#xff0c;以優化語言模型的生成效果。 文章詳細解釋了這些參數的作用…

leetcode 343.整數拆分 198.打家劫舍(動態規劃)

OJ鏈接 &#xff1a;leetcode 343.整數拆分 代碼&#xff1a; class Solution {public int integerBreak(int n) {int[] dp new int[n1];//每個n&#xff0c;拆分多個整數乘積的最大值dp [0] 0;dp [1] 1; for(int i 2 ; i<n; i){for(int j 0 ; j < i; j){dp[i] Ma…

如何看待數據確權問題?

今年8月&#xff0c;財政部發布了《關于印發<企業數據資源相關會計處理暫行規定>的通知》&#xff0c;將數據規劃到公司資產負債表的“資產”項&#xff0c;明確了哪些數據資源可以計入無形資產、存貨等資產項&#xff0c;從財務、會計處理角度對企業對數據資源享有的權利…

學習Java第52天,JDBC中statement的使用基本步驟

public class JdbcStatementQueryPart { /* * TODO: 步驟總結 (6步)* 1. 注冊驅動* 2. 獲取連接* 3. 創建statement* 4. 發送SQL語句,并獲取結果* 5. 結果集解析* 6. 關閉資源 */public static void main(String[] args) throws SQLException {//1.注冊驅動/…

小程序中的大道理--綜述

前言 以下將用一個小程序來探討一些大道理, 這些大道理包括可擴展性, 抽象與封裝, 可維護性, 健壯性, 團隊合作, 工具的利用, 可測試性, 自頂向下, 分而治之, 分層, 可讀性, 模塊化, 松耦合, MVC, 領域模型, 甚至對稱性, 香農的信息論等等. 為什么不用大程序來說大道理呢? …

CMS指紋識別方式

一、手工識別 1.robots.txt文件 robots.txt文件我們寫過爬蟲的就知道,這個文件是告訴我們哪些目錄是禁止爬取的。但是大部分的時候我們都能通過robots.txt文件來判斷出cms的類型 如: 從wp路徑可以看出這個是WordPress的cms 這個就比較明顯了直接告訴我們是PageAdmin cms 也…

Python大語言模型實戰-記錄一次用ChatDev框架實現爬蟲任務的完整過程

1、模型選擇&#xff1a;GPT4 2、需求&#xff1a;在win10操作系統環境下&#xff0c;基于python3.10解釋器&#xff0c;爬取豆瓣電影Top250的相關信息&#xff0c;包括電影詳情鏈接&#xff0c;圖片鏈接&#xff0c;影片中文名&#xff0c;影片外國名&#xff0c;評分&#x…

C語言小練

給定兩個數&#xff0c;求這兩個數的最大公約數 本算法主要利用輾轉相除法求出兩個數的最大公約數。 int main(){int m0;int n0;int r0;scanf("%d %d",&m,&n);while(rm%n){mn;nr;} printf("%d\n",n);return 0; } 打印斐波那契數列指定位置的值 …