天天看點

.Net 玩視訊

由于平台的特點 用.net做視訊網站的不多 作為興趣研究下

背景

經常上洋芋 youku的朋友可能會發現播放的視訊格式大多是flv格式的 那麼我們先來掃盲下flv

FLV 是FLASH VIDEO的簡稱,FLV流媒體格式是随着Flash MX的推出發展而來的視訊格式。由于它形成的檔案極小、加載速度極快,使得網絡觀看視訊檔案成為可能,它的出現有效地解決了視訊檔案導入Flash後,使導出的SWF檔案體積龐大,不能在網絡上很好的使用等缺點。

但是使用者手上的資源未必都是flv格式,是以需要格式轉換。這裡介紹2款工具

FFmpeg是一個開源免費跨平台的視訊和音頻流方案,屬于自由軟體,采用LGPL或GPL許可證(依據你選擇的元件)。它提供了錄制、轉換以及流化音視訊的完整解決方案。它包含了非常先進的音頻/視訊編解碼庫libavcodec,為了保證高可移植性和編解碼品質,libavcodec裡很多codec都是從頭開發的。

mencoder 是一款指令行方式的視訊處理軟體,mencoder支援幾乎所有的格式的視訊轉換,可以将任意格式轉換到任意格式,轉換功能可以說是相當強大。目前市面上流行的格式轉換器,都是基于mencoder開發的GUI,比如暴風轉碼,格式工廠等。可以說轉換器能辦到的,mencoder都能辦到,但mencoder能辦到的,轉換器就不一定能辦到了。

不過FFmpeg和在mencoder在應用領域還是有些差別

網摘:

1,在實際的使用當中,ffmpeg 在 Redhat與Suse Linux 下面都運作正常,但是我在Suse Linux 10 上面壓縮rm與 rmvb 視訊時,壓出來的片子聲音不正常。在其他參數都完全一樣的情況下使用Redhat 壓縮,居然是正常的。看來 Suse 對企業應用比較好,但是對多媒體的應用(偏向個人方面)還是 Redhat 比較好一些。

2,ffmpeg 也可以壓縮視訊,不過,效果可是比mencoder 差好些。是以,基本上我隻使用 ffmpeg 來抓取視訊中的圖檔。可以使用 ffmpeg-php 這個開源項目程式來抓取任何一幀的圖檔,這樣,我們就可以很友善地大緻了解這個視訊的内容了。

3,ffmpeg 壓縮一個 wmv 檔案,可能使用不到一分鐘,但是 mencoder 卻壓縮了好幾分鐘,由于 mencoder 需要計算更多東西,是以,需要花更多的時間。

4,mencoder 支援的視訊格式非常多,如常見的 wmv,avi,mpg,rm,rmvb,mov,3gp,mp4 等,大約有上百種,不過,我還無法一一測試,估計也是沒有問題的。而ffmpeg 不支援 rm與rmvb 格式。

5,做為視訊壓縮,對機器的要求是比較高的,對系統資源的占用比較大,主要是對CPU與磁盤IO要求高。前兩天壓縮一個視訊,使用 寶德 PR2700D 用了4分鐘,使用寶德 PR4800 用了12分鐘,使用一台 Dell 2950 上面的 Vmware 虛拟機使用了大約8分鐘。綜合來看,最好是CPU強一些,記憶體不要小于2GB,磁盤的IO要快一些。

實踐

上述2款工具都有對應的win平台版本 那麼我們隻需要用.net啟動軟體程序就可以了 很簡單 需要花功夫的是對工具各種複雜參數的把握

先上個簡單的demo

我們選舉一個很簡單的視訊 windows自帶的示例視訊 可以在目錄C:\WINDOWS\clock.avi找到

每秒換一個數字

ffmpeg 壓縮一個 視訊 檔案,可能使用不到一分鐘,但是 mencoder 卻壓縮了好幾分鐘,由于 mencoder 需要計算更多東西,是以,需要花更多的時間。ffmpeg 也可以壓縮視訊,不過,效果可是比mencoder 差好些。并且ffmpeg對","wmv", "rmvb", "rm" 的效果不是很好,是以考慮的性能以及功能,"asf", "avi", "mpg", "3gp", "mov" 類型和截圖功能使用ffmepg,"wmv", "rmvb", "rm"類型使用mencoder實作

是以我們這裡用ffmpeg來轉換

到輸出目錄中确認下我們轉換的視訊是否可用

我們再試試截圖功能

我們截取2秒後和4秒後的 按照視訊進度 應該截取到3和5 這2個數字

OK 貌似很順利

下面給出具體的參數配置

ffmpeng

<a href="http://blog.51cto.com/dubing/796592#">expand source</a>

附demo 随筆之作 不工整比較醜陋就不直接貼項目了 未加密 有興趣的同學直接反編譯看吧

ffmpeng和mencoder的工具在網上搜一下 然後按照程式裡的目錄存放就可以了 

本文轉自 熬夜的蟲子  51CTO部落格,原文連結:http://blog.51cto.com/dubing/796592

繼續閱讀