用 HTML5 播放視頻,最流行的視頻格式非 MP4莫屬, 所有最新瀏覽器都支持;
MP4 帶有 H.264 視頻編碼和 AAC 音頻編碼的 MPEG 4 文件;
以前做過一個把其它編碼格式的視頻轉成 MP4的程序,轉換的質量可以進行控制,質量越差,視頻就越小,所以可以把幾G的視頻可轉成 幾十M的MP4,方便放到網上用 HTML5 觀看。
該程序只是簡單包裝了對開源編碼器的調用過程,具體用到下面的編碼器和類庫:
x264 => 視頻編碼器
faac => 音頻編碼器
MP4Box => 把視頻和音頻混合為一體
AvisynthWrapper.dll => AVI 腳本的解釋器(需要安裝 Avisynth 程序)
上面的編碼器只支持部分視頻格式,如wmv,flv; 不支持的視頻要用到 ffmpeg 編碼器,它支持大部分視頻格式,如rm,rmvb,mp4;
把它們結合起來就能編碼絕大部分的視頻格式了;
詳細的作用和相關的參數,在網上一大堆,這里不再贅述;(真是佩服有些外囯人那種大公無私的貢獻精神,如此復雜實用的程序都開源出來,供全人類使用,據說國內某某風暴,扣扣影音都用了很多開源的視頻編碼器,自己卻又不開源,鄙視之)
程序已開源到GitHub: https://github.com/Dhenskr/MP4Encoder.git
源碼解決方案的目錄:
編譯時注意把 MP4EncoderTester 項目的目標平臺改成 x86, 否則在調用 AvisynthWrapper.dll 類庫的方法時會出現平臺錯誤;
在運行程序的目錄下(MP4EncoderTester項目的 bin/Debug/ 目錄已包含有下面的幾個文件,也可以上相關的官網下載)要包括下面框中的文件,
Avisynth_258.exe 需要先安裝,用來解釋 avs 腳本文件進行視頻處理;
測試時注意: MP4EncoderTester 項目 Program.cs 文件的 Main 方法, input 和 output變量改為自己系統下面相應的視頻路徑:
static void Main(string[] args) { string input = @"C:\Users\Canie\Desktop\testVideo\orig\orig.wmv"; string output = @"C:\Users\Canie\Desktop\testVideo\encoded\encoded.mp4"; EncoderHelper encoderHelper = new EncoderHelper(input, output); encoderHelper.Encode(); }
程序參考了強大的視頻編碼器:MeGUI
如果想學習視頻編碼建議直接看 MeGUI的源碼,而我的這個程序只是為了放在后臺對指定文件夾的視頻進行自動定時轉換,所以沒做界面,功能也比較單一,單純編碼成 MP4格式;
源碼缺少詳細的文檔說明,有心情再慢慢完善;
文章列表