• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            xvid編碼器(xvid編碼器視頻太大)

            更新時間:2023-03-01 14:27:46 閱讀: 評論:0

            前言

            FFmpeg是非常強大的音視頻處理工具,我們可以使用它來處理視頻合成、剪輯、加特效等等操作。

            官方文檔至上 ,大家可以先閱讀FFmpeg的官方文檔

            FFmpeg的官方文檔命令真的是太多太多,而且都是英文,感覺精通完這些命令,都夠學一門新語言了!

            SO 為了讓一些小伙伴們快速的用上FFmpeg,我整理了一些FFmpeg的常用的知識和大部分日常用到的命令供大家查閱!

            還不收藏嗎?廢話不多說上干貨!

            關于音視頻需要了解的東西音/視頻流

            在音視頻領域,我們把一路音/視頻稱為一路流。如我們小時候經常使用VCD看港片,在里邊可以選擇粵語或國語聲音,其實就是CD視頻文件中存放了兩路音頻流,用戶可以選擇其中一路進行播放。

            容器

            我們熟悉的mp4,rmvb,mkv,avi是多媒體容器文件格式(或稱多媒體封裝格式),所謂容器是指將不同的數據流(視頻流,音頻流,字幕流等)封裝在一個文件(載體)中。 播放時各種流分別進行解碼等處理后,然后輸出到顯示器和音響等設備進行播放。多媒體容器格式不同于編碼格式,一個容器中可以封裝多種編碼格式的媒體流。 流封裝了實際的媒體數據,如視頻流,音頻流和字幕流等。一般情況下,流中的數據只能使用一種編碼格式。

            【更多音視頻學習資料,點擊下方鏈接免費領取↓↓,先碼住不迷路~】

            C++程序員必看,抓住音視頻開發的大浪潮!沖擊年薪60萬

            channel

            是音頻中的概念,稱之為聲道。在一路音頻流中,可以有單聲道,雙聲道或立體聲。

            幀率

            幀率(frames per cond, fps)是每秒畫面刷新的次數,幀率越高視頻越流暢。一般來說30fps就是可以接受的,60fps則可以明顯提升交互感和逼真感,但是一般超過75fps一般就不容易察覺到有明顯的流暢度提升了。

            分辨率

            分辨率表示畫面的精細程度,通常用像素密度來表示,常用的單位為ppi(像素每英寸)。通常像素密度越高畫面越精細,模糊程度越低。對于視頻文件而言,像素密度是無法控制的(由播放器和顯示設備決定)。我們通常用視頻的像素數來表示它的分辨率如1080x640, 640x320等。

            比特率

            比特率(bit rate)又稱碼率,表示多媒體流每秒輸出的字節數,單位為KB/s,Kbps等。同樣的壓縮算法下,比特率越高音視頻的質量越好。

            可變碼率(Variable Bitrate, VBR)

            指的是編碼器的輸出碼率可以根據輸入源信號的復雜度進行自適應調整,以在輸出質量保持不變的條件下盡可能減少數據量。VBR適用于存儲,不太適用流式傳輸。

            固定碼率(Constant Bitrate, CBR)

            指的是編碼器輸出碼率固定,CBR不適合存儲,對于復雜內容可能沒有足夠碼率進行編碼,從而導致質量下降,同時會在簡單內容部分浪費一些碼率。

            采樣率

            每秒鐘對音頻信號的采樣次數,采樣頻率越高聲音還原度越高,聲音更加自然,單位是赫茲 Hz。音頻文件一般使用的采樣率是 44.1kHz,也就是一秒鐘采樣44100次,實驗發現低于這個值就會有較明顯的損失,而高于這個值人的耳朵已經很難分辨,而且增大了數字音頻所占用的空間。

            視頻編碼

            視頻流可以看做圖片的序列,我們把這個序列中的一張圖片稱為一幀。若存儲視頻中所有幀則會數據量過大,不便于存儲和傳輸。所幸統計表明大多數視頻相鄰幀之間的區別并不大,所以對于一段變化不大的視頻,我們可以先完整編碼幀A,其后的B幀只需要編碼與A幀不同的部分,B幀后的C幀則只編碼與B幀的差異。如此遞推,將一段視頻編碼為一個序列。當某個圖像與之前的圖像變化很大無法參考前面的幀來生成,我們就結束上一個序列將該幀完整編碼開始一個新的序列。

            H264是目前流行的一種視頻編碼算法,它定義了三種幀:完整編碼的I幀,參考I幀生成只包含差異的P幀,以及以及參考前后幀編碼的B幀。H264采用的核心算法是幀內壓縮和幀間壓縮,幀內壓縮是生成I幀的算法,幀間壓縮是生成B幀和P幀的算法。通常,我們也把完整編碼的I幀稱為關鍵幀。因為解碼非關鍵幀需要解碼其參考的幀,因此在截圖等不需要全部解碼的操作中,經常截取關鍵幀以提升性能。FFmpeg的基本字符命令-i 輸入文件的地址-y 表示直接覆蓋已經存在的輸出文件-n 表示若某個輸出文件已經存在則退出(若沒有設置-y或-n選項,且某個輸出文件已經存在ffmpeg會詢問是否要覆蓋輸出文件)-codec(-c) 指定輸入輸出的解碼編碼器 copy 則將輸入流直接復制到輸出流不進行編解碼操作-c:v 或-vcodec 可以為所有視頻流指定編碼器,-c:v:1為第2個視頻流指定編解碼器。xvid(使用XVID編碼壓縮視頻,不能改的)-c:a 或-acodec 可以為所有音頻流指定編碼器,-c:a:12為第13個視頻流指定編解碼器。-pixel_format/-pix_fmt 指定轉換格式 例:yuv420p-vol 音量-ss 選項用于設置流的開始時間,可以設置輸入輸出或者濾鏡。在開始時間之前的幀將被跳過不被處理(輸入不被解碼,輸出不被編碼,濾鏡不被處理)。例:ffmpeg -ss 2 -t 10 -i test.mp4 test.mov時長的格式:如-t 10, -t 23.167 時分秒: 如-t 10:23, -t 21:31:00.233-t 選項用于用于設置輸入輸出,-t在-i前可以限制輸入時長,-t在輸出文件前可以限制輸出時長-to 選項類似于-t選項,不同的是-to指定結束時刻,-t指定持續時間-f 強制設置輸入輸出的文件格式,默認情況下ffmpeg會根據文件后綴名判斷文件格式-filter / -filter_complex 使用過濾器對流進行處理 復雜過濾器-vf 代替-filter:v處理視頻流-af 代替-filter:a處理音頻流-vframes 設置要輸出的視頻幀的數量: 例:ffmpeg -i test.mp4 -vframes 10 test.mov-aframes 設置要輸出的音頻幀的數量。這是-frames:a的一個過時的別名。-vn 不將視頻流寫到輸出文件中無視頻的意思 例:ffmpeg -i test.mp4 -vn -a:c copy out.mp3-an 不將音頻流寫到輸出文件中無音頻的意思 例:ffmpeg -i test.mp4 -v:c copy -an out.mp4-r 設置某個流的幀率按ffmpeg官方文檔說-r與-framerate作用相同,但實際測試時發現不同。-framerate 用于限制輸入,而-r用于限制輸出 例:ffmpeg -i test.mp4 -r:v 30 test.mov-s 設置幀的大小 例:ffmpeg -i test.mp4 -s 1080x680 out.mp4-aspect [:stream_specifier] 寬高比(輸出,每個流) 設置方面指定的視頻顯示寬高比。aspect可以是浮點數字符串,也可以是num:den形式的字符串,其中num和den是寬高比的分子和分母。例如“4:3”,“16:9”,“1.3333”和“1.7777”是有效的參數值。如果與-vcodec副本一起使用,則會影響存儲在容器級別的寬高比,但不會影響存儲在編碼幀中的寬高比(如果存在)。-threads 設置處理線程數 例:ffmpeg -threads 8 -i test.mp4 out.mp4-shortest 當最短的輸入流結束后即停止編碼和輸出 例:ffmpeg -i bgm.mp3 -i test.mp4 -shortest output.mp4-sample_fmts 設置音頻采樣格式。使用-sample_fmts獲取支持的樣本格式列表。-b:a 指定音頻碼率。 b 是 bitrate的縮寫, a是 audio的縮寫-b:v 指定視頻碼率。 b 是 bitrate的縮寫, v是 video的縮寫-loop 循環輸入流。只工作于圖像流concat 拼接視頻 例:ffmpeg -i "concat:1.mp4|2.mp4|3.mp4" -c copy output.mp4Filter(濾鏡)復雜過濾器(filter_complex)

            過濾器會對已解碼的幀進行處理,處理后的幀會被重新編碼輸出

            scale

            指定操作源的大小,iw指定按整型取視頻的寬度,ih指定按整型取視頻的高度。-1為按原圖比例變化 例:iw/2:-1視頻縮小一倍

            overlay

            指定操作源擺放的位置 overlay=30:10 main_w和main_h為底層視頻的寬和高,overlay_w和overlay_h為疊加視頻的寬和高

            delogo

            刪除水印 例:delogo=x=800:y=20:w=70:h=80

            【更多音視頻學習資料,點擊下方鏈接免費領取↓↓,先碼住不迷路~】

            C++程序員必看,抓住音視頻開發的大浪潮!沖擊年薪60萬

            crop

            裁剪 格式:crop=out_w:out_h: x :y out_w: 輸出的寬度。可以使用 in_w 表式輸入視頻的寬度。 out_h: 輸出的高度。可以使用 in_h 表式輸入視頻的高度。 x : X坐標 y : Y坐標 x和y 設置為 0,說明從左上角開始裁剪。如果不寫是從中心點裁剪

            tpts

            tpts=0.5*PTS表示每幀視頻的pts時間戳都乘0.5,也就是視頻加快一倍

            -map

            可用于處理復雜輸出,如可以將指定的多路流輸出到一個輸出文件,也可以指定輸出到多個文件。"[v]" 復雜濾鏡輸出的別名作為輸出文件的一路流。上面 map的用法是將復雜濾鏡輸出的視頻和音頻輸出到指定文件中。

            水平翻轉hflip鏡像

            crop=iw/2:ih:0:0,split[left][tmp];[tmp]hflip[right]

            各種特效curves

            curves='vintage'(復古) 'strong_contrast'(強對比度)'lighter'(變亮) 'negate'(底片) 'none' 'color_negative'(彩色底片);

            邊緣檢測edgedetect光暈vignette=PI/4變暗

            colorlevels=rimin=0.058:gimin=0.058:bimin=0.058

            增加對比度

            fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))

            降噪

            hqdn3d=luma_spatial=15.0

            銳化

            fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'

            低通濾波

            fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'

            高通濾波

            fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'

            fade 視頻淡入淡出效果

            例:fade=in:0:25, fade=out:975:25 從0楨開始淡入25幀,從975開始淡出25幀 fade=in:5:20:color=yellow 開始淡入前為黃色 fade=in:0:25:alpha=1 淡入完成后過去15幀的透明度 fade=t=in:st=5.5:d=0.5 5.5秒開始,淡入0.5秒 d為時長

            fps濾鏡通過刪除幀或者復制幀的方法強制設置幀率 例:ffmpeg -y -i test.mp4 -vf "fps=60" out.mp4

            常用命令視頻格式轉換

            ffmpeg -i out.mp4 -y out.avi

            視頻轉Gif

            視頻轉Gif

            ffmpeg -i out.mp4 -y out.gif

            從0開始截10s轉Gif

            ffmpeg -i out.mp4 -ss 00:00:00 -t 10 -y out.gif

            視頻轉多張圖片每秒生成一個張圖片

            ffmpeg -i input_test.mp4 -vf fps=1 out%03d.png

            每分鐘生成一張圖片

            ffmpeg -i input_test.mp4 -vf fps=1/60 out%03d.png

            截取視頻中的某段視頻

            ffmpeg -ss 2 -i test.mp4 -t 10 -y -f out_test.mp4

            截取從2s開始10秒的視頻

            視頻分片(把視頻切為一段一段)

            ffmpeg -i test.mp4 -c copy -map 0 -f gment -gment_time 10 video/part-%d.mp4

            截取視頻中某個時間段的單張圖片或多張圖片

            ffmpeg -ss 2 -i test.mp4 -r 1 -t 2 -y -f image2 image-%3.jpeg

            單張圖片或多張圖片轉視頻

            ffmpeg -loop 1 -i img%3d.png -t 10-y output.mp4

            Gif轉視頻

            ffmpeg -i input.gif -y output.mp4

            多個視頻合并

            ffmpeg -i "concat:input1.mp4|input2.mp4|input3.mp4" -c copy output.mp4

            修改視頻分辨率

            ffmpeg -i input_test.mp4 -s 320*240 out_test.mp4

            給視頻添加音頻

            ffmpeg -i input.mp4 -i input1.mp3 -y output.mp4

            提取視頻中的音頻

            ffmpeg -i test.mp4 -vn -a:c copy out.mp3

            視頻靜音

            ffmpeg -i input.mp4 -an -vcodec copy output.mp4

            音頻合并

            ffmpeg -i "concat:test1.mp3|test2.mp3" -acodec copy output.mp3

            高級命令音頻混音

            ffmpeg -i input_01.wav -i input_02.wav -filter_complex amix=inputs=2:duration=shortest:dropout_transition=3 output.wav

            以兩個音頻文件時長較短的音頻文件時長作為最終輸出的時長

            inputs: The number of inputs. If unspecified, it defaults to 2.//輸入的數量,如果沒有指明,默認為2.duration: 決定了流的結束longest: 最長輸入的持續時間shortest:最短輸入的持續時間first: 第一個輸入的持續時間dropout_transition: 輸入流結束時(音頻)容量重整化的轉換時間(以秒為單位)。 默認值為2秒。添加文字水印

            ffmpeg -y -i test.mp4 -vf "drawtext=fontfile=CourierNew.ttf:text='hello world':x=100:y=50:fontsize=24" out.mp4

            Android端添加文字水印

            由于Android端字體庫的原因,我可以通過把文字轉成圖片,再加到視頻上的方式來添加,以下是文字轉圖片的源碼:

            /**

            * 文本轉成Bitmap

            * @param text 文本內容

            * @param context 上下文

            * @return 圖片的bitmap

            */

            private static Bitmap textToBitmap(String text , Context context) {

            float scale = context.getResources().getDisplayMetrics().scaledDensity;

            TextView tv = new TextView(context);

            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(

            LinearLayout.LayoutParams.WRAP_CONTENT,

            LinearLayout.LayoutParams.WRAP_CONTENT);

            tv.tLayoutParams(layoutParams);

            tv.tText(text);

            tv.tTextSize(scale * TEXT_SIZE);

            tv.tGravity(Gravity.CENTER_HORIZONTAL);

            tv.tDrawingCacheEnabled(true);

            tv.tTextColor(TEXT_COLOR);

            tv.tBackgroundColor(Color.WHITE);

            tv.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),

            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

            tv.layout(0, 0, tv.getMeasuredWidth(), tv.getMeasuredHeight());

            tv.buildDrawingCache();

            Bitmap bitmap = tv.getDrawingCache();

            int rate = bitmap.getHeight() / 20;

            return Bitmap.createScaledBitmap(bitmap, bitmap.getWidth()/rate, 20, fal);

            }

            /**

            * 文字生成圖片

            * @param filePath filePath

            * @param text text

            * @param context context

            * @return 生成圖片是否成功

            */

            public static boolean textToPicture(String filePath, String text , Context context){

            Bitmap bitmap = textToBitmap(text , context);

            FileOutputStream outputStream = null;

            try {

            outputStream = new FileOutputStream(filePath);

            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);

            outputStream.flush();

            } catch (IOException e) {

            e.printStackTrace();

            return fal;

            }finally {

            try {

            if(outputStream != null){

            outputStream.clo();

            }

            } catch (IOException e) {

            e.printStackTrace();

            }

            }

            return true;

            }

            【更多音視頻學習資料,點擊下方鏈接免費領取↓↓,先碼住不迷路~】

            C++程序員必看,抓住音視頻開發的大浪潮!沖擊年薪60萬

            添加圖片水印

            添加單個圖片水印

            ffmpeg -i input.mp4 -i water.png -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:10" -y output.mp4

            添加多個圖片水印

            ffmpeg -i input.mp4 -i photo1.png -i photo2.png -filter_complex "[0:v]fade=in:st=0:d=2,curves=vintage[img];[1:v]scale=300:-1[img1];[img][img1]overlay=10:10[out1];[out1][2:v]overlay=main_w:main_h" -y output.mp4

            添加了兩張圖片圖片,第一張設置為寬度300,高度-1為根據原圖片比例縮放,在視頻左上角,第二張圖片在視頻右下角,fade是淡入淡出效果器,視頻效果為從0s開始淡入,淡入2s,視頻為復古效果curves=vintage

            跑馬燈效果

            ffmpeg -i video2.mp4 -i logo.png -filter_complex "[1:v]scale=50*50[logo];[0:v]scale=200*200[bg];[bg][logo]overlay=x='if(gte(t,0),-overlay_w+(mod(n,main_w+overlay_w))+5,NAN)':y=0" -y output.mp4

            含義: 時間t大于0,那么就開始從子內容的寬度的x-overlay_w位置開始,然后每一幀n計數,幀數n除以(背景main_w+子內容背景overlay_w)求除數+1設置為x坐標,即可循環 overlay=30:10 main_w和main_h為底層視頻的寬和高,overlay_w和overlay_h為疊加視頻的寬和高

            視頻去水印

            ffmpeg -i test.flv -vf delogo=x=20:y=20:w=70:h=80 output.flv

            x,y :指定水印的位置,即圖片左上角的坐標 w,h:給出水印的寬高

            添加動畫

            ffmpeg -y -i test.mp4 -t 10 -loop 1 -framerate 6 -i test_%3d.png -filter_comple 'overlay=10:main_h-overlay_h-10' out.mp4

            將多張圖片(test_001.png, ani002.png...)組成動畫, 然后將這個動畫疊加在視頻的左下角。-t 10 -loop 1會循環播放動畫,持續10s

            淡入淡出效果器

            ffmepg -i input.wav -filter_complex afade=t=in:ss=0:d-4 output.wav

            (淡入)把 input 文件的前5s 做一個淡入效果,輸出到 output.wav 中

            ffmpeg -i input.wav -filter_complex afade=t=out:st=200:d=5 output.wav

            (淡出)將input.wav文件從200s開始,做5s的淡出效果,并放到output.wav文件中

            視頻提亮效果器

            ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=brightness=0.25 -f mp4 output.mp4

            提亮參數是brightness,取值范圍是從-1.0到1.0,默認值是0

            為視頻增加對比度效果

            ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=contrast=1.5 -f mp4 output.mp4

            對比度參數是contrast,取值范圍是從-2.0到2.0,默認值是1.0

            截取視頻區域

            ffmpeg -i input.mp4 -an -vf "crop=480:480:120:0" -vcodec libx264 -b:v 800k output.mp4

            旋轉視頻

            ffmpeg -i input.mp4 -vf "transpo=1" -b:v 600k output.mp4

            改變視頻音量

            ffmpeg -i input.mp4 -af 'volume=0.5' output.mp4

            壓縮視頻

            -pret superfast 可以加快合成視頻時間

            視頻壓縮主要是改變視頻的碼率、比特率和分辨率去壓縮,但是需要控制好縮小的碼率和分辨率,以保證視頻的質量符合你的需求 ffmpeg -i input.mp4 -b:v 600k -y output.mp4

            推薦比特率

            阿里云給的建議

            如果你對音視頻開發感興趣,覺得文章對您有幫助,別忘了點贊、收藏哦!或者對本文的一些闡述有自己的看法,有任何問題,歡迎在下方評論區討論!

            本文發布于:2023-02-28 20:03:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167765206675002.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:xvid編碼器(xvid編碼器視頻太大).doc

            本文 PDF 下載地址:xvid編碼器(xvid編碼器視頻太大).pdf

            標簽:編碼器   太大   視頻   xvid
            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲欧美日产综合在线网| 精品国产VA久久久久久久冰| 中日韩中文字幕一区二区| 国产人妻大战黑人第1集| 国内精品免费久久久久电影院97 | 国内自拍视频一区二区三区| japanese丰满奶水| 色天天综合网| 97国产揄拍国产精品人妻| 性xxxxxx中国寡妇mm| 线观看的国产成人av天堂| 久久国产精品99久久蜜臀| 精品日韩人妻中文字幕| 国产精品乱码高清在线观看| 在线观看mv的免费网站| 久久精品国产亚洲av天海翼| 丁香五月亚洲综合在线国内自拍| 天天做日日做天天添天天欢公交车 | 国产精品专区第1页| 日本在线视频网站www色下载| 唐人社视频呦一区二区| 四虎国产精品成人免费久久| 精品videossexfreeohdbbw| 最新国产精品精品视频| 久久免费观看归女高潮特黄| 猫咪AV成人永久网站在线观看| 日本免费一区二区三区高清视频| 国产精品免费中文字幕| 扒开双腿猛进入喷水高潮叫声| 人妻无码手机在线中文| 男女xx00xx的视频免费观看| 少妇人妻偷人免费观看| 日韩人妻少妇一区二区三区| 国产精品无码av天天爽播放器| 亚洲男人天堂东京热加勒比| 亚洲午夜伦费影视在线观看| 亚洲熟妇自偷自拍另类| 18av千部影片| 亚洲真人无码永久在线| 国产精品一二三区蜜臀av| 美女一区二区三区在线观看视频|