使用MediaPlayer和SurfaceView写的代码出现问题
代码如下:
public class MainActivity extends ActionBarActivity
{
private SurfaceView surfaceView;
private MediaPlayer player;
private SurfaceHolder holder;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
String uri="http://10.88.201.114:8080/GX_201601131948091593745624/transcodedmedia/video/Stream_v.m3u8 ";
player = new MediaPlayer();
try
{
player.setDataSource(uri);
holder=surfaceView.getHolder();
holder.addCallback(new MyCallBack());
player.prepare();
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
player.start();
}
});
}
catch (IOException e)
{
e.printStackTrace();
}
}
private class MyCallBack implements SurfaceHolder.Callback
{
@Override
public void surfaceCreated(SurfaceHolder holder)
{
player.setDisplay(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
}
@Override
public void surfaceDestroyed(SurfaceHolder holder)
{
}
}
}
用机顶盒测试就是播不出视频,问一下原因。日志如下:
07-07 17:34:46.292: V/MediaPlayer(21095): callback application
07-07 17:34:46.292: V/MediaPlayer(21095): back from callback
07-07 17:34:49.394: V/MediaPlayer(21095): message received msg=200, ext1=1002, ext2=0
07-07 17:34:49.394: W/MediaPlayer(21095): info/warning (1002, 0)
07-07 17:34:49.394: V/MediaPlayer(21095): callback application
07-07 17:34:49.395: V/MediaPlayer(21095): back from callback
07-07 17:34:49.395: V/MediaPlayer(21095): message received msg=100, ext1=1, ext2=0
07-07 17:34:49.395: E/MediaPlayer(21095): error (1, 0)
07-07 17:34:49.395: V/MediaPlayer(21095): signal application thread
07-07 17:34:49.395: V/MediaPlayer(21095): prepare complete - status=1
07-07 17:34:49.395: W/System.err(21095): java.io.IOException: Prepare failed.: status=0x1
07-07 17:34:49.395: W/System.err(21095): at android.media.MediaPlayer.prepare(Native Method)
07-07 17:34:49.395: W/System.err(21095): at com.example.bofang.MainActivity.onCreate(MainActivity.java:37)
07-07 17:34:49.396: W/System.err(21095): at android.app.Activity.performCreate(Activity.java:5231)
07-07 17:34:49.396: W/System.err(21095): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-07 17:34:49.396: W/System.err(21095): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
07-07 17:34:49.396: W/System.err(21095): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
07-07 17:34:49.396: W/System.err(21095): at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-07 17:34:49.396: W/System.err(21095): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-07 17:34:49.396: W/System.err(21095): at android.os.Handler.dispatchMessage(Handler.java:102)
07-07 17:34:49.396: W/System.err(21095): at android.os.Looper.loop(Looper.java:136)
07-07 17:34:49.396: W/System.err(21095): at android.app.ActivityThread.main(ActivityThread.java:5030)
07-07 17:34:49.396: W/System.err(21095): at java.lang.reflect.Method.invokeNative(Native Method)
07-07 17:34:49.396: W/System.err(21095): at java.lang.reflect.Method.invoke(Method.java:515)
07-07 17:34:49.396: W/System.err(21095): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-07 17:34:49.397: W/System.err(21095): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-07 17:34:49.397: W/System.err(21095): at dalvik.system.NativeStart.main(Native Method)
07-07 17:34:49.402: E/ViewRootImpl(21095): 201409092 enable acc for view=com.example.bofang/com.example.bofang.MainActivity
07-07 17:34:49.449: V/MediaPlayer(21095): MediaPlayer::setParameter(6009)
07-07 17:34:49.450: V/MediaPlayer(21095): setVideoSurfaceTexture
07-07 17:34:49.480: V/MediaPlayer(21095): MediaPlayer::setParameter(6009)