基於FFmpeg的教學資源庫的非MP4視頻轉換為MP4流程


基於FFmpeg的教學資源庫的非MP4視頻轉換為MP4流程

運行環境:

Win2003(或者Win2008  64bit,優先此步)、SQL Server 2005(或者SQL Server2008

執行方式:

批處理方式執行,已轉換視頻列表、寫入數據庫;錯誤日志寫入本機的執行程序下面。

1.轉換步驟描述

1、非MP4視頻列表

連接教學資源庫數據庫,查找本機的非MP4視頻資源,得到非MP4視頻列表。

2、生成原視頻的MD5

將所有的原視頻生成MD5碼。

3、判斷該視頻是否已經轉換

比對新舊兩個數據表,得到未轉換的視頻列表。

4、視頻異步轉換

根據非MP4視頻列表,采用異步方式、批量將視頻轉換為MP4格式。轉換前需要做的判斷:是否有足夠的視頻存儲空間(可用空間是否大於原視頻的大小)、CPU使用率是否達到閾值(60%)、該視頻是否已經轉換過。

5、生成新視頻MD5

6、新視頻列表

新建數據庫,保存已轉換視頻列表。包括SID、原地址、新地址、原MD5、新MD5、轉換時長、轉換完成時間。

7、異常處理

遇到以下情況:

空間不足、CPU超過閾值,

停止轉換,生成報錯日志,保存在本地的服務器。

2.轉換流程

1)多台存儲服務器異步視頻轉換

 

多台存儲服務器異步視頻轉換

2)教學資源庫非MP4視頻列表轉換流程

原來存儲在數據庫的視頻(wmv格式)的是沒有MD5碼,程序生成MD5碼。

  

教學資源庫非MP4視頻列表轉換流程

3)單次視頻轉換流程

 

單次視頻轉換流程

3)列表

已轉換的視頻列表

SID

原地址

新地址

MD5

MD5

轉換時長

轉換完成時間

 

 

 

 

錯誤日志

SID

錯誤原因

報錯時間

 

 

 

 

 

 

 

 

注:MD5值是一種密碼值,要是視頻內容沒有改變過,那么上傳和下載的視頻的MD5值是一樣的。

3.具體實現

1、命令行登錄sql server 2008r2

在命令行窗口下 SQL code 1.使用osql >osql -Slocalhost -Usa -Ppass >use 數據庫名稱 >select * from sysobjects

2.使用sqlcmd sqlcmd -U sa -P pass -S localhost

2、視頻轉換

1)按照原來的大小、尺寸轉換

start

ffmpeg.exe -i culture.wmv iCulture5.mp4

exit

2acc編碼

start

ffmpeg.exe -i culture.wmv -vcodec libx264 -preset ultrafast -profile:v baseline -acodec aac -strict experimental -s 640*480 -b 568k -ab 128k iCulture.mp4

exit

-vcodec libx264 使用h264轉換

-acodec aac 音頻編碼用AAC

-b 800 視頻數據流量,-b xxx的指令則使用固定碼率,數字隨機,1500以上沒有效果;還可以用動態碼率,如:-qscale 4-qscale 64的質量比6的高。

-s 640*480 視頻大小

-ab 128k 音頻數據流量,一般選擇326496128

3、代碼

程序執行步驟

1、 從202.205.161.177sa,sa.net)的MDER_CENTER_DATA數據庫的[MDER_CENTER].[dbo].[COMM_SYS_STORAGESERVER]表找到本服務器IP對應的SERVER_ID。(STORAGEPATH是視頻文件存儲的路徑)

2、 根據SERVER_ID ,在[MDER_CENTER].[dbo].[COMM_MEDIA_INFO]數據庫中遍歷得到本地數據庫的所有wmv格式的視頻文件。

 

得到本服務器ID、未轉換的wmv格式的視頻文件

" select * from [MDER_CENTER].[dbo].[COMM_MEDIA_INFO] where STORAGE_SERVERID='" + serverID +

                "' AND RESOURCE_URL like '%.wmv' AND  MEDIA_ID not in (select MEDIA_ID from [MDER_CENTER].[dbo].[COMM_CONVERTMP4_INFO] )";

 

select * from [MDER_CENTER].[dbo].[COMM_MEDIA_INFO] 

where STORAGE_SERVERID='22222222-2222-2222-2222-222222222222'

 

    update [MDER_CENTER].[dbo].[COMM_MEDIA_INFO]

  set STORAGE_SERVERID='88888888-44af-4310-9468-17ec508e838'

  where MEDIA_ID='d2168944-c004-4df1-b572-7e5e90165ad8'

 

     update [MDER_CENTER].[dbo].[COMM_SYS_STORAGESERVER]

  set STORAGEPATH='E:/video/'

  where SERVER_ID='22222222-2222-2222-2222-222222222222'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM