不使用 Flash 在 WebView Android 中播放 RTMP
Posted
技术标签:
【中文标题】不使用 Flash 在 WebView Android 中播放 RTMP【英文标题】:Play RTMP in WebView Android without using Flash 【发布时间】:2020-02-10 10:01:47 【问题描述】:我正在尝试在 android 中播放 RTMP 流。我让this question 在不使用 WebView 的情况下播放它,但似乎没有人能帮助我。所以,我正在尝试使用 WebView 播放它。但是,由于它需要 Flash 播放器,并且 Android 设备不再支持 Flash,我无法重现它。
我有这个:
videostream.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<style type="text/css" media="screen">
html, body
margin:0;
padding:0;
height:100%;
#altContent
width:100%;
height:100%;
</style>
<title>YOUR TITLE HERE!</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"> </script>
<script type="text/javascript">
var flashvars = ;
flashvars.HaloColor = "0x0086db";
flashvars.ToolTips = "true";
flashvars.AutoPlay = "true";
flashvars.VolumeLevel = "50";
flashvars.CaptionURL = "YOUR CAPTION HERE";
flashvars.Title = "YOUR TITLE HERE";
flashvars.Logo = "";
flashvars.SRC = "https://player.cdnmedia.tv/embed/a77aa67c";
flashvars.BufferTime = "5";
flashvars.AutoHideControls = "false";
flashvars.IsLive = "true";
var params = ;
params.wmode = "transparent";
params.allowfullscreen = "true";
var attributes = ;
attributes.id = "L3MP";
swfobject.embedSWF("http://media-player.cdn.level3.net/flash/v1_1_1/Level3MediaPlayer.swf", "altContent", "100%", "100%", "10.1.0","http://media-player.cdn.level3.net/flash/v1_1_1/expressInstall.swf", flashvars, params, attributes);
</script>
</head>
<body>
<div id="altContent">
<center> <BR><BR><span style="color:red"><b>Please Install Adobe Flash Player</b>
</span><BR><BR>
<a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" /></a>
</center>
</div>
</body>
</html>
</script>
</html>
流活动:
String LocalFile = "file:///android_asset/videostream.html";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.stream2_layout);
WebView webView = findViewById(R.id.surface);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginState(WebSettings.PluginState.ON);
//webSettings.plug
//webSettings.setPluginsEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setAllowFileAccess(true);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
webView.setBackgroundColor(Color.BLACK);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
webView.loadUrl(LocalFile);
stream2_layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<WebView
android:id="@+id/surface"
android:layout_
android:layout_
android:layout_gravity="center"
android:layout_alignParentTop="true"/>
</RelativeLayout>
我的 ios 开发人员可以玩它。而且,由于 iOS 设备也不支持 Flash,我假设 iOS 中的播放器使用的是 HTML5。
如何播放此流?
【问题讨论】:
【参考方案1】:如您所见,网页视图无法播放 RTMP。没有例外,没有解决方法。视频需要采用可以在 web 视图中播放的格式,例如 hls(通过 hls.js)或 dash。
【讨论】:
我担心...谢谢你至少确认我这一点以上是关于不使用 Flash 在 WebView Android 中播放 RTMP的主要内容,如果未能解决你的问题,请参考以下文章
Android 3.0.1 的 WebView 中不显示 Flash 视频
如何在 WebView 中启用 GoogleTV 上的 Flash
Mac OS/WebView:为啥加载本地页面时无法使用 Flash 和其他插件?