如何轻松将WEBM转换为MP4
WebM是由Google提出,一个开放、免费的视听媒体文件格式。
由于使用还不是很普遍,很多电脑、设备和智能手机都需要插件、组件和其他特定要求来播放WebM文件。
因此为了避免这种麻烦,我们需要将WebM格式转换成常用的MP4格式。

H264编码
这里先来谈一下我们比较熟悉的H264编码格式。
H.264也被称为AVC,适用于视频摄像机、蓝光播放器和很多其他设备。
从技术上来说,H.264代表了当前业界最先进的视频压缩技术,能够在较低带宽(2M以内)情况下提供高质量(类似DVD画质)的图像传输。
H264编码技术是由微软、三星、索尼和东芝等公司在内的很多专利做支持,所以各种技术类产品中如果要使用到H264编解码技术都是要征收高昂的许可费。
相比之下,WebM则一直是一款开源的、免费的技术。
它的视频编码格式是VP8,另外结合了另外一款免费的音频编解码技术Theora。这可能也是谷歌另起炉灶的原因吧。
市面上关于WebM转码成MP4的转换器也不是很多,今天就来介绍两种方法帮助大家来解决这个问题。
FFmpeg基础使用
摘取《ffmpeg基础使用》:https://www.jianshu.com/p/ddafe46827b7
FFmpeg win64位下载地址
ffmpeg win64位安装包
提取码:zhla,解压码:无
32位系统下载链接:https://down.moerats.com/FFmpeg/
常用命令

1. 视频格式转换
比如一个avi文件,想转为mp4,或者一个mp4想转为ts。
ffmpeg -i input.avi output.mp4
ffmpeg -i input.mp4 output.ts
2. 提取音频
我只保留声音,不需要视频
ffmpeg -i input.mp4 -acodec copy -vn output.aac
上面的命令,默认mp4的audio codec是aac,如果不是会出错,咱可以暴力一点,不管什么音频,都转为最常见的aac。
ffmpeg -i 晓松奇谈.mp4 -acodec aac -vn output.aac
(-vn 不处理视频 )
3. 提取视频
只保留视频,不需要声音。
ffmpeg -i input.mp4 -vcodec copy -an output.mp4
-an 不处理音频
4. 视频剪切
经常要测试视频,但是只需要测几秒钟,可是视频却有几个G,我们需要截取功能。
下面的命令,就可以从时间为00:00:15开始,截取5秒钟的视频。
ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
-ss表示开始切割的时间,-t表示要切多少。上面就是从开始,切5秒钟出来。
注意一个问题,ffmpeg 在切割视频的时候无法做到时间绝对准确,因为视频编码中关键帧(I帧)和跟随它的B帧、P帧是无法分割开的,否则就需要进行重新帧内编码,会让视频体积增大。所以,如果切割的位置刚好在两个关键帧中间,那么 ffmpeg 会向前/向后切割,所以最后切割出的 chunk 长度总是会大于等于应有的长度。
5. 码率控制
码率控制对于在线视频比较重要。因为在线视频需要考虑其能提供的带宽。
那么,什么是码率?
很简单: bitrate = file size / duration
比如一个文件20.8M,时长1分钟,码率就是:
biterate = 20.8M bit/60s = 20.8*1024*1024*8 bit/60s= 2831Kbps
一般音频的码率只有固定几种,比如是128Kbps。
那么视频码率就是
video biterate = 2831Kbps -128Kbps = 2703Kbps。
ffmpg控制码率有3种选择
-minrate -b:v -maxrate
- -b:v主要是控制平均码率。 比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。
ffmpeg -i input.mp4 -b:v 2000k output.mp4
上面把码率从原码率转成2Mbps码率,这样其实也间接让文件变小了。目测接近一半。 - 不过,ffmpeg官方wiki比较建议,设置b:v时,同时加上 -bufsize
-bufsize 用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动。(简单来说,比如1 2的平均值是1.5, 1.49 1.51 也是1.5, 当然是第二种比较好)ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4
- -minrate -maxrate就简单了,在线视频有时候,希望码率波动,不要超过一个阈值,可以设置maxrate。
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4
6. 视频编码格式转换
比如一个视频的编码是MPEG4,想用H264编码
ffmpeg -i input.mp4 -vcodec h264 output.mp4
相反也一样
ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4
当然了,如果ffmpeg当时编译时,添加了外部的x265或者X264,那也可以用外部的编码器来编码。(不知道什么是X265,可以Google一下,简单的说,就是她不包含在ffmpeg的源码里,是独立的一个开源代码,用于编码HEVC,ffmpeg编码时可以调用它。当然了,ffmpeg自己也有编码器)
ffmpeg -i input.mp4 -c:v libx265 output.mp4
ffmpeg -i input.mp4 -c:v libx264 output.mp4
7.改变视频分辨率
将输入的1920×1080缩小到960×540输出:
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
ps: 如果540不写,写成-1,即scale=960:-1, 那也是可以的,ffmpeg会通知缩放滤镜在输出时保持原始的宽高比。
WEBM转MP4格式
方法一: FFMPEG转格式
关于webm转mp4的代码
ffmpeg -i “输入文件.webm” -b:v 2000k -bufsize 2000k -maxrate 2500k “输出文件.mp4”
其中 -b:v 2000k -bufsize 2000k -maxrate 2500k 可以根据自己需要调整。如果对视频文件大小和码率大小没有要求可以不加。
-b:v 控制平均码率,希望视频清晰一些可以调大一些。
-bufsize 设置码率控制缓冲器区间,根据需要可以调整。
-maxrate 2500k 视频最大码率,主要是为了控制文件大小。
方法二:在线网站转格式
在线网站转格式网站: convertio.co

网站使用的方法很简单,把文件上传上去确认即可,网站最大支持500M的文件转码,想要升级功能也可以付费。