gpt4 book ai didi

android - 使用 Android 的 MediaPlayer 类播放资源视频

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:02 26 4
gpt4 key购买 nike

我在项目的 res/raw 目录中保存了一个视频 test.mp4。我的 SurfaceView 声明如下:

  <SurfaceView android:id="@+id/surface"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
</SurfaceView>

然后,在我的 Activity 的 onCreate () 方法中,我有以下内容:

private MediaPlayer mp;
private SurfaceView view;
private SurfaceHolder holder;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (SurfaceView) findViewById (R.id.surface);
holder = view.getHolder();
holder.setKeepScreenOn (true);
mp = MediaPlayer.create(this.getBaseContext (), R.raw.test);
mp.setDisplay (holder);
mp.setLooping (true);
mp.start();
}

我不明白为什么它不显示视频,即使我设置了显示。我在 API 7 (2.1.1) 上运行,我得到了音频。我需要一个没有控制面板的纯视频类型的界面。据我所知,VideoView虽然比MediaPlayer简单,但是内置了控制层。另外,我看不到在资源上使用 VideoView 的方法。如果我遇到的这两个问题有解决方法,或者如果我对 VideoView 的假设是错误的,我将不胜感激。


更新:我目前正在使用 VideoView 类。我关于自动拥有 UI 控制面板的假设确实是错误的。尽管如此,我仍然无法通过 MediaPlayer 类播放存储在 res/raw 中的视频;当我调用 prepare () 或音频播放时,它总是失败,但视频没有。因此,我的问题仍然存在。

如果有人遇到我关于如何使用 VideoView 的问题,让我帮您省去寻找如何在 res/raw 中检索视频的麻烦。以下 fragment 假设您在布局文件 main.xml 中有一个 ID 为 viewVideoView:

public class generalActivity extends Activity {
@Override
public void onCreate (Bundle icicle) {
super.onCreate (icicle);
this.setContent (R.layout.main);

// You know the that view is an instance of VideoView, so cast it as such
VideoView v = (VideoView) this.findViewById (R.id.view);

// This is the name of the video WITHOUT the file extension.
// In this example, the name of the video is 'test.mp4'
String videoName = "test"

// You build the URI to your video here
StringBuilder uriPathBuilder = new StringBuilder ();
uriPathBuilder.append ("android.resource://");
uriPathBuilder.append (this.getPackageName ());
uriPathBuilder.append (File.separator);
uriPathBuilder.append ("raw");
uriPathBuilder.append (File.separator);
uriPathBuilder.append (videoName);
Uri uri = Uri.parse (uriPathBuilder.toString ());

view.setVideoURI (uri);
view.start ();
}
}

这是我用来获取 uri 路径的引用链接:reference link

我将其保持打开状态是因为我询问是否可以使用 MediaPlayer 而不是 VideoViewres/raw 中播放视频。即使我使用 VideoView 让它按照我想要的方式工作,据我所知,MediaPlayer 仍然可以做到 VideoView不能。不过我可能是错的,所以如果您只需要显示视频而不需要任何高级功能,我很确定 VideoView 就足够了。

哦,感谢@Ravi 提供的所有帮助。

最佳答案

我认为更好的方法是使用 VideoView而不是 MediaPlayer,因为它为您包装了播放器、表面和支架,如果您在 VideoView 中看不到视频,那么可能无法在 android 上播放视频文件。

关于android - 使用 Android 的 MediaPlayer 类播放资源视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com