我在这里和谷歌到处都是 - 没有适用于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
等..再次所有这些命令产生一个有效的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转换器也在其中使用embedd ffmpeg,所以我确信它只是一个正确的ffmpeg命令和参数的metter。 在我的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
我很长时间都在努力,所以任何帮助都会受到高度赞赏。
谢谢!
答案 0 :(得分:91)
ffmpeg
:
ffmpeg -i {input}.mov -vcodec h264 -acodec aac -strict -2 {output}.mp4
您还可以添加-q:v
/ -q:a
参数来指定视频的质量。您也可以使用HandBrake,这是一个比ffmpeg更简单的编码器。
HandBrake
:
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-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`
答案 1 :(得分:11)
下载最新的ffmpeg及其预设 http://www.ffmpeg.org/download.html
按照说明在Windows中安装Ffmpeg二进制文件
<强>说明:强>
可选的libx264预设设置:
如果您使用libx264预设(使用-vpre标志),则需要进行以下设置。
请记住在Windows中设置HOME环境变量
对于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"
答案 2 :(得分:4)
来自orig链接...
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版本的完整路径。)< / p>
我打算进行两遍编码。传递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。在我的测试中,我发现我必须指定
这显然在命令行上,而不是依赖于ffmpeg
自动检测它。-acodec libvorbis
指定我们使用。编码
Vorbis音频编解码器。 WebM始终使用Vorbis音频。答案 3 :(得分:1)
我花了很多时间试图找出那个。我终于找到了如何使用avconv(或ffmpeg)正确地做到这一点
使用H.264编解码器将视频转换为MPEG4。你不需要任何花哨的东西,只需让avconv为你完成这项工作:
avconv -i video.mp4 -vcodec libx264 pre_out.mp4
将文件信息移动到文件头,这样浏览器就可以在开始下载后立即开始播放。这是IE9的关键!!!
qt-faststart pre_out.mp4 out.mp4
qt-faststart
是一个Quicktime实用程序,也支持H.264 / ACC文件格式。它是libav-tools
包的一部分。
答案 4 :(得分:1)
我的问题是像素格式化。
添加-pix_fmt yuv420p
为我修复了IE。
答案 5 :(得分:0)
前一段时间遇到同样的问题,我成功解决了这个问题:
首先,如果您想进行一些实验,请下载最新版本的ffmpeg(或从官方github存储库(https://github.com/FFmpeg/FFmpeg)构建)。
然后试试这个:
ffmpeg -i input.mov -c:v libx264 -c:a libfaac -strict experimental output.mp4
希望这会有所帮助!