为啥videoview这么慢?

Posted

技术标签:

【中文标题】为啥videoview这么慢?【英文标题】:Why is the videoview so slow?为什么videoview这么慢? 【发布时间】:2012-04-10 03:22:35 【问题描述】:

我在我的应用程序中放置了一个视频视图,它工作正常,但是当您打开页面时,它需要很长时间才能加载/缓冲。

无论如何我可以解决这个问题。我的意思是这是一个 3 秒的视频。加载时间应该不会很长。对吧?

代码:

 package jslsoftware.co.nr;

    import android.app.Activity;

    import android.net.Uri;
    import android.os.Bundle;
    import android.widget.VideoView;
    import android.widget.MediaController;

    public class videoview1 extends Activity 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.video1);

        Uri vidFile = Uri.parse("http://jslserver1.yolasite.com/resources/3gp_videos/Animal.3gp");
        VideoView videoView = (VideoView) findViewById(R.id.videoView1);
        videoView.setVideoURI(vidFile);
        videoView.setMediaController(new MediaController(this));
        videoView.start();
    

谢谢

【问题讨论】:

【参考方案1】:

与其直接放置代码为什么不子类化呢?

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> 
    protected Bitmap doInBackground(String... urls) 
        return loadImageFromNetwork(urls[0]);
    

    protected void onPostExecute(Bitmap result) 
        mImageView.setImageBitmap(result);
    

只需替换 doInBackground 方法中的内容即可。如果您在执行后有任何事情要做,请放在 onPostExecute 中。

【讨论】:

我阅读了那个链接,它在不让事情陷入困境的方式上很有意义。但是现在我对代码不是很好(刚开始)。您能否向我提供一些使用单独线程的代码,或者告诉我需要做什么才能将其安装到我的代码中。非常感谢您的帮助! 在您的代码中定义另一个类,并将您的视频通话置于 do 后台服务中。我将使用代码编辑我的答案。 videoView.setVideoURI(vidFile);必须在 UI 线程中完成。这是迄今为止最慢的调用。在 Google TV 上,单独调用可能会导致 UI 无响应.. :( 我不知道这个答案是否真的回答了这个问题。好像和我没关系问题是视频播放器内的缓冲区/加载速度非常慢。

以上是关于为啥videoview这么慢?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能从 VideoView 播放我的视频?

为啥 Android 中的 VideoView 需要花费太多时间来加载和播放来自 http 链接的视频?

使用VideoView自定义一个播放器控件

android 多个 videoView 问题,特定于 Galaxy Tab

Android VideoView未解决,动态读取权限BottomNavigationView的用法

Android VideoView未解决,动态读取权限BottomNavigationView的用法