Videoview不显示视频但播放声音,每次都显示黑屏。我正在运行Android 4.0。我在模拟器上运行它。
这是我的xml文件。
<VideoView
android:id="@+id/myVideo"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"/>
.java文件
VideoView vidView = (VideoView)findViewById(R.id.myVideo);
String vidAddress ="rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";
Uri vidUri = Uri.parse(vidAddress);
vidView.setVideoURI(vidUri);
MediaController vidControl = new MediaController(this);
vidControl.setAnchorView(vidView);
vidView.setMediaController(vidControl);
vidView.setZOrderOnTop(false);
vidView.start();
请帮助我在一周内坚持下去。搜索了很多但没有任何效果。
答案 0 :(得分:1)
我知道这可能是一个很老的但我发布此更新,以防万一有人遇到与我相同的问题。这也是对上述问题的改进答案。
无论如何,你要做的就是把:vidView.setZOrderOnTop(true);语句 AFTER vidView.start();
语句。即使视频在后台播放,我在白色/灰色屏幕显示(您在评论中提到)也遇到了同样的问题。我认为那是因为你的setZOrderOnTop是在你开始播放视频之前设置的。如果你先启动视频然后设置setZOrderOnTop
将为你修复它,就像它对我一样。希望有所帮助。
vidView.start();
vidView.setZOrderOnTop(true);
答案 1 :(得分:1)
解决方案1:
videoView.setZOrderOnTop(true);
这会将视频视图设置为顶层;换句话说:阻止它下面的一切。
解决方案2:
videoView.setBackgroundColor(Color.TRANSPARENT);
解决方案3:
有时这与你的apptheme有关; 在我的情况下,我将apptheme从“@ style / AppTheme”更改为“@android:style / Theme.NoTitleBar.Fullscreen”解决了我的问题。
答案 2 :(得分:0)
将vidView.setZOrderOnTop(false)更改为true,因此它将为vidView.setZOrderOnTop(true);
参考:Video is not showing on VideoView but i can hear its sound `
答案 3 :(得分:0)
我遇到了完全相同的问题并通过以下方式解决了这个问题:
videoView.setBackgroundColor(Color.TRANSPARENT)
答案 4 :(得分:0)
通过扩展VideoView类创建自定义VideoPlayer并使用它:
public class VideoPlayer extends VideoView {
public VideoPlayer(Context context) {
super(context);
init();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
TyrooLog.i(TAG, "onMeasure");
int width = getDefaultSize(videoWidth, widthMeasureSpec);
int height = getDefaultSize(videoHeight, heightMeasureSpec);
if (videoWidth > 0 && videoHeight > 0) {
if (videoWidth * height > width * videoHeight) {
TyrooLog.i(TAG, "video too tall, correcting");
height = width * videoHeight / videoWidth;
} else if (videoWidth * height < width * videoHeight) {
TyrooLog.i(TAG, "video too wide, correcting");
width = height * videoWidth / videoHeight;
} else {
TyrooLog.i(TAG, "aspect ratio is correct: " + width+"/"+height+"="+mVideoWidth+"/"+mVideoHeight);
}
}
TyrooLog.i(TAG, "setting size: " + width + 'x' + height);
setMeasuredDimension(width, height);
}
}