当前位置: 首页 > 知识库问答 >
问题:

ffmpeg将mov文件转换为mp4,用于HTML5视频标记IE9

汪典
2023-03-14

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

我使用以下命令:

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 media Player在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>

null

如果我使用软件miro视频转换器将相同的mov文件转换成mp4-它转换得很好,我可以在IE9中播放它!miro转换器内部也使用了embedd 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

我正与此斗争很长一段时间,所以任何帮助将非常感谢。

谢谢!

共有2个答案

赵炯
2023-03-14

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

按照说明在Windows中安装Ffmpeg二进制文件

说明:

  1. 从arrozcru自动生成页面获取最新生成
  2. 将文件夹解压缩到C:/Program Files/FFMPEG
  3. 将C:/Program Files/FFMPEG/bin添加到系统的PATH环境变量

可选的libx264预设设置:

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

  1. 为指向主目录的用户创建一个主环境变量。(例如,对于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"
子车安和
2023-03-14

对于FFMPEG:

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

您还可以添加-Q:V/-Q:A参数来指定视频的质量。您也可以使用HandBrake,这是一个比FFMPEG更简单的编码器。

对于手刹:

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

 

使用了相同的ffmpeg命令。
编辑:我必须重新上载视频,因为我的托管服务现在关闭了。现在它托管在MediaFire上。我发现他们是最好的文件共享服务。最少的广告,没有注册,没有30秒等待。

 

此外,请查看videojs网站上的讨论:http://help.videojs.com/discussions/problems/1020-ffmpeg-command-produce-your-exemporation-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`
 类似资料:
  • 我曾尝试使用GStreamer管道将mp4视频转换为avi视频,但它是在没有声音的情况下转换的 gst launch-t-v filesrc location=源。mp4!qtdemux!ffdec\U h264!视频/x-raw-yuv!avimux!filesink location=结果yuv。avi公司

  • 我设置了一个相机预览与onPreviewFrame回调,我想知道,“如何编码onPreviewFrame数据到一个mp4视频文件?” 谢谢,如果有任何评论、意见或建议,我们将不胜感激,

  • 谁能帮助我理解为什么我尝试使用FFMPEG CLI用语言元数据标记音轨失败了?我已经找到了关于标签正确语法的各种信息,但我仍然不清楚(所以我的问题的第1部分是什么是正确的语法),但即使我得到了正确的(我可能有也可能没有),我想知道FFMPEG是否未能标记我的音轨,因为我的源被包装/混合了视频本质。这是否排除了语言标记的能力? 值得注意的是,尝试从MP4和MKV源(视频和音频)到MP4(视频和音频)

  • 本文向大家介绍PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件,包括了PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件的使用技巧和注意事项,需要的朋友参考一下 配置php.ini文件  文件上传插件 火焰雨推荐大家使用uploadify,Uploadify是JQuery的一个上传插件,实现带进度显示。插件安装简单,此处略过。  但是有个问题需要注意,非IE浏览器sess

  • 我想将HTML5画布中的动画转换为可以上传到YouTube的视频文件。是否有任何类型的屏幕捕获API或其他东西可以让我通过编程来实现这一点?

  • 1. Gradle 2.代码 3、Logcat: 采用gcc 4.9构建。x(GCC)20150123(预发布)配置:---目标操作系统=linux--交叉前缀=/root/bravobit/ffmpeg-android/toolschain-android/bin/arm-linux-androideabi---arch=arm--cpu=cortex-a8--启用运行时cpudetec--sy