1. 程式人生 > >windows下使用FFmpeg生成YUV視訊檔案並播放(通過命令的方式)

windows下使用FFmpeg生成YUV視訊檔案並播放(通過命令的方式)

一、YUV的定義

  YUV是一種顏色編碼方法。它跟我們常見的RGB格式區分開來,常使用在各個視訊處理元件中。其中"Y"代表明亮度,"U"和"V"代表其色度。視訊播放器把市面上流行的MP4等格式的視訊檔案解碼出來,得到的一般會是YUV格式的資料,然後得進行轉碼(比如通過opengl的shader或者ffmpeg),把YUV格式的資料轉成RGB格式的資料,然後才能在顯示屏播放顯示。

  YUV跟RGB比起來,優點是:1、亮度參量和色度參量分開表示,不但可以避免相互干擾,還可以降低色度的取樣率而不會對影象質量影響太大(也就是說色度頻道的取樣率可比 Y 頻道低,同時不會明顯降低視覺質量);2、只需要極少的頻寬來進行視訊訊號傳輸;3、佔用空間小,對於同一幅影象,使用YUV420表示比RGB24表示少佔用一半的空間,資料率壓縮了一倍,而影象的效果基本沒發生變化。

二、通過FFmpeg命令轉換得到YUV檔案

  如下圖所示,工程目錄下有video1.mp4這個MP4檔案,下面我們介紹把它轉為YUV檔案的方法。

在命令提示符cmd.exe中進入當前工程所在目錄(ffmpeg.exe和video1.mp4所在目錄),然後輸入命令:

ffmpeg -i video1.mp4 -ss 00:00:20 -t 10 -s 640x272 -pix_fmt yuv420p video1.yuv

該命令的作用是把所在路徑下的video1.mp4檔案從第20秒開始,往下10秒,即20~30秒之間,擷取這段時間的視訊,把它轉換為幀寬度為640,幀高度為272,畫素格式為yuv420p的YUV檔案:video1.yuv。

注: -i 表示設定輸入流 -ss 表示開始時間  -t 表示共要多少時間 -s 設定畫面的寬與高 -pix_fmt 設定的畫素格式

執行該命令後,我們發現工程目錄下會生成video1.yuv檔案,如下圖所示:

三、使用ffplay.exe播放YUV檔案

   YUV檔案用市面上流行的播放器我們一般無法直接播放。但我們可以通過FFmpeg提供的ffplay.exe播放YUV檔案。

  在命令提示符cmd.exe中進入當前工程所在目錄(ffplay.exe和video1.yuv所在目錄),然後輸入命令:

ffplay -video_size 640x272 -i video1.yuv

該命令的作用是使用ffplay播放幀寬度為640,幀高度為272的YUV檔案vido1.yuv

注:

-i 表示指定的輸入檔案 -video_size 播放的視訊檔案的幀寬度和幀高度

如下圖所示,看到如下畫面,則表示播放成功。