流式播放音频。请在android中播放

流式播放音频。请在android中播放,android,streaming,media-player,Android,Streaming,Media Player,我正在制作一个类似广播的应用程序,它使用流媒体。这里我需要从一个链接(http://somedomain/some.pls) 我已经创建了MediaPlayer,并且知道如何从音频文件播放。但我不知道如何从网上下载 编辑: 当我使用以下代码时得到的logcat MediaPlayer mp = new MediaPlayer(); mp.setDataSource(http://somedomain/some.pls); mp.prepare(); mp.start() 按日志标签**Me

我正在制作一个类似广播的应用程序,它使用流媒体。这里我需要从一个链接(
http://somedomain/some.pls

我已经创建了
MediaPlayer
,并且知道如何从音频文件播放。但我不知道如何从网上下载

编辑: 当我使用以下代码时得到的logcat

MediaPlayer mp = new MediaPlayer();  
mp.setDataSource(http://somedomain/some.pls);
mp.prepare();
mp.start()
按日志标签
**MediaPlayer**

  02-15 05:50:11.761: VERBOSE/MediaPlayer(23715): constructor
    02-15 05:50:11.761: VERBOSE/MediaPlayer(23715): setListener
    02-15 05:50:11.761: INFO/MediaPlayer(23715): uri is:http://some:444/sdfd.pls
    02-15 05:50:11.761: INFO/MediaPlayer(23715): path is null
    02-15 05:50:11.761: DEBUG/MediaPlayer(23715): Couldn't open file on client side, trying server side
    02-15 05:50:11.765: VERBOSE/MediaPlayer(23715): setDataSource(http://some:444/sdfd.pls)
    02-15 05:50:11.777: VERBOSE/MediaPlayer(23715): prepare
    02-15 05:50:13.105: ERROR/MediaPlayer(23715): message received msg=3, ext1=0, ext2=0
    02-15 05:50:13.105: VERBOSE/MediaPlayer(23715): buffering 0
    02-15 05:50:13.105: ERROR/MediaPlayer(23715): callback application
    02-15 05:50:13.105: ERROR/MediaPlayer(23715): back from callback
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): constructor
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): OpenCore hardware module not found
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): start player thread
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): startPlayerThread
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): InitializeForThread
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): OMX_MasterInit
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): OsclScheduler::Init
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): CreatePlayer
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): AddToScheduler
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): PendForExec
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): OsclActiveScheduler::Current
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): StartScheduler
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): Send player code: 2
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): CommandCompleted
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): Completed command PLAYER_SETUP status=1
02-15 05:50:11.777: INFO/PlayerDriver(2393): PlayerDriver::isProtectedFile(http://some:444/sdfd.pls)
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): File EXT is : .pls
02-15 05:50:11.777: ERROR/PlayerDriver(2393): PlayerDriver::it is a not Protected file
02-15 05:50:11.781: VERBOSE/PlayerDriver(2393): Send player code: 3
02-15 05:50:11.781: VERBOSE/PlayerDriver(2393): handleSetDataSource
02-15 05:50:11.781: VERBOSE/PlayerDriver(2393): handleSetDataSource- scanning for extension
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): CommandCompleted
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): Completed command PLAYER_SET_DATA_SOURCE status=1
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): Send player code: 6
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): release string is 2.2 len 3
02-15 05:50:13.101: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 34
02-15 05:50:13.101: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 19
02-15 05:50:13.124: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 20
02-15 05:50:14.511: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 20
02-15 05:50:16.509: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 20
按日志标签
**PlayerDriver**

  02-15 05:50:11.761: VERBOSE/MediaPlayer(23715): constructor
    02-15 05:50:11.761: VERBOSE/MediaPlayer(23715): setListener
    02-15 05:50:11.761: INFO/MediaPlayer(23715): uri is:http://some:444/sdfd.pls
    02-15 05:50:11.761: INFO/MediaPlayer(23715): path is null
    02-15 05:50:11.761: DEBUG/MediaPlayer(23715): Couldn't open file on client side, trying server side
    02-15 05:50:11.765: VERBOSE/MediaPlayer(23715): setDataSource(http://some:444/sdfd.pls)
    02-15 05:50:11.777: VERBOSE/MediaPlayer(23715): prepare
    02-15 05:50:13.105: ERROR/MediaPlayer(23715): message received msg=3, ext1=0, ext2=0
    02-15 05:50:13.105: VERBOSE/MediaPlayer(23715): buffering 0
    02-15 05:50:13.105: ERROR/MediaPlayer(23715): callback application
    02-15 05:50:13.105: ERROR/MediaPlayer(23715): back from callback
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): constructor
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): OpenCore hardware module not found
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): start player thread
02-15 05:50:11.765: VERBOSE/PlayerDriver(2393): startPlayerThread
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): InitializeForThread
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): OMX_MasterInit
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): OsclScheduler::Init
02-15 05:50:11.769: VERBOSE/PlayerDriver(2393): CreatePlayer
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): AddToScheduler
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): PendForExec
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): OsclActiveScheduler::Current
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): StartScheduler
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): Send player code: 2
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): CommandCompleted
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): Completed command PLAYER_SETUP status=1
02-15 05:50:11.777: INFO/PlayerDriver(2393): PlayerDriver::isProtectedFile(http://some:444/sdfd.pls)
02-15 05:50:11.777: VERBOSE/PlayerDriver(2393): File EXT is : .pls
02-15 05:50:11.777: ERROR/PlayerDriver(2393): PlayerDriver::it is a not Protected file
02-15 05:50:11.781: VERBOSE/PlayerDriver(2393): Send player code: 3
02-15 05:50:11.781: VERBOSE/PlayerDriver(2393): handleSetDataSource
02-15 05:50:11.781: VERBOSE/PlayerDriver(2393): handleSetDataSource- scanning for extension
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): CommandCompleted
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): Completed command PLAYER_SET_DATA_SOURCE status=1
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): Send player code: 6
02-15 05:50:11.800: VERBOSE/PlayerDriver(2393): release string is 2.2 len 3
02-15 05:50:13.101: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 34
02-15 05:50:13.101: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 19
02-15 05:50:13.124: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 20
02-15 05:50:14.511: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 20
02-15 05:50:16.509: VERBOSE/PlayerDriver(2393): HandleInformationalEvent: 20
02-15 05:50:16.509:VERBOSE/PlayerDriver(2393):处理信息事件:20个循环但没有声音..
可能有什么问题。

