Воспроизведение RTMP в WebView Android без использования Flash - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь воспроизвести поток RTMP в Android. Я спросил этот вопрос , чтобы он играл без нас в WebView, но, похоже, никто не может мне помочь. Итак, я пытаюсь играть в нее с помощью WebView. Но, поскольку для этого требуется проигрыватель Fla sh, а устройства Android больше не поддерживают Fla sh, я не могу воспроизвести его.

У меня есть следующее:

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" alt="Get Adobe Flash player" /></a>
</center>
</div>
</body>
</html>
</script>
</html>

StreamActivity:

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_width="match_parent"
android:layout_height="match_parent">

<WebView
    android:id="@+id/surface"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_alignParentTop="true"/>

</RelativeLayout>

Мой коллега iOS разработчик может играть в нее. И поскольку устройства iOS не поддерживают Fla sh, я предполагаю, что проигрыватель в iOS использует HTML5.

Как я могу воспроизвести этот поток?

1 Ответ

0 голосов
/ 10 февраля 2020

Как вы обнаружили, веб-просмотр не может воспроизводить RTMP. Без исключений, без работы. Видео должно быть в формате, который можно воспроизвести в веб-просмотре, например, hls (через hls. js) или da sh.

...