使用VideoView 播放视频 出现的 error(1,-1004)问题

_shikh 2012-12-25 11:30:42
我使用的是vitamio 框架做的一个视频播放器,现在出现这样一个问题,在播放视频时,正常播放一部分后会出现 ERROR/MediaPlayer(2305): error (1, -1004) 异常,希望大牛们能给小弟指点迷津...
...全文
1107 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
用来播放视频文件。该VideoView类可以加载各种来源的图像(如资源或内容提供商),需要计算它从视频测量,以便它可以在任何布局管理器使用,并提供诸如缩放和着色的各种显示选项。在其他的平台上面可能VideoPlayer开发是一个比较有挑战性的工作,但是在Android上面VideoPlayer的开发,基本上可以做到傻瓜式啦。本文简单对VideoPlayer的开发进行简单的介绍。 实例 1.布局文件 <VideoView android:id="@+id/videoview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" /> 2.Java代码 package com.wjq; import android.app.Activity; import android.content.pm.ActivityInfo; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.widget.MediaController; import android.widget.VideoView; public class VideoViewDemo extends Activity implements MediaPlayer.OnErrorListener,MediaPlayer.OnCompletionListener{ public static final String TAG = "VideoPlayer"; private VideoView mVideoView; private Uri mUri; private int mPositionWhenPaused = -1; private MediaController mMediaController; /* (non-Javadoc) * @see android.app.Activity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.videoview); this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); mVideoView = (VideoView)findViewById(R.id.videoview); //文件路径 mUri = Uri.parse(Environment.getExternalStorageDirectory() + "/ziranyouli.3gp"); //Create media controller mMediaController = new MediaController(this);   //设置MediaController mVideoView.setMediaController(mMediaController); } //监听MediaPlayer上报的错误信息 @Override public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub return false; } //Video播完的时候得到通知 @Override public void onCompletion(MediaPlayer mp) { this.finish(); }   //开始 public void onStart() { // Play Video mVideoView.setVideoURI(mUri); mVideoView.start(); super.onStart(); }   //暂停 public void onPause() { // Stop video when the activity is pause. mPositionWhenPaused = mVideoView.getCurrentPosition(); mVideoView.stopPlayback(); Log.d(TAG, "OnStop: mPositionWhenPaused = " + mPositionWhenPaused); Log.d(TAG, "OnStop: getDuration = " + mVideoView.getDuration()); super.onPause(); } public void onResume() { // Resume video player if(mPositionWhenPaused >= 0) { mVideoView.seekTo(mPositionWhenPaused); mPositionWhenPaused = -1; } super.onResume(); } }
仿蚂蜂窝自由行和慕课网视频欢迎页一.资源准备三个比较短小的视频:视频下载二.开始编写代码1.在项目的res下新建一个raw文件夹,放入准备好的这三个视频2.自定义播放视频的CustomVideoView 在这个自定义View里面提供一个播放视频的方法。用户只需要传入播放路径就可以了,并且可一循环播放。package cn.bluemobi.dylan.welcomevideopager; import android.content.Context; import android.media.MediaPlayer; import android.net.Uri; import android.util.AttributeSet; import android.view.View; import android.widget.VideoView; /**  * 可以播放视频的View  * Created by yuandl on 2016-11-10.  */ public class CustomVideoView extends VideoView {     public CustomVideoView(Context context) {         super(context);     }     public CustomVideoView(Context context, AttributeSet attrs, int defStyleAttr) {         super(context, attrs, defStyleAttr);     }     public CustomVideoView(Context context, AttributeSet attrs) {         super(context, attrs);     }     @Override     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {         super.onMeasure(widthMeasureSpec, heightMeasureSpec);         setMeasuredDimension(View.MeasureSpec.getSize(widthMeasureSpec), View.MeasureSpec.getSize(heightMeasureSpec));     }     /**      * 播放视频      *      * @param uri 播放地址      */     public void playVideo(Uri uri) {         if (uri == null) {             throw new IllegalArgumentException("Uri can not be null");         }         /**设置播放路径**/         setVideoURI(uri);         /**开始播放**/         start();         setOnPreparedListener(new MediaPlayer.OnPreparedListener() {             @Override             public void onPrepared(MediaPlayer mp) {                 /**设置循环播放**/                 mp.setLooping(true);             }         });         setOnErrorListener(new MediaPlayer.OnErrorListener() {             @Override             public boolean onError(MediaPlayer mp, int what, int extra) {                 return true;             }         });     } }3.建立没个欢迎页面的Fragment去加载自定义视频View的视图package cn.bluemobi.dylan.welcomevideopager; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; /**  * Created by yuandl on 2016-11-10.  */ public class GuildFragment extends Fragment {     private CustomVideoView customVideoView;     @Nullable     @Override     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {         customVideoView = new CustomVideoView(getContext());         /**获取参数,根据不同的参数播放不同的视频**/         int index = getArguments().getInt("index");         Uri uri;         if (index == 1) {             uri = Uri.parse("android.resource://"   getActivity().getPackageName()   "/"   R.raw.guide_1);         } else if (index == 2) {             uri = Uri.parse("android.resource://"   getActivity().getPackageName()   "/"   R.raw.guide_2);         } else {             uri = Uri.parse("android.resource://"   getActivity().getPackageName()   "/"   R.raw.guide_3);         }         /**播放视频**/         customVideoView.playVideo(uri);         return customVideoView;     }     /**      * 记得在销毁的时候让播放的视频终止      */     @Override     public void onDestroy() {         super.onDestroy();         if (customVideoView != null) {             customVideoView.stopPlayback();         }     } }4.界面布局                                               

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