谢谢。

您可以尝试下载pls文件,解析其中的URL,并将其放入MediaPlayer


您可以使用MediaPlayer类上提供的文件流功能执行上述操作。
我没有测试以下代码,但应该是以下几行代码:

MediaPlayer mp = new MediaPlayer();  
mp.setDataSource(http://somedomain/some.pls);
mp.prepare();
mp.start();  
但请记住执行以下操作:
1.用
try
catch
语句包围上述每个语句,并大量打印到
LogCat
。它将有助于轻松调试。
2.完成后释放资源

HTH,

斯里拉姆

伙计,试试这两件事:

1:代码

mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
2:pls文件

mediaPlayer = MediaPlayer.create(this, Uri.parse("http://vprbbc.streamguys.net:80/vprbbc24.mp3"));
mediaPlayer.start();
这个URL来自BBC,只是一个例子。这是我在linux上下载的一个.pls文件

wget http://foo.bar/file.pls
然后我用vim(使用你最喜欢的编辑器)打开了这个文件,我看到了这个文件中真正的URL。不幸的是,并不是所有的.pls都是那样的纯文本


玩得开心

android的Mediaplayer api支持流式传输.pls文件,但该api不是最佳选择&文档不完善。官方文件中给出的生命周期图提供了有价值的信息,但乍一看可能会令人困惑

示例代码段:

MediaPlayer mp;
mp=MediaPlayer.create(getApplicationContext(),Uri.parse(url))
Example url of  .pls file http://50.xx.xxx.xx:xx40/)

mp.start();
mp.pause();
mp.release() (or mp.reset() as applicable)
,android.net.Uri)

MediaPlayer api提供了监听器/回调,但对于从事音频流的应用程序开发人员来说,这确实是个问题

建议使用代码片段中使用的静态构造函数/更好的方法来创建具有URI的媒体对象(如带有主机和端口的http url) 但是开发人员不能使用回调函数,因为prepare是由构造函数本身调用的

创建的对象可以在asyn线程(AsyncTaskAPI)中播放/停止

android官方文档没有给出任何获取mediaplayer状态的“get方法”

我欢迎android应用程序开发者就此进行讨论

我希望框架开发人员提供更准确的文档——它支持多少,以及谷歌公司和安卓框架开发团队在Mediaplayer API上对URL音频流的看法

如果有人需要我的帮助或分享他们的经验,让我们来谈谈MediaPlayer api for audio streaming@或android开发者博客(android developers.blogspot.com)

问候 罗摩克里希纳酒店
海得拉巴新Mek解决方案项目经理和Android开发者。

感谢您的重播。但我们如何下载“.pls”文件。这是直播。数据直接来自netumm编号。读取它不起作用。不发出任何声音:(.既没有收到错误也没有收到异常。@Jithin:你在logcat上收到了什么消息?@Jithin:一些要点:1.你在哪里解析这个pls文件?据我所知,一个pls文件可能需要解析才能在Android上播放。你能在这里发布pls文件吗?2.确保pls文件没有受到保护。天哪,我不知道。你能吗请为我提供解析pls文件的链接或教程。我如何检查它是否受保护?如果受保护,我需要做什么?你能在这里发布pls文件吗?要查看pls格式,请看这里:。iPhone似乎可以直接播放这些文件,但我已经看到了很多关于在android上播放pls文件的问题。你知道吗我想知道怎么做?