用h5播放或flash播放mp4文件时,有时候遇到播放有声音没画面。但是用本地播放器(VLC media player,mediaplayer等)播放时,视频音频都有。这个时候,就涉及到h5和flash能支持播放的格式以及编码格式了。

mp4只是视频容器(文件格式)。至于里边的视频,音频用什么编码,又是另外一说。常见的mp4封装的视频编码有H.264,也就是AVC,是MPEG-4的part10编码。还有一种是 MPEG-4 Visual,它是MPEG-4的part2编码。对于视频编码,flash和h5只支持H.264编码的。其他编码的都是播不出来的。

编码格式以及flash支持播放的格式。可以看下边的连接。

http://www.c-ps.net/trade/content/2009/6/11553.html

http://zengrong.net/post/393.htm

https://www.zhihu.com/question/20997688

了解了文件格式和视频编码,那么就可以想办法证实一下。mediainfo软件可以查看视频文件的视频编码方式和音频编码方式。

图中的mp4文件的视频编码用的是part2,并非h.264的part10.怪不得播放不了。mediaInfo下载直接百度就可以了。其他软件,比如迅雷看看这些也可以看到视频编码方式的。既然知道了是视频编码的问题,那么想要h5和flash能播放,那就想办法转码吧。视频格式转码的软件很多。我选择使用adobe media encoder。为什么选择,后边再说。下载绿色版adobe media encoder。(本人试过可用)https://www.3987.com/xiazai/4/110/45580.html

软件下载后,绿化安装一下。稍微摸索一下,就能上手。这里主要想提一下视频比特率的设置问题。比特率设置过高,转码出来的文件量会过大。所以,设置适当的比特率很关键。如果的确不知道设置多少,可以查看下原视频的比特率多少。原视频的比特率,可以通过鼠标右键,在属性,详细信息里看到。mediaInfo软件也可以看到。请注意adobe media encoder里设置比特率的单位和你查看的比特率的单位。另外一个地方就是音频的采样率和比特率的设置。适当就好。

最后,转码后的mp4文件,h5能播,flash也能播了。

现在说下,为什么选择adobe media encoder。首先,adobe media encoder是一个比较专业的视频编辑转换软件。也比较好上手使用,设置点比较细,还可以加入元数据等。满足各种需求。还有最后一个特点。其他视频转换软件转换的h.264编码的mp4文件,flash播不一定能一边缓存一边播放。需要加载完成才能播放。如果几兆,甚至几十兆的视频文件。让加载完才播放,这种体验有多差。这个才是想到用adobe media encoder的最终所在。至于为什么这么说,可以看看这个博客。
http://blog.sina.com.cn/s/blog_4eb62cbf0102v3kh.html

其实,用其他视频软件转换这条路,我已经走过了。才会走使用adobe media encoder这条路。其他视频软件文件量小,下载快。才使得我要经历一些挫折。上边博客提到的方法,用mp4Box来处理,的确,可行。mp4Box不会对视频进行编码处理。使用mp4Box,需要用命令行。可以慢慢敲。也可以用我编辑好的bat文件。只需要将bat文件和视频文件放在同一个文件夹下,并将视频的名字改为video.mp4就可以了。双击bat文件,进行处理。很快就会完事了。

echo "start format"

start cmd /k "echo format mp4File&&cd c:\Program Files\GPAC&&
      mp4box -isma %~dp0video.mp4&&echo formt complete!"