【问题标题】:Video from resources is not displaying资源中的视频未显示
【发布时间】:2018-01-22 05:28:16
【问题描述】:

我正在尝试显示来自VideoView 内的应用资源的mp4 视频,参考this answerthis tutorial 我使用了以下方式:

// make the videoView visible
storyVideo.setVisibility(View.VISIBLE);
// set Video Preferences
storyVideo.requestFocus();
storyVideo.setBackgroundColor(Color.BLACK);
// get & set the video URI
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.story_media4);
storyVideo.setVideoURI(uri);
// Start The Video
storyVideo.start();

story_media4 存储在资源的原始文件中的位置:

【问题讨论】:

  • 尝试去除黑色背景。有没有显示错误?
  • @ElMaravilla 我没有从中得到任何错误,我也不认为背景可以据此做任何事情,我已经在具有网络 URL 的视频中设置了相同的首选项和他们工作得很好。

标签: android video android-resources android-videoview


【解决方案1】:

您应该删除 storyVideo.setBackgroundColor(Color.BLACK); 。 我测试您的代码并删除setBackgroundColor(Color.BLACK) 并解决此问题。 请为OnPreparedListener() 测试以下代码:

 videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            Log.i("LOG","Video test");
        }
    });

请删除onPrepared 中的videoView.start() 并使用Log() 进行测试。

【讨论】:

  • 实际上在我的情况下它是 VideoView 而不是 MediaPlayer
  • 你说得有道理,这与黑色无关,但将其设置为透明也可以解决问题
【解决方案2】:

实际上视频显示但不显示,在this answer的帮助下,我可以在视频URI设置和视频准备监听器方法上设置video_view.setZOrderOnTop(true);后显示视频:

// set Video Preferences
storyVideo.requestFocus();
storyVideo.setZOrderOnTop(true);
// get & set the video URI
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.story_media4);
storyVideo.setVideoURI(uri);
// when the video is ready for display
storyVideo.setOnPreparedListener(onVideoPrepared);

private MediaPlayer.OnPreparedListener onVideoPrepared = new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        storyVideo.setZOrderOnTop(true);
        // to start the video
        storyVideo.start();
    }
};

更新: 对于上述方法,视频在所有视图的顶部,如果 - 出于某种原因 - 您希望视频被一个或多个视图覆盖(如贴纸或描述文本),最好的方法是设置背景透明的视频:

storyVideo.setBackgroundColor(Color.TRANSPARENT);

【讨论】:

    【解决方案3】:
    public class Videoplay extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_videoplay);
    
    
            VideoView vidView = (VideoView)findViewById(R.id.myVideo);
    
            MediaController vidControl = new MediaController(this);
    
            String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
            Uri vidUri = Uri.parse(vidAddress);
    
            Toast.makeText(Videoplay.this, "Loading Teaser",Toast.LENGTH_LONG).show();
    
            vidView.setVideoURI(vidUri);
    
            vidView.start();
    
    
            vidControl.setAnchorView(vidView);
    
            vidView.setMediaController(vidControl);
    
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多