Android Videoview根本不显示视频,只听到声音

时间:2015-01-29 17:34:00

标签: android android-emulator android-videoview

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();

请帮助我在一周内坚持下去。搜索了很多但没有任何效果。

5 个答案:

答案 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);
    }
}