仅限VideoView音频,没有视频?

时间:2011-04-18 10:57:58

标签: android

我的活动中有一个视频视图用于显示存储在我的res.raw文件夹中的视频,如下所示:

MediaController controller=new MediaController(this);
video.setMediaController(controller);
String filePath="android.resource://" + getPackageName() + "/" + R.raw.video3;
video.setVideoURI(Uri.parse(filePath));
video.requestFocus();
video.start();

问题是我只能听到音频,但视频没有显示。

这可能是什么原因?

修改:这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button 
    android:id="@+id/btnPlayAudio"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="Play Audio"
        >
        </Button>
        <Button 
        android:id="@+id/btnPlayVideo"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:text="Play Video"
        >
        </Button>

        <VideoView android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:id="@+id/videoView"

        />
</LinearLayout>

4 个答案:

答案 0 :(得分:3)

好的,我明白了,

问题是当我更改为 fill_parent 时,我的VideoView的宽度和高度设置为 wrap_content ,视频出现了

感谢

答案 1 :(得分: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);
        }
    }
}

答案 2 :(得分:0)

我的问题只发生在我使用模拟器时,当我在真实设备上尝试时它运行良好

答案 3 :(得分:-1)

你过度复杂了: - )

MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();

Linky:Play from Raw Resource