晚上,
我刚刚开始使用android进行编程,并制作了一些程序和所有内容,所以我仍然是一个新手,但我试图理解这一切。
所以这是我的问题,我正在尝试播放一个视频,事实是,当我通过互联网从VideoView上传输它或者当我放入我的SD卡时,我得到了它。
我现在要做的是播放我在res / raw文件夹中的视频,但它只播放音频,我不明白为什么,它在我的logcat中没有给出任何错误我可以看到,也无法真正找到谷歌的解决方案,因为大多数答案都是关于VideoView的,只是把视频放在你的SD卡上。
现在有人告诉我,我必须使用setDisplay(SurfaceHolder),我也尝试过,但我仍然只能获得音频。
我希望有人能帮助我找到解决这个问题的方法。
VideoDemo.java
package nl.melvin.videodemo;
import android.app.Activity;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class videodemo extends Activity {
public SurfaceHolder holder;
public SurfaceView surfaceView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MediaPlayer mp = MediaPlayer.create(this, R.raw.mac);
mp.setDisplay(holder);
mp.start();
}
}
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<SurfaceView
android:id="@+id/surfaceview"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</SurfaceView>>
</LinearLayout>
我也尝试过Uri.parse,但它说无法播放视频(.mp4格式)。
答案 0 :(得分:7)
我遇到了同样的问题但仍然无法加载视频(只有声音)。 但是我这样做了:
getWindow().setFormat(PixelFormat.TRANSLUCENT);
videoView = new VideoView(this);
videoView.setMediaController(new MediaController(this));
videoView.setVideoURI(Uri.parse("android.resource://pt.beware.smdemo/" + R.raw.video));
videoView.requestFocus();
videoView.start();
setContentView(videoView);
答案 1 :(得分:0)
尝试在XML文件中使用VideoView而不是SurfaceView。 VideoView专门扩展SurfaceView以处理视频 - SurfaceView不知道如何做到这一点。
的类层次结构然后你应该能够把持有人当作......
mp.setDisplay(surfaceView.getHolder());
此外,您的代码不会显示您在...中分配对surfaceView的引用
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
...为了完整起见,如果您使用VideoView,则更改代码中的类类型和变量名称以及XML中的Id名称。
答案 2 :(得分:0)
mp.setDisplay(surfaceView.getHolder());
此外,您的代码不会显示您为SurfaceView
分配引用,如:
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
并且为了完整起见,如果您使用VideoView
,则更改代码中的类类型和变量名称以及XML中的Id名称。