我们在绿色屏幕上拍摄了一位发言人,并准备好多种格式的视频文件.
使用Flash,我们可以在param和embed标签中使用wmode透明,但HTML5中的视频和源标签是否与此类似?是否可以正确保存.m4v或.ogv视频,以便我们可以在浏览器中播放具有透明背景的这些文件?
谢谢
我在Azure的预留网站上托管一个静态网站(它是PaaS,无法访问OS/IIS).我正在尝试添加一些.mp4视频,但是当我点击我得到的链接时
The resource you are looking for has been removed, had its name changed,
or is temporarily unavailable.
Run Code Online (Sandbox Code Playgroud)
请看这里的例子.如果我右键单击链接并尝试保存文件我得到 - 失败 - 没有文件.
我正在使用付费实例,所以不要认为这是资源问题.视频文件小于2MB.他们从未工作过.该网站非常静态.
有谁知道我怎么解决这个问题?我应该以其他方式托管MP4文件吗?
谢谢,
我正在开发视频播放器应用程序,我想在原生视频中播放.mp4视频.我无法给播放 视频使用的URL.我收到错误抱歉,该视频无法播放,也我不能够以播放下载的视频在本地videoview.
我在videoview中播放视频的代码:
String mUrl = "http://www.servername.com/projects/projectname/videos/1361439400.mp4";
VideoView mVideoView = (VideoView)findViewById(R.id.videoview)
videoMediaController = new MediaController(this);
mVideoView.setVideoPath(mUrl);
videoMediaController.setMediaPlayer(mVideoView);
mVideoView.setMediaController(videoMediaController);
mVideoView.requestFocus();
mVideoView.start();
Run Code Online (Sandbox Code Playgroud)
请分享您的想法.
谢谢.
我知道FFMPEG是可能的,但是如果我有一个部分文件(比如没有开头和结尾)该怎么办.有可能从中提取一些帧吗?
我正在从事在线电视服务.其中一个目标是在没有任何其他浏览器插件的情况下播放视频(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,所以如果我必须支持两者,我必须转码两次.
我正在编写一些代码来解析MP4文件......
是否有免费的资源来获取有关MP4文件格式规范的文档.到目前为止,我只找到了ISO文档,我需要购买ISO PDF.MP4不是开放标准吗?
这是我的场景:
这可能是使用MediaMuxer实现的吗?很高兴收到有关此事的任何信息
我一直在寻找http://bigflake.com/mediacodec/#DecodeEditEncodeTest(谢谢@fadden),它说:
"解码帧并将其复制到ByteBuffer,
glReadPixels()在Nexus 5上大约需要8ms,足够快,足以跟上30fps的输入速度,但将其作为PNG保存到磁盘所需的额外步骤是昂贵的(大约半秒钟) "
所以几乎1秒/帧是不可接受的.根据我的想法,一种方法是将每个帧保存为PNG,打开它,在其上添加位图叠加然后保存它.然而,这将花费大量时间来完成.
我想知道是否有办法做这样的事情:
在iOS上,我看到有一种方法可以将原始音频+原始视频+图像添加到容器中,然后对整个事物进行编码...
我应该切换到ffmpeg吗?ffmpeg的稳定性和兼容性如何?我是否冒着与Android 4.0+设备兼容的问题?有没有办法用ffmpeg来实现这个?我是这个领域的新手,还在做研究.
多年后编辑:
自问题以来已过去多年,并且ffmpeg在许可方面很难添加到商业软件中.这是如何演变的?较新版本的android在默认sdk上更有能力吗?
稍后编辑一段时间
我发布了一些负面投票信息作为答案,因此我将编辑原始问题.这是一个很棒的库,从我的测试中确实将水印应用于视频并使用进度回调进行处理,这使得向用户显示进度变得更加容易,并且还使用默认的android sdks.https://github.com/MasayukiSuda/Mp4Composer-android
该库使用Android MediaCodec API生成Mp4电影,并应用滤镜,缩放和旋转Mp4.
示例代码,可能如下所示:
new mp4Composer(sourcePath, destinationPath)
.filter(new GlWatermarkFilter(watermarkBitmap)
.listener(){
@Override
private void onProgress(double value){}
@Override
private void onCompleted(double value){
runOnUiThread( () ->{
showSneakbar
}
}
@Override
private void onCancelled(double value){}
@Override
private void onFailed(Exception e){}
}).start();
Run Code Online (Sandbox Code Playgroud)
在模拟器上进行测试,似乎在android 8+上正常工作,而在旧版本上生成黑色视频文件.但是,在真实设备上进行测试似乎有效.
是否可以从命令行运行ffmpeg,它将'moov atom'元数据放在MP4文件的开头或运行qt-faststart作为ffmpeg中的后处理操作,这样生成的文件就可以通过互联网?
我当然可以将它作为一个单独的命令运行,但更喜欢它是某种东西
编辑1
http://ffmpeg.org/ffmpeg.html#mov
MOV/MP4复用器
多路复用器选项包括:
'-moov_size字节'
Run Code Online (Sandbox Code Playgroud)Reserves space for the moov atom at the beginning of the file instead of placing the moov atom at the end. If the space reserved is insufficient, muxing will fail.
mp4 ffmpeg video-processing video-streaming video-conversion
好吧,基本上我有一个项目要求视频对用户隐藏,同时仍能看到它们(通过使用php).这是我到目前为止所得到的:
video.php文件包含:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'path/to/movie.mp4');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$out = curl_exec($ch);
curl_close($ch);
header('Content-type: video/mp4');
header('Content-type: video/mpeg');
header('Content-disposition: inline');
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($out));
echo $out;
exit();
?>
Run Code Online (Sandbox Code Playgroud)
并且应该显示的html文件正在使用html5.现在这里的事情......当我直接嵌入这个(不是)时它起作用.但它不适用于我的iPhone并且无法在标签中工作...如果我使用直接文件而不是php包装器,一切正常,在我的iPhone上也是如此...
所以我想我的问题是这样的:什么是正确的header()信息来完美复制可以通过iPhone和HMTL5流式传输的mp4?
解决方案源自:http://mobiforge.com/developing/story/content-delivery-mobile-devices
video.php文件:
<?php
$file = 'path/to/videofile.mp4';
$fp = @fopen($file, 'rb');
$size = filesize($file); // File size
$length = $size; // Content length
$start = 0; // Start byte
$end = $size - 1; // End byte
header('Content-type: video/mp4');
header("Accept-Ranges: 0-$length");
if (isset($_SERVER['HTTP_RANGE'])) …Run Code Online (Sandbox Code Playgroud)