播放前后VideoView黑色闪烁

我有一个要用来播放动画片段的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手机上对其进行测试…

以上是 播放前后VideoView黑色闪烁 的全部内容, 来源链接: utcz.com/qa/401563.html

回到顶部