Android SDK:媒体播放器 – 从HTTP网址加载视频流

Android SDK:媒体播放器 – 从HTTP网址加载视频流,第1张

概述我有一个MediaPlayerActivity,代码如下:此代码基本上尝试从httpurl获取视频流并加载它但由于某种原因它不断崩溃.publicclassMediaPlayerActivityextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedIns

我有一个MediaPlayerActivity,代码如下:
此代码基本上尝试从http url获取视频流并加载它但由于某种原因它不断崩溃.

public class MediaPlayerActivity extends Activity {    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentVIEw(R.layout.vIDeo_player);        SurfaceVIEw v = (SurfaceVIEw) findVIEwByID(R.ID.surface_vIDeo);         SurfaceHolder holder = v.getHolder();         holder.setFixedSize(400,300);         MediaPlayer mp = MediaPlayer.create(this, Uri.parse("http://stream-url.com/playList.m3u8"));         mp.setdisplay(holder);        //mp.setAudioStreamType(2);         try {            //mp.prepare();            mp.start();        } catch (IllegalStateException e) {            // Todo auto-generated catch block            e.printstacktrace();        }    }}

vIDeo_player.xml:

<?xml version="1.0" enCoding="utf-8"?> <linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" > <SurfaceVIEw androID:ID="@+ID/surface_vIDeo" androID:layout_wIDth="250px" androID:layout_height="250px"> </SurfaceVIEw> <linearLayout androID:orIEntation="horizontal" androID:layout_height="wrap_content" androID:layout_wIDth="fill_parent" androID:padding="10dip" > </linearLayout> </linearLayout> 

当我使用以下代码进行此活动时,它会崩溃:

Intent myIntent = new Intent(HomeActivity.this, MediaPlayerActivity.class);                    HomeActivity.this.startActivity(myIntent);

我究竟做错了什么?

解决方法:

没有日志,有两个建议:

>尝试实现SurfaceHolder.Callback.surfaceCreated().
>尝试使用接受SurfaceHolder的MediaPlayer.create()

细节(1)

调用start()时,可能还没有创建表面.只有在创建表面后才应使用MediaPlayer.setdisplay()和MediaPlayer.start().为此,您应该添加overrIDeSurfaceHolder.Callback.surfaceCreated()`.例如,您的代码可能如下所示.

public class MediaPlayerActivity extends Activity implements SurfaceHolder.Callback {    MediaPlayer mp;     @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.setContentVIEw(R.layout.vIDeo_player);        SurfaceVIEw v = (SurfaceVIEw) findVIEwByID(R.ID.surface_vIDeo);         SurfaceHolder holder = v.getHolder();         holder.setFixedSize(400,300);        holder.addCallback(this).         mp = MediaPlayer.create(this, Uri.parse("http://stream-url.com/playList.m3u8"));     @OverrIDe    public voID surfaceCreated(SurfaceHolder holder) {        mp.setdisplay(holder);         try {            mp.start();        } catch (IllegalStateException e) {            e.printstacktrace();        }    }}

细节(2)

似乎有其他MediaPlayer.create()接受SurfaceHolder作为参数之一 – 您可以尝试它:http://developer.androID.com/reference/androID/media/MediaPlayer.HTML#create(androID.content. Context,androID.net.Uri,androID.vIEw.SurfaceHolder)

总结

以上是内存溢出为你收集整理的Android SDK:媒体播放器 – 从HTTP网址加载视频流全部内容,希望文章能够帮你解决Android SDK:媒体播放器 – 从HTTP网址加载视频流所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1096557.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存