我正在尝试使用ffmpeg连接两个mp4文件.我需要这是一个自动过程因此我选择ffmpeg.我正在将这两个文件转换为.ts文件,然后将它们连接起来,然后尝试对该连接的.ts文件进行编码.文件是h264和aac编码,我希望保持质量相同或尽可能接近原始.
ffmpeg -i part1.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part1.ts
ffmpeg -i part2.mp4 -vcodec copy -vbsf h264_mp4toannexb -acodec copy part2.ts
cat part1.ts part2.ts > parts.ts
ffmpeg -y -i parts.ts -acodec copy -ar 44100 -ab 96k -coder ac -vbsf h264_mp4toannexb parts.mp4
Run Code Online (Sandbox Code Playgroud)
不幸的是我在编码过程中收到来自ffmpeg的以下错误消息:
[h264 @ 0x1012600]sps_id out of range
[h264 @ 0x1012600]non-existing SPS 0 referenced in buffering period
[h264 @ 0x1012600]sps_id out of range
[h264 @ 0x1012600]non-existing SPS 0 referenced in buffering period
[NULL @ 0x101d600]error, non monotone timestamps 13779431 >= …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ffmpeg将文本字幕添加到.mp4容器中:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4
Run Code Online (Sandbox Code Playgroud)
当我试图运行这一行时,它给了我一个错误:
流映射的数量必须与输出流的数量匹配.
如果我尝试将mp4更改为mkv(虽然mp4支持文本字幕),如下所示:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv
Run Code Online (Sandbox Code Playgroud)
它正确地映射了流,但是给出了一个错误:
未找到输出流#0.2的编码器(编解码器ID 94210)
当我发射
ffmpeg -codecs
Run Code Online (Sandbox Code Playgroud)
我可以看到支持srt编解码器作为解码器和编码器,但是我不确定用于mp4和mkv subs编码的是什么,以及我是需要打开它还是单独编译.
我正在研究H.264解码器,我想知道在哪里可以找到SPS和PPS.我的参考文献告诉我那些是在H.264-Stream中编码的NAL单元,但是当我查看一个带有IsoViewer的示例-MP4-File时,它说SPS和PPS在avcC Box中.
这究竟是如何工作的?它如何查找.mkv文件或其他H.264容器?
提前致谢!
尽管所有的炒作,实际上HTML5视频标签有一些问题.为了使用它并使其与浏览器兼容,您必须包含多种格式的视频.要定位所有支持的浏览器,这些格式为mp4和ogg.
我正在寻找每种格式的最佳设置,但不幸的是我找不到任何格式.我正在使用ffmpeg 0.6,其标语为"Works with HTML5".我不是视频专家,所以我想知道是否有人可以为每种格式推荐合适的设置?
我试图在bootstrap网站上找到一个很好的解决方案,但我还没有得到答案.我想我不可能是唯一一个与此斗争的人,但我找不到任何帮助我的东西.
我正在尝试在我的网站上嵌入一个mp4视频.问题是,如果我使用iframe-tag,我就不能使用自动播放和循环.因此,我想用视频标签(或其他支持自动播放和循环的东西)来解决它.之后,我尝试使用对象标签响应视频,但这不起作用.即使我在我的代码(告诉你)中让它,你可以在下面看到:
<div align="center">
<object class="embed-responsive-item">
<video autoplay loop >
<source src="file.mp4" />
</video>
</object>
</div>
Run Code Online (Sandbox Code Playgroud)
我希望你们中的任何人都可以帮我解决这个问题.
video mp4 responsive-design twitter-bootstrap twitter-bootstrap-3
我正在使用这样的HTML文件输入:
<input type="file" accept="video/*">
Run Code Online (Sandbox Code Playgroud)
允许我的用户将视频上传到我的网站.除了Safari之外,这在所有现代浏览器中都能正常工作(只允许用户选择视频文件).
据我所知,Safari似乎将该accept="video/*"
属性解释为accept="*.mov"
忽略了大多数(如果不是全部)其他视频格式/扩展(webm,m4v等).
有关如何让选择对话框只允许在Safari中使用常见视频文件类型(不仅仅是.mov)的任何建议吗?
我有一个网页,其中(除其他外)需要从用户上传的视频中提取特定的框架.用户在播放器中寻找.mp4的特定部分,然后单击一个按钮,ajax调用被激活到一个PHP脚本,该脚本获取.mp4,以及视频的确切时间,并使用它来提取一个"缩略图"框架.
我目前的解决方案是使用php exec
命令:
exec("ffmpeg -i $videoPath -ss $timeOffset -vframes 1 $jpgOutputPath");
......效果很好,除了它和糖蜜一样慢.我的猜测是ffmpeg对于这项工作来说有点太多了,我可以通过利用底层库或其他东西做得更好......但是我不知道如何做到这一点.
理想情况下,我不想安装任何需要真正"安装过程"的东西......即,使用我的网络应用程序将可执行文件放入文件夹中很好,但我宁愿不必实际运行安装程序.此外,解决方案应该能够在mac,linux和windows上运行(尽管linux是首要任务).
我该怎么做才能加快这个过程?
谢谢.
ffmpeg -i infile.avi out.mp4
输出非碎片MP4.
我如何获得碎片mp4?
更新 碎片化的mp4文件在内部分为几个背对背块或MPEG-4电影片段.每个块都有自己的moof原子 - 因此在文件中交错存在几个moof原子,而不是像未分段的mp4那样在末尾交换单个moov.这使得在涉及缓冲的慢速网络上更容易流式传输
有几种工具,如mp4box,可将普通mp4转换为碎片.不幸的是我们不能使用这样的东西
ffmpeg <options to output mp4> | mp4box
Run Code Online (Sandbox Code Playgroud)
因为ffmpeg在生产mp4容器时不会产生可搜索的输出.
我的网站上有一个博客部分,其中包含TinyMce编辑器.我想在发布博客时嵌入视频,而这只是吐出代码.我<embed>
在输出脚本上添加了标记.
这是我用于视频的代码:
<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/CgW_5Vthsds"></param>
<param name="wmode" value="transparent"></param>
<embed src="http://www.youtube.com/v/" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed>
</object>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?