Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:视频搜索错误_Android_Video_Seek - Fatal编程技术网

Android:视频搜索错误

Android:视频搜索错误,android,video,seek,Android,Video,Seek,我有一个带视频播放器的应用程序。我实现了一种在视频中存储当前位置的方法,以便下次用户播放同一视频时,从用户离开的位置播放。但是,我无法从视频离开的位置加载视频。日志cat连续显示此错误 10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1 10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x2b59c8 0(int#

我有一个带视频播放器的应用程序。我实现了一种在视频中存储当前位置的方法,以便下次用户播放同一视频时,从用户离开的位置播放。但是,我无法从视频离开的位置加载视频。日志cat连续显示此错误

10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x2b59c8 0(int# 0/0)
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x4a2ad0 0(int# 0/0)
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x2b5a20 0(int# 0/0)
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x1c09a0 0(int# 0/0)
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.699: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x3dafa0 0(int# 0/0)
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Unknown event: 1
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x2b59c8 0(int# 0/0)
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x1c4028 0(int# 0/0)
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x2b5a20 0(int# 0/0)
10-23 21:23:23.707: ERROR/TI_Video_Decoder(1250): Corrupted Data in buffer 0x4a2ad0 0(int# 0/0)
这是我播放视频的代码。有人能告诉我为什么我会犯这个错误吗。谢谢这是密码

公共类玩家扩展活动{

private static Context mContext;
private int mStartTime = 0;
private int sliderPosition; 
private int setTime;
private String uriString; 
private MediaPlayer player;

private class ErrorListener implements OnErrorListener {

private class CompletionListener implements OnCompletionListener {
    // FIXME: @Override
    public void onCompletion(MediaPlayer mp) {
        mContext = null;
        mStartTime = 0;
        System.exit(-1);
    }
}

private static Context getContext() {
    return mContext;
}

private static void setContext(Context context) {
    mContext = context;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    System.gc();
super.onCreate(savedInstanceState);
    setContext(this);
    Intent intent = getIntent();
    Uri uri = intent.getData();
    uriString = intent.getStringExtra("filename" );
    if (uri != null) {  
        setContentView(R.layout.videoview);
        VideoView videoView = (VideoView) findViewById(R.id.videoview);
        videoView.setVideoURI(uri);
        videoView.setMediaController(new MediaController(this));
        videoView.setOnErrorListener(new ErrorListener());
        videoView.setOnCompletionListener(new CompletionListener());
        videoView.setKeepScreenOn(true);
        videoView.requestFocus();
    }
}//onCreate Method Ends

public void onStart(){
    super.onStart();
    VideoView videoView = (VideoView) findViewById(R.id.videoview);
    SharedPreferences Settings = getSharedPreferences("MyStoragePreferences", MODE_PRIVATE);
  if(Settings.contains(uriString))
    {
        setTime= Settings.getInt(uriString, 0);
        videoView.seekTo(setTime);
    videoView.start();
    }
    else
    {
        videoView.seekTo(mStartTime);
        videoView.seekTo(0);
        if (mStartTime == 0){
        videoView.start();
        }
    }
}

public void onSaveInstanceState(Bundle outState){
    VideoView videoView = (VideoView) findViewById(R.id.videoview);
    mStartTime = videoView.getCurrentPosition();
    outState.putInt("restartTime", mStartTime);
    super.onSaveInstanceState(outState);
}

@Override
protected void onDestroy() {
    mContext = null;
    super.onDestroy();
}

@Override
protected void onStop(){
    super.onStop();
    VideoView videoView = (VideoView) findViewById(R.id.videoview);
    videoView.stopPlayback();

}

@Override
protected void onPause(){
    super.onPause();
    VideoView videoView = (VideoView) findViewById(R.id.videoview);
    sliderPosition= videoView.getCurrentPosition();
    SharedPreferences Settings = getSharedPreferences("MyStoragePreferences", MODE_PRIVATE);
    SharedPreferences.Editor prefEditor = Settings.edit();
    prefEditor.putInt(uriString, sliderPosition);
    prefEditor.commit();
}

}

来自文档:

虽然异步的
seekTo(int)
调用返回正确的方式,但实际的seek操作可能需要一段时间才能完成,尤其是对于流式传输的音频/视频。当实际搜索操作完成时,如果通过
setOnSeekCompleteListener(OnSeekCompleteListener)
预先注册了一个
OnSeekCompleteListener
,内部播放器引擎将调用用户提供的
OnSeekComplete.OnSeekComplete()


您可能会出现此错误的原因是媒体播放器搜索速度较慢,因此当您开始播放视频时,尚未完成搜索。因此它读取的缓冲区已损坏

事实上,先生,我等待了几分钟,但它没有工作,同时logcat不断生成错误,我在问题中显示了这些错误。您不应该等待,您应该使用
OnSeekCompleteListener
进行等待。在SeekCompleteListener上的
中调用
videoView.start()
,先生,谢谢您的回答。你能评论一下我为什么会出现“缓冲区中的数据损坏”错误吗??谢谢你最后的建议,先生。我应该使用videoview还是mediaplayer?请继续查看本页的评论。你的帮助可能会解决我的问题。很多人不叫我“先生”,我还没有被封为爵士。然而为了回答您的问题,我建议您使用的媒体框架,他们有。它是免费的。