相关疑难解决方法(0)

媒体播放器在状态0中调用,错误(-38,0)

我目前正在尝试设计一个简单的应用程序,流媒体互联网广播电台.我有电台的URL,我正在设置媒体播放器

    MediaPlayer mediaPlayer = new MediaPlayer();
    try {
        mediaPlayer.setDataSource(URL);
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        mediaPlayer.prepare();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)

模拟时程序没有崩溃,但没有播放,我收到以下错误:

start called in state 0
Run Code Online (Sandbox Code Playgroud)

就在它下面

Error (-38,0)
Run Code Online (Sandbox Code Playgroud)

有谁知道这意味着什么?

我已经阅读了一些有关这些状态错误的内容,但找不到任何适用于我的项目的内容.

android android-mediaplayer

100
推荐指数
6
解决办法
14万
查看次数

在SDK 8中使用Android MediaPlayer进行流式处理

SDK级别8(Froyo)引入了MediaPlayer连接到流媒体源的本机功能,如Shoutcast.以前的SDK版本能够执行变通办法,例如在设备上运行本地代理(请参阅NPR).

我采用与NPR相同的方法并使用StreamProxy.但是,NPR首先检查当前运行的SDK是否小于8.如果是,则使用代理.否则,它直接连接.

我的StreamProxy从Shoutcast服务器请求元数据,因此它不会简单地将数据从Shoutcast路由到我的客户端.相反,它会解析出元数据并相应地使用它,并且仅路由音乐数据.

当尝试在SDK级别8或更高级别使用StreamProxy时,MediaPlayer无法准备.我的StreamProxy接收连接并接受它,但在成功地将状态行和标题写入客户端之后,下一次写入产生java.net.SocketException: Connection reset by peer.这导致客户的媒体播放器抛出一个Error(1,-1007).

我试图弄清楚为什么MediaPlayer无法连接到我的本地代理.它应该与没有元数据的原始源连接相同,这确实有效.我通过我的代理(包括内容类型)转发来自外部源的所有标头.

我会继续研究它,但我觉得我已经走到了尽头.如果需要更多细节,请告诉我.

proxy android stream media-player android-2.2-froyo

14
推荐指数
1
解决办法
7553
查看次数

用Android收听shoutcast

因为很长一段时间我都在试着听.pls文件(shoutcasts).我不得不说我失败了.由于StreamFurious可以做到这一点,它必须是可能的.首先,我尝试通过套接字(TCP和UDP)连接到shoutcast - >失败.我甚至无法从服务器接收一个字节.

我快要哭了.我甚至不知道建立连接的最佳方式是什么,然后继续下载/接收数据流.

我真的希望有人可以指出我正确的方向并给我一个简短的代码段(如果有的话).

Rgds Layne

java sockets android stream radio

13
推荐指数
1
解决办法
3万
查看次数

在使用Android 2.2的HTC Desire上使用Android MediaPlayer进行流式传输时的奇怪行为

在我的一个项目中,我正在使用无尽的流来实现现场广播.我可以毫无问题地使用nativ Android MediaPlayer,也可以在运行旧版Android的设备上使用,因为该流的类型为audio/mpeg.我在运行1.6的HTC Magic上进行了测试,它运行完美无缺.即使在WLAN和3G之间切换它也只是缓冲起来,我只注意到一个小打嗝,然后它继续播放,好像什么也没发生.它也很少丢失连接,因为我在工作日期间一直在收听广播,也在上下班途中收听,以确保用户体验与我想要的完全一样.我已经为其他设备重复了相同的程序,例如运行Android 2.1的HTC Legend,运行2.2的HTC Wildfire和运行2.2的三星Galaxy Tab,结果相同.所有设备都能完美地处理流.

然而,这就是我遇到困难的地方,在运行2.2的HTC Desire上我遇到了严重的问题让游戏进行播放.当使用MediaPlayer的标准实现,即setDataSource(字符串路径)时,它会播放10 - 30秒,即使我在WLAN和3G上都有完全接收,它也会失去连接.我尝试了不同的方法来解决这个问题,一个是使用NPR新闻项目的StreamProxy,经过一些修改后实际上工作得很好.然而,HTC Desire仍然不时地断开连接,并且在某些情况下尝试重新连接4-5次,直到它实际上成功地保持稳定的连接.

我在使用代理时遇到的错误如下所示

08-08 09:35:17.810: ERROR/AwesomePlayer(67): Not sending buffering status because duration is unknown.
08-08 09:35:19.849: ERROR/HTTPStream(67): recv failed, errno = 11 (Try again)
08-08 09:35:19.849: INFO/HTTPDataSource(67): Retry ... 2 times left
08-08 09:35:19.849: WARN/HTTPStream(67): Calling connect()...
08-08 09:35:19.849: WARN/HTTPStream(67): Returned from connect()...
08-08 09:35:20.739: ERROR/(1576): Broken pipe
08-08 09:35:20.739: ERROR/(1576): java.net.SocketException: Broken pipe
08-08 09:35:20.739: ERROR/(1576):     at org.apache.harmony.luni.platform.OSNetworkSystem.writeSocketImpl(Native Method)
08-08 09:35:20.739: ERROR/(1576):     at org.apache.harmony.luni.platform.OSNetworkSystem.write(OSNetworkSystem.java:723) …
Run Code Online (Sandbox Code Playgroud)

java streaming android

13
推荐指数
1
解决办法
1763
查看次数

Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL,但不能与另一个一起使用

请参阅我用于流式传输shoutcast流的代码,它适用于一个URL但不适用于另一个URL.

