播放前后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