天天看點

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

FFmpeg 系列文章目錄

【FFmpeg】Windows 搭建 FFmpeg 指令行運作環境

【FFmpeg】FFmpeg 相關術語簡介

【FFmpeg】FFmpeg 相關術語簡介 二

【FFmpeg】FFmpeg 幫助文檔使用

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程

文章目錄

  • FFmpeg 系列文章目錄
  • 一、視訊格式轉換
    • 1、x264 視訊格式轉換
    • 2、x265 視訊格式轉換
  • 二、視訊格式轉換流程

一、視訊格式轉換

1、x264 視訊格式轉換

使用 x264 壓縮格式 , 将原始 大小 1920x1040 大小的 mp4 格式的視訊轉為 960x520 的 flv 格式的視訊 ;

進入視訊所在目錄 , 執行如下指令 :

ffmpeg -i 1920x1040.mp4 -acodec copy -vcodec libx264 -s 960x520 960x520.flv
           

指令執行過程 :

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

轉換前的視訊資訊 :

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

轉換後的視訊資訊 :

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

2、x265 視訊格式轉換

使用 x265 壓縮格式 , 将原始 大小 1920x1040 大小的 mp4 格式的視訊轉為 960x520 的 mkv 格式的視訊 ;

進入視訊所在目錄 , 執行如下指令 :

ffmpeg -i 1920x1040.mp4 -acodec copy -vcodec libx265 -s 960x520 960x520.mkv
           

指令執行結果 :

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

轉換前的視訊資訊 :

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

轉換後的視訊資訊 :

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

二、視訊格式轉換流程

分析如下指令的詳細流程 :

ffmpeg -i 1920x1040.mp4 -acodec copy -vcodec libx264 -s 960x520 960x520.flv
           

将 1920x1040 大小的 mp4 格式的視訊檔案 , 使用 x264 編解碼器 , 轉為 960x520 大小的 flv 格式的視訊檔案 ;

藍色的是 檔案 / 中間産物 , 紅色的是過程 ;

輸入檔案 : 輸入 1920x1040 大小的 mp4 格式檔案 , 1920x1040.mp4 ;

解複用 : 使用 demuxer 解複用器 , 将輸入檔案進行解複用操作 , 從容器中分别将 AVC 視訊流 , AAC LC 音頻流取出 , 得到編碼資料包 ;

編碼資料包 : 該資料包中的音視訊資料都是編碼後的資料 , 不能直接使用 ; 編碼資料包中的視訊流資料是 AVC 編碼格式的 , 音頻流資料是 AAC LC 編碼格式的 ;

【FFmpeg】使用 FFmpeg 處理音視訊格式轉換流程 ( 解複用 | 解碼 | 幀處理 | 編碼 | 複用 )

解碼 : 使用 decoder 解碼器 , 解碼 AVC 編碼的視訊流資料 , AAC LC 編碼的音頻流資料 , 得到解碼後的資料 ;

解碼後的資料幀 : 音頻資料是 PCM 采樣 , 視訊幀 資料是一張張 YUV 格式的圖檔 ;

幀處理 : 使用 filter 過濾器 處理 解碼後的資料幀 , 将其轉為 處理後的資料幀 ; 該過程中将視訊的分辨率進行了修改 , 分辨率從 1920x1040 轉為 960x520 ;

如果要修改視訊的相關參數 , 如 時間 , 幀率 , 都在該步驟進行操作 , 操作的主體一定是解碼後的資料幀 ;

處理後的資料幀 : 該資料幀是可以直接用于播放 ; 音頻資料是 PCM 采樣 , 視訊幀 資料是一張張 YUV 格式的圖檔 ;

編碼 : 使用 encoder 編碼器 , 将處理後的資料幀進行編碼 , 音頻從 PCM 采樣轉為 AAC LC 編碼格式 , 視訊從 YUV 圖檔編碼為 AVC 編碼格式 ,