这个工作:

Uri myUri = Uri.parse("http://fr3.ah.fm:9000/");
Run Code Online (Sandbox Code Playgroud)

但不是这个:

Uri myUri =  Uri.parse("http://someOtherURL");
Run Code Online (Sandbox Code Playgroud)

SimpleMusicStream.java

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class SimpleMusicStream extends Activity implements
  MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener,
  MediaPlayer.OnErrorListener, MediaPlayer.OnBufferingUpdateListener {

 private String TAG = getClass().getSimpleName();
 private MediaPlayer mp = null;

 private Button play;
 private Button pause;
 private Button stop;

 @Override
 public void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  setContentView(R.layout.main);

  play = (Button) findViewById(R.id.play);
  pause = (Button) findViewById(R.id.pause);
  stop = (Button) findViewById(R.id.stop);

  play.setOnClickListener(new View.OnClickListener() …
Run Code Online (Sandbox Code Playgroud)

android uri shoutcast audio-streaming media-player

13
推荐指数
1
解决办法
2万
查看次数

Android:AAC +无线电流不支持MediaPlayer(Android 4.2.2/Shoucast链接)

我最近遇到了使用Android 传输AAC +无线电流的一些问题MediaPlayer.关于文档,应该支持在Android 4.1中流式传输AAC +.(测试设备是带有Android 4.2.2的Nexus 2)

我发现了一些相关的问题(请点击这里,这里这里),但它们主要与较旧的Android版本有关或在4.1版本发布之前的日期.我找到了AACPlayerAndroid图书馆,但你必须购买许可证..

如果我尝试流式传输AACPlus流,则MediaPlayer会抛出MediaPlayerError (1,-2147483648),这被定义为"不支持的媒体格式".但是,如果我在模拟器中启动相同的AAC + Stream,它工作正常!

到目前为止我尝试了什么:

  • 在模拟器中尝试相同的代码工作?!?(为什么..也许在本地机器上支持编解码器?)

  • 使用4.1或4.2测试另外两个设备也会失败

  • 设置AAC +流与手动标头和使用setDataSource(String path),这不起作用(更改http标头也失败)

  • 设置一个新的SimpleMediaPlayer项目 - >也失败了

  • 试图检查网络流量,如果Android设备被重定向到错误的网址.实际上我Charles使用a 连接设备Proxy,但只能监控Android浏览器.我仍然认为重定向是正确的!

这是我的Streaming.class的setDataSource的实现

public AmplifyMediaPlayer(PlayerStationObject playerStationObject, Context context) {
     super();
     this.setAudioStreamType(AudioManager.STREAM_MUSIC);
     this.mCurrentStationObject = playerStationObject;
     try {
        //AAC+ TestStream #1: NOT WORKING
        //Uri uri = Uri.parse("http://up-gc2.webnow.com.br/alpha.aac");

        //AAC+ TestStream #2: NOT WORKING   
        //Audio codec: 64 kbit/s 44.1 kHz AAC+, 128 …
Run Code Online (Sandbox Code Playgroud)

streaming android android-mediaplayer

13
推荐指数
1
解决办法
9535
查看次数

在2.2中流式传输shoutcast流中断的android代码

以下代码在Android 2.1update1上运行正常 -

package com.troubadorian.android.teststreaming;



import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageButton;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.Gallery.LayoutParams;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;

public class TestStreaming extends Activity 
{
 private Button streamButton;

 private ImageButton playButton;

 private TextView textStreamed;

 private boolean isPlaying;

 private StreamingMediaPlayer audioStreamer;

 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  // requestWindowFeature(Window.FEATURE_NO_TITLE);

  setContentView(R.layout.main);
  initControls();


 }
 protected void …
Run Code Online (Sandbox Code Playgroud)

android shoutcast audio-streaming

12
推荐指数
1
解决办法
8019
查看次数

是否可以使用彩信在Android中传输互联网广播?

可以在Android中播放互联网广播流吗?而且由于大多数互联网收音机都使用彩信来传输他们的内容,可能是使用Android吗?

android mms stream

10
推荐指数
1
解决办法
7888
查看次数

使用mediaplayer的Android http直播流媒体网址

我正在尝试播放一个网址,但它没有播放,而我使用的代码在下面......日志显示Mediaplayer错误(1,-1002),开始状态为0,错误(-38,0)为什么......?我哪里出错了......你可以帮帮我怎么玩........

       import java.io.IOException;

       import android.app.Activity;
       import android.media.AudioManager;
       import android.media.MediaPlayer;
         import android.os.Bundle;
      import android.view.View;
      import android.widget.ImageButton;
       import android.widget.TextView;

        public class BacaFatihahActivity extends Activity {



        final String songs_urIs= "http://stream.radiosai.net:8002/";
           // private TextView txt_song_title;
        private MediaPlayer mediaplayer;
        @Override
         public void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  ImageButton btn_play = (ImageButton) findViewById(R.id.button_play);
  ImageButton btn_pause = (ImageButton) findViewById(R.id.button_pause);
  ImageButton btn_next = (ImageButton) findViewById(R.id.button_next);
  ImageButton btn_previous = (ImageButton) findViewById(R.id.button_Previous);
  //txt_song_title = (TextView) findViewById(R.id.txt_song_title);

  mediaplayer = new MediaPlayer();
  mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);


  btn_play.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        try { …
Run Code Online (Sandbox Code Playgroud)

android http-live-streaming android-mediaplayer

10
推荐指数
1
解决办法
7645
查看次数