用 HTML5 播放视频,最流行的视频格式非 MP4莫属, 所有最新浏览器都支持;

MP4 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件;

以前做过一个把其它编码格式的视频转成 MP4的程序,转换的质量可以进行控制,质量越差,视频就越小,所以可以把几G的视频可转成 几十M的MP4,方便放到网上用 HTML5 观看。

该程序只是简单包装了对开源编码器的调用过程,具体用到下面的编码器和类库:

x264 => 视频编码器

faac  => 音频编码器

MP4Box => 把视频和音频混合为一体

AvisynthWrapper.dll => AVI 脚本的解释器(需要安装 Avisynth 程序)

上面的编码器只支持部分视频格式,如wmv,flv; 不支持的视频要用到 ffmpeg 编码器,它支持大部分视频格式,如rm,rmvb,mp4;

把它们结合起来就能编码绝大部分的视频格式了;

详细的作用和相关的参数,在网上一大堆,这里不再赘述;(真是佩服有些外囯人那种大公无私的贡献精神,如此复杂实用的程序都开源出来,供全人类使用,据说国内某某风暴,扣扣影音都用了很多开源的视频编码器,自己却又不开源,鄙视之)

程序已开源到GitHub:  https://github.com/Dhenskr/MP4Encoder.git

源码解决方案的目录:

编译时注意把 MP4EncoderTester 项目的目标平台改成 x86, 否则在调用 AvisynthWrapper.dll 类库的方法时会出现平台错误;

在运行程序的目录下(MP4EncoderTester项目的 bin/Debug/ 目录已包含有下面的几个文件,也可以上相关的官网下载)要包括下面框中的文件,

Avisynth_258.exe 需要先安装,用来解释 avs 脚本文件进行视频处理;

测试时注意: MP4EncoderTester 项目 Program.cs 文件的 Main 方法, input 和 output变量改为自己系统下面相应的视频路径:

        static void Main(string[] args) {
string input = @"C:\Users\Canie\Desktop\testVideo\orig\orig.wmv";
string output = @"C:\Users\Canie\Desktop\testVideo\encoded\encoded.mp4";
EncoderHelper encoderHelper = new EncoderHelper(input, output);
encoderHelper.Encode();
}

程序参考了强大的视频编码器:MeGUI

如果想学习视频编码建议直接看 MeGUI的源码,而我的这个程序只是为了放在后台对指定文件夹的视频进行自动定时转换,所以没做界面,功能也比较单一,单纯编码成 MP4格式;

源码缺少详细的文档说明,有心情再慢慢完善;

MP4视频编码器的更多相关文章

  1. R 语言爬虫 之 cnblog博文爬取

    Cnbolg Crawl a). 加载用到的R包 ##library packages needed in this case library(proto) library(gsubfn) ## Wa ...

  2. CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    1.先添加几个RPM下载源 1.1)安装RPMforge的CentOS6源     [root@AY130611215205Z ~]# wget -c http://pkgs.repoforge.or ...

  3. Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具)

    Ubuntu 14.10下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 最近因为项目关系,收朋友之托,想制作秀场网站,但是因为之前一直没有涉及到这 ...

  4. CentOS6下基于Nginx搭建mp4/flv流媒体服务器

    CentOS6下基于Nginx搭建mp4/flv流媒体服务器(可随意拖动)并支持RTMP/HLS协议(含转码工具) 1.先添加几个RPM下载源 1.1)安装RPMforge的CentOS6源 [roo ...

  5. FFMPEG SDK流媒体开发2---分离.mp4等输入流音视频而且进行解码输出

    对于FFMPEG SDK  提供的Demuxing 为我们实现多路复用  提供了非常多方便,以下的案案例 实现的是 分离一个媒体文件的音频 视频流 而且解码输出 到  不同的文件里. 对于音频被还原回 ...

  6. 工具---《.264视频 转成 MP4视频》

    <.264视频 转成 MP4视频> 安装了“爱奇艺万能播放器”可以打开.264视频,但是opencv却不能直接读取.264视频,还是需要想办法“.264视频 转成 MP4/avi视频”. ...

  7. 编译ffmpeg(第一次),实现JPG转MP4

    ffpmeg网址:http://ffmpeg.org/ ffmpegapi文档:http://ffmpeg.org/doxygen/trunk/index.html 因为这是JPG转MP4,所以不涉及 ...

  8. IIS配置MP3/MP4/OGG/flv等资源文件访问

    配置过程参考:http://www.cnblogs.com/EasonJim/p/4752399.html 以下包含了mp4的mime类型: 323 text/h323 acx application ...

  9. video.js播放mp4文件

    HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...

随机推荐

  1. C语言缓冲区清空

    C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...

  2. ODBC操作数据库

    /*ODBC使用步骤:(ODBC数据源由微软平台提供) * 1.配置ODBC数据源(控制面板->管理工具->ODBC数据源) * 2.加载并注册驱动程序,导入java.sql.*包 * 3 ...

  3. form-validation--表单验证插件

    基于jquery的validationEngine表单验证插件,根据官网提示,该插件支持IE6-8,Chrome浏览器,火狐,Safari,Opera 10,但由于有使用到了css3的阴影和圆角样式, ...

  4. [转]Android与电脑局域网共享之:Samba Server

    大家都有这样的经历,通过我的电脑或网上邻居访问另一台计算机上的共享资源,虽然电脑和手机之间可以有多种数据传输方式,但通过Windows SMB方式进行共享估计使用的人并不是太多,下面我就简单介绍一下, ...

  5. 简单的三层asp.net webForm使用Ninject实现Ioc

    简单的三层asp.net webForm使用Ninject实现Ioc 在asp.net webform下使用Ninject的简单过程. 首先建立个项目,如下图,简单三层(PS:UI层要同时引用BLL. ...

  6. Dynamics CRM 2013 报表开发:安装开发工具

    最近项目需要开发报表,顺便看了下,首先需要配置开发环境.需要的工具为: 1.Business Intelligence Development Studio 可下载Sql Server 的安装包,选择 ...

  7. c#实现Google账号登入授权(OAuth 2.0)并获取个人信息

    c#实现Google账号登入授权(OAuth 2.0)并获取个人信息   此博主要介绍通过google 账号(gmail)实现登入,授权方式OAuth2.0,下面我们开始介绍. 1.去google官网 ...

  8. [转]SVN操作手册

    [转]SVN操作手册 2012-04-28 11:26 by NewSea, 2495 阅读, 0 评论, 收藏, 编辑 原文: http://hi.baidu.com/caiqiupeng/blog ...

  9. DataSet,DataTable,XML格式互转

    //// <summary> /// 将DataTable对象转换成XML字符串 /// </summary> /// <param name="dt" ...

  10. C++ 动态库导出函数名“乱码”及解决

    C++ 动态库导出函数名“乱码”及解决 刚接触C++,在尝试从 dll 中导出函数时,发现导出的函数名都“乱码”了. 导出过程如下: 新建一个Win32项目: 新建的解决方案里有几个导出的示例: // ...