視頻網站相關(視頻解碼、特大文件上傳等)
2011-06-22 14:54 熬夜的蟲子 閱讀(1257) 評論(1) 收藏 舉報一. 大文件上傳分析
需要解決的問題
1.解決客戶端請求限制
web.config中的httpRuntime節的 maxRequestLength 參數的默認值為 4096 (4 MB)。所以,默認情況下不能上傳大于這個值的文件。
我們這里這要更改這個參數即可
2.服務器內存占用問題
利用HttpModule截斷http請求、獲取HttpWorkerRequest對象然后重新對客戶端請求數據進行分塊分析整理,這樣的處理結果可以使客戶端上傳的大小不再受限,但是httpRuntime還是會拋出一個頁面的警告,不過與上傳邏輯無關
3.大文件分塊處理
首先判斷預先加載的HTTP請求的部分數據
這個數據我測試了一下一般大概是49152左右,只要沒超過這個大小,這次請求就不需要進行下面的分塊處理 一次處理就完成了。
如果大于這個值的話 .net 2.0以上會自動分塊處理,我在程序在分配出一塊緩存 大小在webconfig里配置 appsetting里單位為K<add key="BufferSize" value="1024"/>
每次先處理完這個緩存里的數據后,繼續向http索取下一步的數據
其中http請求數據并不是一次提交上來的,數據在任何一個地方都有可能出現斷點問題,程序里針對斷點的算法 參考了網上的一些資料,調試結果還是Ok的,這里面添加系統應用數據分析。作用是為了在下面的進度讀取模塊提供數據
主要的分塊處理結果完成以后重新封裝HTTP請求,
4.上傳進度實時顯示
由ajax輪詢調用上面的信息,生成靜態頁面,包括當前上傳大小、平均上傳速度、已用時間大小、預計剩余時間大小、暫時做的比較粗糙還沒有做成比較用好用戶界面
二. 視頻解碼
1.工具使用
ffmepg,mencoder。2者的區別
ffmpeg 壓縮一個 視頻 文件,可能使用不到一分鐘,但是 mencoder 卻壓縮了好幾分鐘,由于 mencoder 需要計算更多東西,所以,需要花更多的時間。ffmpeg 也可以壓縮視頻,不過,效果可是比mencoder 差好些。并且ffmpeg對","wmv", "rmvb", "rm" 的效果不是很好,所以考慮的性能以及功能,"asf", "avi", "mpg", "3gp", "mov" 類型和截圖功能使用ffmepg,"wmv", "rmvb", "rm"類型使用mencoder實現
2.net調用系統工具
主要使用System.Diagnostics.Process 同時需要System.Diagnostics.ProcessStartInfo附帶參數信息
3.異步處理
為了不讓用戶上傳完以后還要編碼時間,編碼過程的實現由異步來處理,玩家ui上上傳后就可以看到已審核的信息。
4.編碼處理
根據玩家推廣系統的實例 我對編碼的參數設置進行了4層處理
第一層在webconfig里 系統初始化是應用
第二層為系統參數 第三層位游戲項目應用參數 第四層為單個視頻個別參數
初始上傳的視頻 讀取游戲項目應用參數 如果項目參數未配置 讀取系統參數
編碼的規則以及方法 在后臺管理中配置 提供主要功能的界面操作(界面操作在整理中 還未完成) 以及全部的功能的參數操作
效果圖:







![]() |
原創作品允許轉載,轉載時請務必以超鏈接形式標明文章原始出處以及作者信息。 作者:熬夜的蟲子 點擊查看:博文索引 |

浙公網安備 33010602011771號