在Android中播放音频RTMP流最简单的方法

问题描述:

我发现了一些Android RTMP库(例如:http://rtmpdump.mplayerhq.hu/)。在Android中播放音频RTMP流最简单的方法

问题是没有关于如何使用它的准确文档。

在我的例子中,我有一个简单的RTMP实时音频流(例如:rtmp:// myserver/myapp/myliveaudio)。

在我的Android应用程序中读取它的最简单方法是什么?

请不要链接:我需要一些代码或一些准确的逐步解释。

非常感谢。

+0

你好,做过Rtmp Streaming?你能帮我吗?我想在我的应用程序播放Rtmp流.. – Hasmukh 2012-06-04 07:17:52

+0

我也一样,,,,请分享如何使用rtmp直播流。 – Noby 2012-06-22 10:29:03

+0

嗯,我选择它作为最佳答案,而不是答案。事实上,我以另一种方式做到了:我使用了Flex Mobile。这很容易。但是,“问题”是用户必须安装Air Runtime。所以,我没有干净的解决方案。 – Zakaria 2012-06-22 11:33:38

不幸的是,这很不容易做到。现在你最好的选择是看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.javahttp://code.google.com/p/android-rtmp-client/source/browse/trunk/example/com/ryong21/example/recorder/Recorder.java。这些步骤通过接收流媒体MP3文件并将其内容录制到磁盘上的FLV文件中。

您需要修改RecorderClient.java文件(特别是在第193行左右)以播放扬声器中的音频数据。

+1

感谢您的回答。我没有读过代码。但正如我提到的那样,我试图播放直播。所以想象一下,如果我创建一个本地文件来缓冲12小时的传入流! – Zakaria 2011-06-15 17:36:22

+1

你无法缓冲它:你将不得不将从IoBuffer data =((IStreamData)rtmpEvent).getData()。asReadOnlyBuffer();获得的实际数据提供给合适的解码器,以便生成原始音频样本馈入一个'AudioTrack'。 – Femi 2011-06-15 18:04:13

+0

我很惊讶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。

+0

嗨,我尝试了你放在这里的相同的代码,但我无法看到任何东西。当我启动我的应用程序时,应用程序开始运行,它将保持3-4秒可见状态(空白的黑屏活动),而不是任何异常关闭。它也没有在DDMS中显示任何异常。你能提出任何解决方案吗?我真的需要这个。 – 2011-11-07 04:21:15

+1

你好,我试过这个,但它不工作,并面临一些问题,所以你可以帮助我..? – Hasmukh 2012-06-04 07:19:47

+1

我正在尝试使用解决方法,但它不播放流。我已经在SDK上安装了Flash播放器,但它说没有安装Flash! – 2012-07-03 15:03:31