当前位置: 首页 > 面试题库 >

播放前后VideoView黑色闪烁

易淳
2023-03-14
问题内容

我有一个要用来播放动画片段的VideoView。我像这样使用它来播放它,并且可以正常工作。

VideoView vv = new VideoView(this);
vv.setVideoURI(Uri.parse("android.resource://cortex2.hcbj/raw/intro"));
setContentView(vv);
vv.start();

但是,我在影片剪辑的前后都看到黑色闪烁。闪光灯本身不是什么大问题,但它的黑度是。背景为白色,因此如果闪光灯为白色或消失,则可以。


问题答案:

今天,我遇到了同样的问题,并发现了一个非常糟糕的解决方案,解决了这个令人讨厌的问题:我意识到可以为背景色/可绘制对象设置背景颜色/可绘制对象VideoView,使其在视频表面混合并完全隐藏。这仅在基础视频仍在
播放时有效
,而在停止时(正常结束或stopPlayback()调用时均无效)不起作用,否则,您将再次看到黑色闪烁。也不要在一开始就设置背景,否则视频从一开始就将被完全隐藏。

因此,对我而言,唯一合乎逻辑的步骤是在开始播放视频之前发布延迟的事件-
并且由于我知道视频的长度,因此我让此事件在正常结束之前的几毫秒内发生。我拍摄了VLC中最后一帧的屏幕截图,然后将其像这样混合:

private void startVideo()
{
    introVideo.setBackgroundDrawable(null);
    introVideo.postDelayed(new Runnable() {
        public void run()
        {
            if (!introVideo.isPlaying())
                return;

            introVideo.setBackgroundResource(R.drawable.video_still_image);
            // other stuff here, for example a custom transition to
            // another activity
        }
    }, 7500); // the video is roughly 8000ms long
    introVideo.start();
}

但是,这还不够,因为当视频实际结束时,我仍然会出现短暂的黑屏闪烁,因此我还必须将静止图像设置为包含视频的容器的背景(在我的情况下,是视频的布局活动):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="@drawable/video_still_image">

    <VideoView android:id="@+id/introVideo"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:layout_alignParentRight="true"
              android:layout_alignParentLeft="true"
              android:layout_alignParentTop="true"
              android:layout_alignParentBottom="true"
              android:layout_marginTop="-10dip" />

</RelativeLayout>

此活动以全屏呈现,并且视频(大部分)缩放为总屏幕尺寸(屏幕1024x600,视频960x640)。我 主要 说的
,因为某种未知的原因,布局的背景图片会在顶部融合约10像素。这是我必须应用的最后一个技巧-将视频容器-10dip移到顶部的空白处。

现在,这在我的Galaxy Tab上看起来很棒,但是我不敢在SGS2手机上对其进行测试…



 类似资料:
  • 当我尝试在华硕padfone(http://www.asus.com/Mobile/PadFone/)上播放HLS m3u8文件(http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8)时,它显示一个没有视频或音频的黑屏。logcat中没有错误报告。 华硕padfone上安装的操作系统是Android 4.0.3。 我使用的代

  • 我正在开发一个应用程序,在其中我需要播放YouTube视频,我尝试使用webView和videoView,我四处搜索了很多,我实际上找到了一些解决方案,但它们似乎不适合我的应用需要: 所以我首先想知道,在应用程序中播放YouTube视频的最佳方式(方法)。我应该使用WebView并尝试使视频适合视图和额外的,或者我应该尝试VideoView(我猜这有点复杂,因为能够播放视频我必须从Youtube获

  • 本文向大家介绍Android原生视频播放VideoView的使用,包括了Android原生视频播放VideoView的使用的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android原生视频播放VideoView的具体代码,供大家参考,具体内容如下 布局文件activity_video.xml 对应的Avtivity:VideoActivity.java 以上就是本文的全部内容,希

  • 对于自定义videoview,我必须重写MediaController(更改按钮的设计并连接到按钮,暂停/播放选择器)。情况是这样的:将视频暂停并打开应用程序,然后再次恢复,视频再次开始播放,而不是从暂停的点开始,因此问题出现了:如何使视频从停止的地方开始播放?我需要在视频活动中更改什么?

  • 我使用Xcode6.4,我的应用刺激器成功构建,然后启动屏幕,然后一个黑屏出现,它是堆栈。我尝试了不同的项目,同样的事情出现黑屏再次,但没有错误。