ffmpeg轉碼器移植VC的project:ffmpeg for MFC

本文介紹一個本身作的FFMPEG移植到VC下的開源project:ffmpeg for MFC。本project將ffmpegproject中的ffmpeg轉碼器(ffmpeg.c)移植到了VC環境下。html

並且使用MFC作了一套簡單的界面。它可以完畢一個視頻轉碼的基本功能:封裝格式以及編碼格式的轉換。git

經過本程序可以學習視頻轉碼器的原理。以及Windows的消息機制等知識。github


平臺:VC2010web

類庫:FFmpeg,MFC函數

眼下正在無缺中。先不上傳到CSDN下載了。post

在SourceForge上創建了一個項目。學習


項目主頁編碼

SourceForge:https://sourceforge.net/projects/ffmpegformfc/.net

Github:https://github.com/leixiaohua1020/ffmpegmfccode

開源中國:http://git.oschina.net/leixiaohua1020/ffmpeg-for-MFC


更新記錄==============================

1.1版(2014.7.12)

 * 更換了部分界面

 * 原project支持Unicode編碼

 * 修復了一部份內存泄露的問題

 * 修正了ffmpeg.c中的exit_program()函數。

保證在轉碼結束後可以釋放資源。 

 * 修正了一部分「任務列表」的功能

 * 修正了加入任務的時候「要用button去選輸入文件。不能本身直接輸入」的問題。


1.2版(2014.8.16)

 *添加了「內部轉碼」和「外部轉碼」選項。

「內部轉碼」即經過原先移植的ffmpeg.c進行轉碼。「外部轉碼」支持做爲一個GUI直接調用ffmpeg.exe進行轉碼。

經過管道的方式讀取轉碼進度。


發現SourceForge速度很是慢。有的時候差點兒訪問不了,所以仍是打算在CSDN上上傳了一下源碼和編譯後的可運行程序。

結果昨天傳了一夜竟然沒有傳上去。。。每次上傳完在本身資源列表裏面都看不到,很是是鬱悶。結果今天早上起來猛然發現資源列表裏面竟然有2份。。。這個延遲有點大啊。只是好歹傳上去了。

源碼:http://download.csdn.net/detail/leixiaohua1020/7764529

編譯好的可運行程序:http://download.csdn.net/detail/leixiaohua1020/7766245

PUDN源碼:http://www.pudn.com/downloads644/sourcecode/multimedia/detail2605161.html



一.主界面

程序的主界面如圖所看到的。主界面中包括一個任務列表,當中包括了需要轉碼的任務。下方是轉碼的控制button,並且包括了轉碼的進度信息。

 

1.1.任務列表

任務列表包括了需要轉碼的任務。列表的上方包括了4個button,包括了對任務列表的4種操做:加入,編輯,刪除,清空。此外,在任務列表中選擇一個任務而後單擊右鍵,也可以在右鍵菜單中選擇這4項操做。

這4項操做例如如下:

加入:新添加一個任務。

編輯:改動現有的一個任務。

刪除:刪除一個任務。

清空:刪除所有的任務。

列表顯示了任務的信息。包括:序號,輸入,大小。輸出,狀態。

含義例如如下:

序號:編號。

輸入:輸入文件名。

大小:輸入文件大小。

輸出:輸出文件名。

狀態:該任務所處的狀態(準備,處理中,已完畢)。

1.2.控制button

控制button完畢了對轉碼過程的控制功能。包括:開始,暫停,中止。

開始:系統開始轉碼。

暫停:系統暫停轉碼。

中止:系統中止轉碼。

 

 

二.任務信息窗體

任務信息窗體用於配置一條任務信息。當中包括了三個部分:輸入和輸出,輸入文件信息。輸出配置。


2.1.輸入和輸出

輸入和輸出部分用於指定該任務的輸入文件和輸出文件。

輸入文件即準備進行轉碼的文件。輸出文件即轉碼後生成的文件。可以直接在輸入框中輸入文件路徑,也可以單擊輸入框右側的「文件」button選擇文件。此外還可以直接將文件拖拽至對話框的方式選擇輸入文件。

選擇輸入文件後。程序會檢查輸入文件的格式信息。假設輸入文件不是視音頻文件。程序會報出錯誤信息。假設輸入文件爲視音頻文件,程序會檢測該文件的參數信息。包括封裝格式,視頻編碼,音頻編碼等信息。

並將檢測結果顯示在「輸入文件信息」部分。

爲了方便起見,選擇輸入文件後。程序會在輸入文件的文件夾下生成名爲「{輸入文件名}_ffmfc.mkv」的輸出文件。

可以對該輸出文件路徑和名稱進行更改。

 

2.2.輸入文件信息

包括:封裝格式,視頻比特率,時長。輸出像素格式。視頻編碼方式。幀率,畫面大小,採樣率。音頻編碼方式,聲道數。


2.3.輸出配置

封裝格式

輸入封裝格式:強制指定輸入文件的格式。

默認狀況下ffmpeg是經過輸入文件的後綴推斷文件格式的。假設指定了這個選項,則依照該指定的格式對文件進行解析。

輸出封裝格式:強制指定輸出文件的格式。默認狀況下ffmpeg是經過輸出文件的後綴推斷文件格式的。假設指定了這個選項,則依照該指定的格式對文件進行轉碼。

視頻

比特率:視頻的碼率,默認800kbps。

編碼器:視頻編碼使用的編碼器。

幀率:視頻編碼使用的幀率,默認25fps。

音頻

比特率:音頻的碼率,默認64kbps。

編碼器:音頻編碼使用的編碼器。

採樣率:音頻的採樣率,默認44100Hz。

聲道數:音頻的聲道數,默認是2。

 

輸出的封裝格式,視頻編碼格式,音頻編碼格式以列表的形式顯示出來。可以自行選擇。

    

    

 

三.系統支持信息窗體

系統支持信息窗體列表顯示了系統的支持信息。包括系統支持的:協議,輸入封裝格式,輸出封裝格式,視頻解碼器,音頻解碼器。以及其它解碼器(字幕解碼器)。

好比從視頻解碼器列表中可以看出本程序支持的視頻編碼器包括libx264。libvpx等等。

 

 

四.菜單

程序上端的菜單中包括了更豐富的選項。一共分紅5部分的功能:任務。控制,視圖,語言,幫助

如下分別介紹。

任務:對任務列表進行加入,編輯。刪除,清空操做。

 

 

控制:控制轉碼的開始,暫停,中止。

 

語言:設置界面的語言。


 

 

五.英文界面

英文界面截圖例如如下所看到的。

主界面



任務信息窗體



系統支持信息窗體

 

相關文章
相關標籤/搜索