有谁知道任何可以将视频(avi,flv,等等)转换为HTML5支持的ogg/ogv和mpeg4格式的软件?
我尝试了一些,但我找不到任何有效的东西.
我想为我正在编写的程序添加视频转换功能.FFmpeg用于执行此操作的命令行界面很简单ffmpeg -i InputFile OutputFile
,但是有没有办法将其用作库,所以我可以做类似的事情ffmpeg_convert(InputFile, OutputFile)
?
我希望我不必直接使用libavcodec,因为我认为它将比单行函数更复杂,以便在格式之间进行转换.如果FFmpeg无法轻易改装来执行此操作,是否可能有另一个基于它的库?我听说过libvlc,但这似乎只暴露了一个视频播放 API,而不是视频转换.
谢谢.
我正在从事在线电视服务.其中一个目标是在没有任何其他浏览器插件的情况下播放视频(Flash除外).
我决定使用MP4,因为大多数HTML5浏览器和Flash支持它(用于后备).视频由FFMpeg在服务器上从ASF转码.
但是,我发现MP4不能实时流式传输,因为它有一个moov原子用于必须指定长度的元数据.FFMpeg无法直接将mp4流式传输到stdout,因为它将moov放在文件的末尾.(MP4的实时转码和流式传输在Android中有效,但在Flash Player中无法使用NetStream.Play.FileStructureInvalid错误)
当然,MPEG-TS存在,但HTML5不支持<video>
.
我想到的是一种将流实时转码为MP4的方法,并且在每个新的HTTP请求中,首先发送一个指定视频长度非常长的数字的moov,然后开始发送其余的MP4文件.
是否可以使用MP4进行流式传输?
经过一些研究和av501的回答,我知道框架的尺寸必须是已知的,以便它可以工作.
mp4文件可以分割成更小的部分,以便可以流式传输吗?
当然,切换到另一个容器/格式是一个选项,但唯一兼容Flash和HTML5的格式是mp4/h264,所以如果我必须支持两者,我必须转码两次.
我基本上有一个字节矩阵.每行(意为byte [])表示图像.如何创建一个电影(任何格式 - avi,mpeg,等等),并将其保存为文件?每个图像可以是以下之一:
int JPEG Encoded formats.
int NV16 YCbCr format, used for video.
int NV21 YCrCb format used for images, which uses the NV21 encoding format.
int RGB_565 RGB format used for pictures encoded as RGB_565.
int YUY2 YCbCr format used for images, which uses YUYV (YUY2) encoding format.
int YV12 Android YUV format: This format is exposed to software decoders and applications.
Run Code Online (Sandbox Code Playgroud)
只要我创建电影,我就可以选择我喜欢的格式.
public void createMovie(byte[][] images) {
// and ideas on what to write here?
} …
Run Code Online (Sandbox Code Playgroud) 任何人都可以用一种简单明了的方式解释MPEG4如何压缩数据.我最感兴趣的是视频.我知道它有不同的标准或部分.我只是在寻找主要的整体压缩方法,如果有一个MPEG4.
我有一个DirectShow图表来从网络流中呈现MPEG2/4电影.当我通过手动连接引脚组装图形时,它不会渲染.但是当我在GraphBuilder上调用Render时,渲染效果很好.
显然有一些设置步骤,我没有在GraphBuilder执行的图形中的某个过滤器上执行.
有没有办法在组装图形时看到GraphBuilder的调试输出?
有没有办法转储工作图,看看它是如何组合在一起的?
解开生活在DirectShow盒子里的神秘的任何其他想法?
谢谢!-Z
我的基于PC的Web应用程序使用HTML5,我想导入mpeg文件在我的浏览器中播放,这些文件已被其他应用程序保存.有没有办法用HTML5播放这些视频文件?
编辑:
应用程序尝试从本地硬盘驱动器而不是从服务器播放mpeg文件.因此,用户可以选择mpeg文件来播放选定的mpeg文件.
HTML:
<input id="t20provideoinput" type="file" multiple accept="video/*"/>
<video id="t20provideo" controls controls>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
(function localFileVideoPlayerInit(win) {
var URL = win.URL || win.webkitURL;
var sources = [];
var j = 1;
var videoNode = document.querySelector('video');
var videoNode1 = document.querySelector('object');
var groupElement = document.getElementsByClassName('metric')[0];
console.log('this is group element ' + groupElement);
var playSelectedFile = function playSelectedFileInit(event) {
for(var i=0; i<this.files.length; i++){
var file = this.files[i];
var type = file.type;
var fileURL = URL.createObjectURL(file);
sources.push(fileURL);
}
groupElement.addEventListener('click', function(){
videoNode.src = sources[0];
}); …
Run Code Online (Sandbox Code Playgroud) 我正在实施ATSC-153规范,该规范基本上根据RFC 3984在IP/UDP/RTP中广播基线H.264视频配置文件.帧的片段正在重新组装,并且大部分在嵌入式播放我正在处理的处理器,虽然由于某种原因我正试图追踪的一些腐败现象正在发生.我试图将其封装到MPEG-TS中以便在Windows(VLC)上进行渲染以进行一些比较,并且由于某种原因我遇到了困难.由于某种原因,VLC,TSReader和MPEG2Repair无法找到视频.我正在做的步骤如下,对于我收到的SPS或PPS H.264帧,它们是相同的.
创建PAT/PMT,PMT PID 0x11,视频类型为0x1b,视频PID为0x280,PCR pid为0x1fff(无pcr).实际上,我通过这个每15帧左右.
我在帧中附加了访问单元分隔符,NAL号9.我认为这应该附加到传输中的所有H.264帧.主要pic类型是1(0x30字节),它对应于基线配置文件的I,P.
我附加了一个PES头帧,它有来自RTP头的PTS.
我附加了4字节的TS标头.在帧的开头,我设置了PUS位.我为序列保留了一个4位计数器.
任何剩余的字节都不能被184整除,我把一个带有适配字段(长度设置,标志字节设置为0)的TS数据包填充(或填充)到剩余字节.
我确保流以SPS帧开始.根据我的理解(可能不是很好),这应该包含一个实际的图片.SPS帧在流中是15K字节左右.这是第一个TS数据包的转储:
000 47 42 80 15 00 00 01 E0 00 00 81 80 05 21 AA BB
010 9A 91 00 00 00 01 09 30 00 00 00 01 67 42 C0 14
020 9A 44 0D 0F 9F F8 00 08 00 08 04 00 00 00 01 68
030 DE 24 88 00 00 00 01 E6 87 26 D6 AC FA 58 78 24 …
Run Code Online (Sandbox Code Playgroud) 谁能告诉我元数据以常见的视频文件格式存储在哪里?如果它位于文件的开头,或分散在整个文件中.
我正在使用包含大量视频文件的远程对象存储,我想从这些文件中提取元数据,特别是视频持续时间和视频尺寸,而不将整个文件内容流式传输到本地计算机.
我希望这些元数据将存储在文件的前X个字节中,因此我可以从头开始而不是整个文件获取字节范围,将此部分文件数据传递给ffprobe
.
出于测试目的,我创建了一个22MB的MP4文件,并使用以下命令仅向ffprobe提供前1MB的数据:
head -c1024K '2013-07-04 12.20.07.mp4' | ffprobe -
Run Code Online (Sandbox Code Playgroud)
它打印:
avprobe version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2007-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1a6b7a0] stream 0, offset 0x10beab: partial file
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'pipe:':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 1947-07-04 11:20:07
Duration: 00:00:09.84, start: 0.000000, bitrate: N/A
Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080, 20028 kb/s, PAR 65536:65536 DAR 16:9, 29.99 fps, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Mac OS X 10.7 Lion上安装需要libmad(MPEG音频解码器库)库的程序,但安装libmad.0.15.b会导致此错误:
version.c:1: error: CPU you selected does not support x86-64 instruction set
Run Code Online (Sandbox Code Playgroud)
该库在OS X 10.5上安装得很好.它是64位兼容性问题吗?我找不到有关在Lion上安装的任何具体说明或文档.有什么建议?谢谢.