我正在使用以下命令将 mp4 视频转换为 webm:
avconv -i INPUT.mp4 -c:v libvpx -qmin 10 -qmax 42 -maxrate 500k -bufsize 1000k -threads 2 -c:a libvorbis OUTPUT.webm
我做错了吗?我应该使用所有这些参数吗?我只是想让视频与所有浏览器/设备兼容。
在大多数设备上的 Firefox 以及我拥有的特定 Android 设备上的 Chrome 上,视频都无法播放。
编辑:当我在任何 Android 设备上的 Firefox 上播放嵌入的视频时,它会直接跳到末尾并且不会播放。只有我单击进度条时它才会播放。如果我在 Firefox 上打开视频而不将它们嵌入到 html 页面中,它们外面似乎有一个更大宽度的框,而视频则在里面。
我上传了一个我转换的视频。在 Firefox 中尝试一下:https://mega.co.nz/#!cg9FVZJD!CpC6X3NXH8rAVdBiS9ZqqwyITdyPb_qkKAKsvQXRpzI
这是转换前后视频的对比: ![此处有图片]:https://i.stack.imgur.com/HhoJp.jpg
答案1
我使用相同的转换工具也遇到了同样的问题。视频在 Chromium 中播放正常,但在 Firefox 30 (Linux) 或 Aurora 31 (Windows) 中播放不正常。几个月前,当我使用 ffmpeg(avconv 是其分支)时,一切都按预期运行。
我注意到,在 Firefox 上,视频的进度条会出现,并且显示视频已经播放过了。将其滑回开始并按播放将显示视频,但它出现在屏幕中央,太小而看不到内容。如果右键单击小视频并单击全屏,它将正常播放。
使用 ffmpeg 制作的旧 webm 视频在同一版本的 Firefox 中运行良好,因此看起来 avconv 创建的文件在某些方面有所不同。也许由于某种原因,它们无法正确报告其尺寸?
我会在周末尝试摆弄一下,然后再报告结果。
问候,
史蒂夫
答案2
我有同样的经历,但我注意到我得到的 WEBM 文件使用的是 VP8,而不是 VP9。
这是我在 Ubuntu 12.04 和 14.04 系统上使用的命令行:
avconv -threads auto -strict experimental -i /tmp/c5858937cc47b4c237e1a6ba0b8ba01220140627-2490-1vwkdcr -y -vcodec libvpx -b 250k -maxrate 250k -bufsize 500k -pix_fmt yuv420p -flags +mv4+aic -threads auto -b:a 128k -strict -2 -s 640x360 /tmp/c5858937cc47b4c237e1a6ba0b8ba01220140627-2490-1vwkdcr20140627-2490-ufj5hv.webm
两个系统上均没有错误消息。
在 12.04 系统上,webm 视频的行为符合预期 - 视频的初始帧显示在嵌入式播放器中,视频播放正常。
如果我在 VLC 中打开该文件,它可以正常播放。
在 14.04 服务器上使用随附的 avconv 版本,如果我将文件嵌入网页,视频会显示为黑色。按下播放器 (VideoJS) 上的播放按钮只会跳到结尾。
如果我向后拖动 VideoJS 滑块,我可以看到视频的一帧,但它不会播放。
我在两个系统上使用相同的 Ruby on Rails 应用程序、相同版本的 jquery、videojs 以及任何其他 javascript 库。
我将尝试在 14.04 系统上使用 12.04 系统的二进制文件,看看行为是否有任何不同,然后在此报告。