Самый простой способ воспроизведения аудио RTMP-потока в Android
Я нашел некоторые RTMP-библиотеки Android (например: http://rtmpdump.mplayerhq.hu/).
Проблема заключается в том, что нет точной документации о том, как мы можем ее использовать.
В моем случае у меня есть простой RTMP-поток в реальном времени (ex: rtmp://myserver/myapp/myliveaudio).
Какой самый простой способ прочитать его в приложении для Android?
Пожалуйста, мне не нужны ссылки: мне нужны некоторые фрагменты кода или некоторые точные пошаговые объяснения.
Большое спасибо.
Ответы
Ответ 1
К сожалению, нетрудно сделать это. Прямо сейчас лучше всего посмотреть код http://code.google.com/p/android-rtmp-client/: посмотрите http://code.google.com/p/android-rtmp-client/source/browse/trunk/example/com/ryong21/example/recorder/RecorderClient.java и http://code.google.com/p/android-rtmp-client/source/browse/trunk/example/com/ryong21/example/recorder/Recorder.java. Они проходят через потоковый MP3 файл и записывают его содержимое в FLV файл на диске.
Вам нужно будет изменить файл RecorderClient.java(особенно вокруг строки 193), чтобы воспроизвести аудиоданные из динамиков.
Ответ 2
Не уверен, что это помогает, но... Я смог сделать что-то подобное (rtmp - потоковое видео) с помощью Flash, так что для этого вам понадобится Android 2.2+.
Во всяком случае, я просто написал HTML-страницу, отображающую флэш-видео, а затем открыл страницу в WebView.
<!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 = "rtmp://YOUR STREAM URL HERE";
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="#" onclick="location.href='http://www.adobe.com/go/getflashplayer'; return false;"><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>
ОК... теперь просто сохраните это в своей папке с ресурсами в своем проекте
и откройте его с чем-то вроде этого в вашей деятельности:
String LocalFile = "file:///android_asset/YOUR_HTML_FILE.htm";
WebView webView = (WebView) findViewById(R.id.YOUR_WEB_VIEW);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginsEnabled(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
webSettings.setAllowFileAccess(true);
webView.setBackgroundColor(Color.BLACK);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
webView.loadUrl(LocalFile);
Немного о работе... Надеюсь, это сработает для вас. CDub.