zoukankan      html  css  js  c++  java
  • 基于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'

     

  • 相关阅读:
    Swift技术之如何在iOS 8下使用Swift设计一个自定义的输入法 (主要是NSLayoutConstraint 的使用)
    android 旋转手机的时候,如何忽略onCreate再次被系统调用?
    在iOS 8中使用UIAlertController
    09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例
    一些工具的版本问题 valgrind gdb 以及编译
    C struct __attribute__ ((__packed__))
    C++ class 只允许堆创建/只允许栈创建
    Shell 字符串操作
    存储系统的分类
    ssh 到服务器然后输入中文保存到本地变成乱码
  • 原文地址:https://www.cnblogs.com/yuanloo/p/4329873.html
Copyright © 2011-2022 走看看