如果可能的话,我如何使用VLC将视频从mp4转换为webm?我应该选择什么编解码器?我需要重新编码声音吗?
我正试图把html5视频放在一个网站上,用flash作为后备。据我所知,这是Firefox唯一允许的格式(webm)(除非你使用的是Windows7 64位?)。Theora似乎可以工作,但据我所知,它有点旧,而且它需要一段时间才能正确渲染图片,并且不提供缩略图:(
<video controls width="500">
<!-- if Firefox -->
<source src="video/45-theora.ogg" type="video/ogg" />
<!-- if Safari/Chrome-->
<source src="video/45.mp4" type="video/mp4" />
</video>
哦,我使用的是Mac OS Lion,但如果对某人来说更容易的话,我可以访问Windows 7、Vista和XP。
谢谢你的帮助!
为了更新这个答案,我不建议再使用Miro视频转换器。它曾经是我为网络创建HTML5视频的首选武器,但该程序的当前版本3在转换为ogg理论方面存在问题:转换后的视频质量太低,要创建更高质量的版本,必须使用ffmpeg命令行实用程序。
Easyhtml5video真的很好,因为它可以自动创建所有视频格式,并带有嵌入代码的flash回退,但你必须为此支付69美元——免费版本会为视频添加水印。
目前我正在使用VLC播放器进行视频转换。要在VLC中转换mp4文件,我执行以下操作:
转换为.webm
- 从菜单中选择媒体>转换/保存
- 单击"添加"按钮并选择要转换的文件
- 单击"转换/保存"按钮
- 在"配置文件"下拉列表中选择"视频-VP80+Vorbis(Webm)"
- 单击下拉菜单旁边的按钮("编辑所选轮廓"-看起来像扳手+螺丝刀图标)
- 封装选项卡应设置为Webm
- 单击"视频编解码器"选项卡。在编码参数中,编解码器应选择为"VP8"
- 在"音频编解码器"选项卡中,应取消选择"保留原始音轨"。Codec应设置为"Vorbis"
- 单击"保存"
- 重要提示:选择目标文件的位置和名称。单击浏览器,转到要将转换后的文件名放入的文件夹,然后输入新文件名。如果你不这样做,VLC将不会创建你的转换文件(无论如何,在2.1.5版本中都不会)
- 单击"开始"开始转换
转换为.ogv:
- 从菜单中选择媒体>转换/保存
- 单击"添加"按钮并选择要转换的文件
- 单击"转换/保存"按钮
- 在"配置文件"下拉列表中选择"视频-Theora+Vorbis(OGG)"
- 单击下拉菜单旁边的按钮("编辑所选配置文件")
- 封装选项卡应设置为Ogg/Ogm
- 单击"视频编解码器"选项卡。在编码参数中,编解码器应选择为"theora",如果其中有文本,则比特率应为1000kb/s。较低的比特率可能适用于较小的视频
- 在"音频编解码器"选项卡中,选择"保留原始音轨"
- 单击"保存"
- 选择目标文件的位置和名称
- 单击"开始"开始转换
如果你需要调整视频大小或裁剪视频,我建议你先使用Handbrake对.mp4文件进行调整。根据我的经验,尝试使用VLC创建调整大小的.ogg/ogov或webm文件并不能给你带来好的结果。
当把视频放在网页上时,我使用VideoJs-这可以让你很容易地为旧浏览器创建带有flash回退的html5视频。工作比easyhtml5视频稍多,但它是免费使用的。
WebM只是Matroska(.mmv)的一个子集,所以只需使用HandBrake创建一个mkv文件(选择mkv容器,而不是MP4)。IMHO是HandBrake,是在Mac上创建MP4和MKV文件的最佳工具(也适用于Windows和Linux,但我从未在那里使用过它)。使用双通道编码,您可以获得可用存储空间和/或带宽的最佳质量,尽管HandBrake功能强大(您可以配置这么多设置),但它仍然是一个非常简单的工具(您不需要配置大多数设置,默认设置已经会给您带来非常好的结果)。
请记住,WebM是MKV子集,因此视频编解码器使用VP8或VP9,音频编解码器使用Vorbis或Opus。直到2013年,WebM只有VP8和Vorbis,所以这是将在大多数设备、浏览器和播放器上播放的最兼容的组合。2013年,新的VP9和Opus被添加,现在这些的任何组合都是合法的。
获得MKV后,使用ffmpeg
将其转换为WebM。您可以下载为MacOS X预构建的ffmpg作为独立二进制文件(适用于10.9或更新版本)。你所需要做的就是在终端中运行该命令:
./ffmpeg -i INPUTIFLE.mkv -c copy OUTPUTFILE.webm
就这样。这将非常快,因为-c copy
意味着ffmpeg在这里没有转换任何内容(视频是而不是再次转码!),它原样复制所有音频和视频数据,只重写容器,删除WebM中不支持的MKV部分(例如章节不支持)。仅仅复制也意味着这种转换对质量没有任何影响,因为没有任何内容被重新压缩。
使用ffmpeg
在不进行再压缩的情况下在容器之间进行转换也适用于许多其他格式。例如,如果您的MKV实际上是MPEG4或H.264,您可以以相同的方式将其转换为MP4文件,而无需重新编码。您甚至可以将视频的音频层提取为纯音频文件,而不会丢失任何质量(例如,将MP3或AAC音频提取为MP3或MPA文件)。如果所选的目标容器无法保存源文件的数据(例如,您无法将AAC音频复制到MP3文件或将VP9视频复制到MP4文件,这将不起作用),ffmpeg
会通知您。
我会把代码改为:
<video poster="/path/to/your/thumbnail/image.jpg" preload="meta" controls width="500">
<!-- if Safari/Chrome-->
<source src="video/45.mp4" type="video/mp4" />
<!-- if Firefox -->
<source src="video/45-theora.ogg" type="video/ogg" />
</video>
原因:
poster="/path/to/your/thumbnail/image.jpg"
因为您希望在用户播放视频之前显示"缩略图"
<source src="video/45.mp4" type="video/mp4" /> BEFORE <source src="video/45-theora.ogg" type="video/ogg" />
mp4 BEFORE打开格式(如webm或therora),因为在一些iOS版本中存在一个错误,如果mp4在html中的任何其他格式之后列出,则根本不会播放视频(因此请先列出)。
preload="meta"
因为如果同一页面上同时有许多视频,那么iOS的某些版本,甚至Safari和Chrome的某些版本都很难加载页面。preload=none或preload=meta有助于解决这些问题。
在编码方面,Miro Converter更擅长编码,更容易用于转换浏览器(mp4、webm、theroa)可以播放的格式。VLC有很多选择,但如果你做得不对,它可能会让你不知所措,令人沮丧。Miro更像是一个拖放应用程序,diveintohtml5推荐使用它。
如果你使用的是ffmpeg,我发现这个命令可以很好地在文件大小和质量之间折衷:
ffmpeg -i myvideo.mp4 -acodec libvorbis -aq 5 -ac 2 -qmax 25 -threads 2 myvideo.webm
您可以分别使用-aq
和-qmax
控制音频和视频的质量。如果你感兴趣的话,我写了一篇博客文章,提供了更多细节:http://daniemon.com/blog/how-to-convert-videos-to-webm-with-ffmpeg/
-threads
参数可能会被调整或完全省略,这取决于您想要提交给编码任务的系统资源量。
ffmpeg -i 45.mp4 45.webm
- 通过@YumYumYum
在最新的macOS上使用最新的VLC尝试了不同的答案,但总是收到一些编解码器错误或部分结果视频被切断。
最后,按照问题的第一条注释的建议,在命令行上安装FFMPEG并进行转换。工作还不错。
# Install Homebrew if not done yet
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
# Install ffmpeg
brew install ffmpeg
# Convert to webm
cd ~/Downloads
ffmpeg -i myfile.mp4 myfile.webm
试试这个::Linux中的Libav
Installation: run command
sudo apt-get install libav-tools
Video conversion command::Go to folder contains the video and run in terminal
avconv -i oldvideo.mp4 -ar 22050 convertedvideo.webm