因此,从我的Web服务器,我想使用FFMPEG转码媒体文件以用于HTML <audio>或<video>标记.够容易吧?
当HTTP客户端请求转换后的文件时,转换需要实时进行.理想情况下,文件将被转码回HTTP客户端,因为它正在进行转码(而不是之后的结尾,因为在任何数据开始被发回之前可能需要一段时间).
这很好,除了在今天的浏览器中,HTML5音频或视频标签使用Range标头在多个HTTP请求中请求媒体文件.有关详情,请参阅此问题.
在上面链接的那个问题中,你可以看到Safari请求文件的奇怪块,包括结尾的几个字节.这带来了一个问题,即Web服务器必须等待转换完成,以便传送文件的最后字节以符合Range请求.
所以我的问题是,我的思路是否合适?是否有更好的方法可以将转码内容提供给<audio>或者<video>标记,而不必等待整个转换完成?提前致谢!
我正在构建一个简单的webview应用程序,现在使用HTML5视频播放器显示一个充满短视频剪辑的网站.一切都在默认的Android网络浏览器中运行正常,但webview不会播放任何视频剪辑.
用于播放视频片段的Html代码如下:
<video poster preload="true" controls autoplay width="500" height="200">
<source src="http://www.edmondvarga.com/demo/videos/video.mp4" type="video/mp4">
</video>
Run Code Online (Sandbox Code Playgroud)
主Activity.java:
package tscolari.mobile_sample;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class InfoSpotActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
WebSettings webSettings = mainWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mainWebView.setWebViewClient(new MyCustomWebViewClient());
mainWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
mainWebView.loadUrl("http://server.info-spot.net");
}
private class MyCustomWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) { …Run Code Online (Sandbox Code Playgroud) 我正在创建一个移动网站,我有一个视频,当有人点击链接时我想玩这个视频:
<div id="player"></div>
<a href="#" onclick="DoNav('<?php echo $url; ?>');" title="Click to play video"> <?php echo $result_videos[$i]["camera_name"]; ?> </a>
<script type="text/javascript">
function DoNav(theUrl)
{
// only add the player if it doesn't yet exist
if($('#myfileplayer').length == 0) {
var mydiv = $("#player");
var myvideo = $("<video id='myfileplayer' src='"+ theUrl + "' width='320' height='240' controls></video>");
mydiv.append(myvideo);
} else {
$('#myfileplayer').attr("src",theUrl);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
使用iPhone,这很好用,我点击视频,它全屏显示.Android也可以使用,但它需要您点击要播放的视频然后点击全屏.当你上场时,是否可以像iPhone一样进入全屏?
我正在尝试设计一个兼容Android的视频网站.我想要实现的一个很好的例子是vimeo.com.它们显示了视频的缩略图.当您点按它时,原生Android播放器会全屏显示:

目前,我有一个包含h.264编码视频的FLV的锚点:
<a href="video.flv">click here to watch</a>
Run Code Online (Sandbox Code Playgroud)
当您在Android上点按锚点时,它会下载视频而不是播放视频.那不是我想要的.如何让它在像Vimeo这样的原生播放器中全屏播放?但与Vimeo不同,我希望视频能够扩展,以便在实际视频周围没有太多黑色空白区域.
我正在努力让HTML5视频在移动设备上播放.它们似乎在最新版本的iOS上运行良好,但我与Android设备有很多不一致之处.
我正在使用video.js并在缩略图上点击一下,然后用HTML5视频替换该元素并自动播放.以下代码扁平化不适用于Android模拟器(单击缩略图不起作用).当我在自己的Droid Razr上尝试时,它开始加载视频,然后浏览器冻结.这种情况发生在原生浏览器和 Chrome中,它告诉我它是设备本机的东西.
$(".video").live("click", function(e) {
e.preventDefault();
$(this).replaceWith("<video id='" + $(this).data("video-id") + "' class='video-js' preoload='auto' width='100%' height='100%' poster='" + $(this).data("video-poster-url") + "'><source type='video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"' src='" + $(this).data("video-url") + "'></video>");
video = _V_($(this));
video.ready(function() {
this.play();
this.requestFullScreen();
});
});
Run Code Online (Sandbox Code Playgroud)
HTML最终成为:
<video id='fv3530' class='video-js' preoload='auto' width='100%' height='100%' poster='/posters/fv3530.jpg'>
<source type='video/mp4; codecs="avc1.42E01E, mp4a.40.2" src='/videos/fv3530.mp4'>
</video>
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么这会导致Android设备完全冻结,以及我可以做些什么来让视频在大多数Android设备上一致运行?
谢谢!
html5 ×4
android ×3
video ×3
audio ×1
ffmpeg ×1
html5-video ×1
javascript ×1
jquery ×1
transcoding ×1
webview ×1