在Android中播放音频RTMP流最简单的方法
我发现了一些Android RTMP库(例如:http://rtmpdump.mplayerhq.hu/)。在Android中播放音频RTMP流最简单的方法
问题是没有关于如何使用它的准确文档。
在我的例子中,我有一个简单的RTMP实时音频流(例如:rtmp:// myserver/myapp/myliveaudio)。
在我的Android应用程序中读取它的最简单方法是什么?
请不要链接:我需要一些代码或一些准确的逐步解释。
非常感谢。
不幸的是,这很不容易做到。现在你最好的选择是看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行左右)以播放扬声器中的音频数据。
感谢您的回答。我没有读过代码。但正如我提到的那样,我试图播放直播。所以想象一下,如果我创建一个本地文件来缓冲12小时的传入流! – Zakaria 2011-06-15 17:36:22
你无法缓冲它:你将不得不将从IoBuffer data =((IStreamData)rtmpEvent).getData()。asReadOnlyBuffer();获得的实际数据提供给合适的解码器,以便生成原始音频样本馈入一个'AudioTrack'。 – Femi 2011-06-15 18:04:13
我很惊讶Android API不直接支持播放RTMP流。这个答案似乎是有道理的。我会试一试。 – rineez 2015-01-21 06:28:07
不知道这是否有帮助,但...我能够使用Flash做类似的事情(rtmp - 流媒体视频),所以你需要Android 2.2+。
无论如何,我只写了一个显示Flash视频的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="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>
OK ......现在只保存在您的资产文件夹中的项目 ,并与您的活动是这样打开它:
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。
嗨,我尝试了你放在这里的相同的代码,但我无法看到任何东西。当我启动我的应用程序时,应用程序开始运行,它将保持3-4秒可见状态(空白的黑屏活动),而不是任何异常关闭。它也没有在DDMS中显示任何异常。你能提出任何解决方案吗?我真的需要这个。 – 2011-11-07 04:21:15
你好,我试过这个,但它不工作,并面临一些问题,所以你可以帮助我..? – Hasmukh 2012-06-04 07:19:47
我正在尝试使用解决方法,但它不播放流。我已经在SDK上安装了Flash播放器,但它说没有安装Flash! – 2012-07-03 15:03:31
你好,做过Rtmp Streaming?你能帮我吗?我想在我的应用程序播放Rtmp流.. – Hasmukh 2012-06-04 07:17:52
我也一样,,,,请分享如何使用rtmp直播流。 – Noby 2012-06-22 10:29:03
嗯,我选择它作为最佳答案,而不是答案。事实上,我以另一种方式做到了:我使用了Flex Mobile。这很容易。但是,“问题”是用户必须安装Air Runtime。所以,我没有干净的解决方案。 – Zakaria 2012-06-22 11:33:38