ffmpeg的MOV文件转换为mp4格式的HTML5视频标签IE9(ffmpeg convert m

2019-07-22 03:19发布

我到处这里和谷歌 - 虽然对IE9的作品没有有效的命令。 一些如何IE9是失去了一些东西。 所有我曾试过其他地方:铬,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

等再次这一切命令产生有效的MP4文件,该文件适用于Chrome,Safari浏览器等..当我使用视窗媒体播放器的Windows本身启动它们也可使用。 当我把这个文件中的视频标签(我用http://videojs.com/ )在IE9它不工作!

<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>

如果我使用的软件米罗视频转换到相同的MOV文件转换成MP4 -它转换很好,我可以在IE9中玩了! 米罗转换器还采用使嵌入的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

我与这个挣扎了很长一段时间,因此任何帮助,将不胜感激。

谢谢!

Answer 1:

对于ffmpeg

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

您也可以添加-q:v / -q:a参数来指定视频的质量。 您也可以使用手刹这是一个比简单的ffmpeg编码器。

对于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

此外,上述演示有闪光灯回退,所以它应该在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),我发现他们用手刹来编码视频。

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`


Answer 2:

初步旅程的ffmpeg


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

按照说明来安装ffmpeg的二进制在Windows


说明:

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

可选libx264预设设置:

如果你使用libx264预设(使用-vpre标志)你需要做以下设置。

  1. 为您的用户指向你的主目录HOME环境变量。 (例如为Vista / 7/8 C:/用户/驼鹿或XP C:/文件和设置/驼鹿)
  2. 在你的home目录下创建一个文件夹.ffmpeg
  3. 预设文件从C复制:。。/ Program Files文件/ ffmpeg的/股/ * 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"


Answer 3:

从原稿链接...

WebM的是FFmpeg的0.6和更高版本完全支持。 在命令行中运行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,请检查,如果你有安装了两种版本。这很好,他们不会互相冲突。你只需要使用的ffmpeg的启用VP8版本的完整路径。)

我要做一个双路编码。 第一遍只是通过输入的视频文件扫描(-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。 在我的测试中,我发现,我不得不在命令行中明确指定,而不是依靠ffmpeg的自动检测它这个。
  • -acodec libvorbis规定,我们正在与Vorbis音频编解码器编码。 WebM的总是使用Vorbis音频。


Answer 4:

我花了很多时间试图搞懂这个问题。 我终于找到了如何做到这一点正确使用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包。



Answer 5:

我的问题是像素格式。

添加-pix_fmt yuv420p固定在IE中对我来说。



Answer 6:

有同样的问题前一段时间,我用这种方式成功地解决:

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

那么试试这个:

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

希望这将帮帮忙!



文章来源: ffmpeg convert mov file to mp4 for HTML5 video tag IE9