基于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'

 

posted @ 2015-03-11 14:44  yuanloo  阅读(2837)  评论(0编辑  收藏  举报