【问题标题】:ffmpeg convert mov file to mp4 for HTML5 video tag IE9ffmpeg 将 mov 文件转换为 mp4 用于 HTML5 视频标签 IE9
【发布时间】:2013-03-09 14:52:45
【问题描述】:

我在这里和谷歌上到处找 - 没有适用于 IE9 的有效命令。 IE9 缺少一些东西。 我尝试过的所有东西都可以在其他地方使用:chrome、safari、移动设备等...... 我想要一个可以转换它的命令,我可以在每台设备上使用它,假设支持 HTML5 视频标签中的 mp4。

我使用这个命令:

ffmpeg -i movie.mov -vcodec copy -acodec copy out.mp4
ffmpeg -i movie.mov -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -b:a 128k -pix_fmt yuv420p outa.mp4
ffmpeg -i movie.mov -b:V 1500k -vcodec libx264 -preset fast -g 30 adel.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -f mp4 -crf 22 lamlam.mp4
ffmpeg -i movie.mov -acodec aac -strict experimental -ac 2 -ab 160k -vcodec libx264 -preset slow -profile:v baseline -level 30 -maxrate 10000000 -bufsize 10000000 -f mp4 -threads 0 adiel.mp4

etc.. 所有这些命令再次生成一个有效的 mp4 文件,该文件适用于 chrome、safari 等......并且即使我使用窗口媒体播放器在 windows 本身中启动它们也可以工作。 当我将此文件放入 IE9 中的视频标签(我使用的是http://videojs.com/)时,它不起作用!

<div class="vidoco-content" style="margin-top: 20px;">
<video id="divVid" class="video-js vjs-default-skin vidoco-center" controls preload="none" width="600" height="400" poster="<?php echo(DOMAIN); ?>static/test.jpg">
    <source src="<?php echo(DOMAIN); ?>static/out.mp4" type="video/mp4" />
</video>

如果我使用软件miro video converter 将相同的mov 文件转换为mp4 - 它转换得很好,我可以在IE9 中播放! miro 转换器也在其中使用嵌入的 ffmpeg,所以我确信它只是正确的 ffmpeg 命令和参数的一米。 在我的 apache htaccess 中,我为我的文件设置了正确的 mime 类型,并且在查看 IE 开发人员工具时发现它确实是正确的:

AddType audio/aac .aac
AddType audio/mp4 .mp4 .m4a
AddType audio/mpeg .mp1 .mp2 .mp3 .mpg .mpeg
AddType audio/ogg .oga .ogg
AddType audio/wav .wav
AddType audio/webm .webm

AddType video/mp4 .mp4 .m4v
AddType video/ogg .ogv
AddType video/webm .webm

我为此苦苦挣扎了很长时间,因此非常感谢任何帮助。

谢谢!

【问题讨论】:

  • ie9 应该处理 h264/aac 或 webm...diveintohtml5.info/video.html
  • 查看关于 'vp8' 和 ie9 的说明
  • 你知道它是否可以与 ffmpeg 命令一起使用吗?
  • 阅读链接,靠近底部,它覆盖了 ffmpeg。
  • 我做到了。 IE9 H.264 没有 ffmpeg - 仅适用于“HandBrake”。你知道 ffmpeg 的命令吗?

标签: video ffmpeg internet-explorer-9 html5-video codec


【解决方案1】:

对于ffmpeg

ffmpeg -i {input}.mov -vcodec h264 -acodec aac -strict -2 {output}.mp4

您还可以添加-q:v/-q:a 参数来指定视频的质量。你也可以使用比 ffmpeg 更简单的编码器 HandBrake。

对于HandBrake

handbrakecli -i {input}.mov -e x264 -E facc -o {output}.mp4

 

编辑:我找到了解决方案!这是我在 IE 9 和 Firefox 上测试过的带有工作演示的 ZIP!

http://www.mediafire.com/download/kyavlpudybg0bc1/HTML5_video.zip

另外,上面的demo有一个flash fallback,所以它应该可以在IE8及更低版本上运行。

使用相同的ffmpeg 命令。
编辑:我不得不重新上传视频,因为我的托管服务暂时停止了。现在它托管在 mediafire 上。我发现它们是最好的文件共享服务。最少广告,无需注册,无需 30 秒等待。

 

另外,请查看 videojs 网站上的讨论: http://help.videojs.com/discussions/problems/1020-ffmpeg-command-produce-your-demonstration-video

非常重要!确保单击“允许活动内容”按钮以允许视频在本地运行!

我遇到的问题和我的解决方案的视频:参见我上面提到的演示。

测试时使用的 HTML 代码:

<!DOCTYPE html>
<html>
<body>

<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

</body>
</html>

我分析了 w3schools 提供的一个工作测试视频(它适用于 IE),我发现他们使用 HandBrake 对视频进行编码。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'movie.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2010-05-11 10:32:06
    encoder         : HandBrake 0.9.4 2009112300
  Duration: 00:00:12.61, start: 0.000000, bitrate: 202 kb/s
    Chapter #0.0: start 0.000000, end 12.612000
    Metadata:
      title           :
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 320x240, 80 kb/s, 29.65 fps, 29.97 tbr, 90k tbn, 59.31 tbc
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 115 kb/s
    Metadata:
      creation_time   : 2010-05-11 10:32:06
    Stream #0:2(und): Subtitle: mov_text (text / 0x74786574)
    Metadata:
      creation_time   : 2010-05-11 10:32:06`

【讨论】:

  • 再次 - vpre 在新版本的 ffmpeg 中已被弃用 - 在新版本中与它相同的命令是什么?
  • @Adidi:我更改了脚本并添加了一种新方法。
  • 不 - 我只需要 mp4 - 我尝试了你的第一个命令 - sais libfaac 未知。尝试了您的编辑命令 - 再次使用 -vpre - 它的抛出错误(使用预设)
  • 你检查过手刹吗?
  • @Sunny:使用相同的命令,但只需指定您的 webm 文件而不是 {INPUT}.mov
【解决方案2】:

ffmpeg 的初级之旅


下载最新的 ffmpeg 及其预设 http://www.ffmpeg.org/download.html

按照说明在 Windows 中安装 Ffmpeg Binary


说明:

  1. 从 arrozcru 自动构建页面获取最新版本
  2. 解压文件夹到 C:/Program Files/ffmpeg
  3. 将 C:/Program Files/ffmpeg/bin 添加到系统的 PATH 环境变量中

可选的 libx264 预设设置:

如果您使用 libx264 预设(通过使用 -vpre 标志),您需要进行以下设置。

  1. 为指向您的主目录的用户创建一个 HOME 环境变量。 (例如,对于 Vista/7/8 C:/Users/moose 或对于 XP C:/Documents and Settings/moose)
  2. 在您的主目录中创建一个 .ffmpeg 文件夹
  3. 将预设文件从 C:/Program Files/ffmpeg/share/*.ffpreset 复制到 %HOME%/.ffmpeg
  4. 现在您可以打开命令提示符并使用 ffmpeg。 :D(例如,这是我的 Vimeo 视频转换命令。ffmpeg -i input.mov -vcodec libx264 -vpre hq -crf 24 -g 25 -acodec libmp3lame -ab 192k -ar 44100 output.mp4)
    *注意:libfaac 不包含在构建中,因为 libfaac 被认为是一个非免费插件

记得在windows中设置HOME环境变量

  1. 复制环境变量文件夹下的预设
  2. 使用ffmpeg转换需要使用以下命令:

对于 mp4 (H.264 / ACC):

ffmpeg -i INPUTFILE -b 1500k -vcodec libx264 -vpre slow -vpre baseline -g 30 "OUTPUTFILE.mp4"

对于 webm (VP8 / Vorbis):

ffmpeg -i "INPUTFILE"  -b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 "OUTPUTFILE.webm"

对于 ogv (Theora / Vorbis):

ffmpeg -i "INPUTFILE" -b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30 "OUTPUTFILE.ogv"

【讨论】:

  • 会从源代码帮助安装它吗?内部带有自动构建的“exe”构建不好?
  • 这...太多了。我们的工作是速度,而不是“耗时”。厉害了,现在几年了?而不是一个正确编译的 FFMPEG.exe。到现在为止,人们会认为,由于需要移动和 HTML5 视频,将会有大量“易于使用”的选项。见鬼,我傻眼了,Adobe 还没有跳上这一步。
【解决方案3】:

来自原始链接...

ffmpeg 0.6 及更高版本完全支持 WebM。在命令行中,不带参数运行 ffmpeg 并验证它是否支持 VP8 编译:

you@localhost$ ffmpeg
FFmpeg version SVN-r23197, Copyright (c) 2000-2010 the FFmpeg developers
built on May 19 2010 22:32:20 with gcc 4.4.3
configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc 
--enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame 
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora 
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis 
--enable-libvpx

如果你没有看到“--enable-libvorbis”和“--enable-libvpx”这两个神奇的词,那么你就没有正确的 ffmpeg 版本。 (如果你自己编译了ffmpeg,请检查你是否安装了两个版本。没关系,它们不会相互冲突。你只需要使用启用VP8版本的ffmpeg的完整路径即可。)

我将进行两次编码。第 1 步只是扫描输入视频文件 (-i pr6.dv) 并将一些统计信息写入日志文件(将自动命名为 pr6.dv-0.log)。我用 -vcodec 参数指定视频编解码器:

you@localhost$ ffmpeg -pass 1 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -an -y NUL

大部分 ffmpeg 命令行与 VP8 或 WebM 无关。 libvpx 确实支持许多您可以传递给 ffmpeg 的特定于 VP8 的选项,但我还不知道它们中的任何一个是如何工作的。一旦我找到了对它们的良好解释,我会在此处将其链接起来,并在值得这样做的情况下将它们纳入叙述中。

对于第二遍,ffmpeg 将读取它在第一遍中写入的统计信息,并实际进行视频和音频的编码。它会写出一个 .webm 文件。

you@localhost$ ffmpeg -pass 2 -passlogfile pr6.dv -threads 16  -keyint_min 0 -g 250 -skip_threshold 0 -qmin 1 -qmax 51 -i pr6.dv -vcodec libvpx -b 614400 -s 320x240 -aspect 4:3 -acodec libvorbis -y pr6.webm

这里有五个重要参数:

  • -vcodec libvpx 指定我们使用 VP8 视频编解码器。 WebM 始终使用 VP8 视频。
  • -b 614400 指定比特率。与其他格式不同, libvpx 期望比特率以实际比特为单位,而不是千比特。如果你想 一个 600 kbps 的视频,将 600 乘以 1024 得到 614400。
  • -s 320x240 指定目标尺寸,宽乘高。
  • -aspect 4:3 指定视频的纵横比。 标清视频通常是 4:3,但大多数高清 视频是 16:9 或 16:10。在我的测试中,我发现我必须指定 this 在命令行上明确显示,而不是依赖 ffmpeg 自动检测。
  • -acodec libvorbis 指定我们使用 Vorbis 音频编解码器。 WebM 始终使用 Vorbis 音频。

【讨论】:

    【解决方案4】:

    我的问题是像素格式。

    添加 -pix_fmt yuv420p 为我在 IE 中修复了它。

    【讨论】:

      【解决方案5】:

      我花了很多时间试图弄清楚这一点。我终于找到了如何使用 avconv(或 ffmpeg)正确地做到这一点

      1. 使用 H.264 编解码器将视频转换为 MPEG4。你不需要任何花哨的东西,让 avconv 为你完成这项工作:

        avconv -i video.mp4 -vcodec libx264 pre_out.mp4
        
      2. 将文件信息移动到文件头,这样浏览器一开始下载就可以开始播放了。这是IE9的关键!!!

        qt-faststart pre_out.mp4 out.mp4
        

      qt-faststart 是一个 Quicktime 实用程序,也支持 H.264/ACC 文件格式。它是libav-tools 包的一部分。

      【讨论】:

        【解决方案6】:

        前段时间遇到同样的问题,我通过这种方式成功解决了:

        首先,下载最新版本的ffmpeg(如果你想做一些实验,也可以从官方github仓库(https://github.com/FFmpeg/FFmpeg)构建)。

        然后试试这个:

        ffmpeg -i input.mov -c:v libx264 -c:a libfaac -strict experimental output.mp4
        

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 2016-05-19
          • 1970-01-01
          • 2012-08-15
          • 1970-01-01
          • 1970-01-01
          • 2011-03-08
          • 1970-01-01
          • 2023-01-17
          • 1970-01-01
          相关资源
          最近更新 更多