【问题标题】:Live streaming through mediaplayer in android通过android中的媒体播放器进行直播
【发布时间】:2011-11-18 05:09:09
【问题描述】:

如何使用 MediaPlayer 流式传输在线 URL?

【问题讨论】:

  • “我尝试了这么长但相同的结果” - 结果如何?
  • 请展示您到目前为止所做的尝试。
  • 嗨,Lalit,你可以看到我在下面的堆栈溢出标题上尝试了什么... Android http live Streaming URL using mediaplayer
  • 出现Mediaplayer error(1,-1002)等错误,启动状态为0,error(-38, 0)为什么。?
  • 如果您使用的是 http 直播 (HLS/pantos-http-live-streaming-07),它仅在 Android 3.0 及更高版本中受支持。您可以在此处查看 google 的发行说明:developer.android.com/sdk/android-3.0-highlights.html您需要在问题中提供更多信息...

标签: android media-player http-live-streaming


【解决方案1】:

基本上,如果您使用的是 Android MediaPlayer 类,则需要执行以下操作:

MediaPlayer mediaPlayer = new MediaPlayer();

mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
    public boolean onError(MediaPlayer mp, int what, int extra) {
        mp.reset();
        return false;
    }
});

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});

try {
    mediaPlayer.setDataSource("http://someurl");
    mediaPlayer.prepareAsync();
} catch (IllegalArgumentException e) {
} catch (IllegalStateException e) {
} catch (IOException e) {
}

请记住,Android MediaPlayer 类只会播放支持的格式: http://developer.android.com/guide/appendix/media-formats.html

【讨论】:

  • 嗨,原生媒体播放器是否支持自适应比特率流媒体?
【解决方案2】:

在 API 28 中为我工作

   MediaPlayer mediaPlayer = new MediaPlayer();
            mediaPlayer.setDataSource("http://209.188.21.202:8016/stream");
            mediaPlayer.prepare();
            mediaPlayer.start();

如果使用 INTERNET,请记住向清单添加权限

    <uses-permission android:name="android.permission.INTERNET" />

还要小心使用明文流量

从 Android 9.0(API 级别 28)开始,默认禁用明文支持。

在我的例子中,我在清单中添加 --> android:usesCleartextTraffic="true"

参考 -->

Android 8: Cleartext HTTP traffic not permitted

【讨论】:

    【解决方案3】:

    你可以使用这个:

        MediaPlayer mediaPlayer = MediaPlayer.create(this, Uri.parse("YOUR URL HERE"));
        mediaPlayer.start();
    

    【讨论】:

    • @ NAVdroid 我也用过这个,但它显示不发送缓冲状态,因为持续时间未知......如果你以前做过......请给我建议......
    • 媒体播放器开始在状态 2 中调用
    【解决方案4】:
    public class MainActivity extends ActionBarActivity {
        String vidAddress ="your http link";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            VideoView vidView = (VideoView)findViewById(R.id.myVideo);
            Uri vidUri = Uri.parse(vidAddress);
            vidView.setVideoURI(vidUri);
            MediaController vidControl = new MediaController(this);
            vidControl.setAnchorView(vidView);
            vidView.setMediaController(vidControl);
            vidView.start();
    
    
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    }
    

    【讨论】:

      【解决方案5】:

      如果您从远程 URL 流式传输音频,则 MediaPlayer 会出现问题。它有时有效,但主要用于远程挂起。

      试过下面哪个挂了

         mediaPlayer = MediaPlayer.create(this, Uri.parse("YOUR URL HERE"));
              mediaPlayer.start();
      

      也试过了 mediaPlayer.prepareAsync();并实现onprepared listener。不工作..使用的设备是三星galaxy mini

      一直在尝试手动读取 URL 内容并使用缓冲内容更新 MediaPlayer 数据源。工作很多,但还没有弄清楚如何切换 URL 等。

      此处的示例适用于 VideoPlayer,但对于音频播放器也应该是相同的概念

      http://davanum.wordpress.com/2007/12/29/android-videomusic-player-sample-from-local-disk-as-well-as-remote-urls/

      编辑

      啊刚刚发现这个http://launch-code.blogspot.co.uk/2012/01/android-play-audio-asyncplayer.html
      似乎很好地包装了对 MediaPlayer 的调用:http://www.netmite.com/android/mydroid/frameworks/base/media/java/android/media/AsyncPlayer.java

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多