gpt4 book ai didi

android - SurfaceView、SurfaceTexture 和 MediaPlayer 无法在 android 中播放我的视频

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:49:51 25 4
gpt4 key购买 nike

我正在尝试使用 SurfaceView 在我的应用程序上播放实时流视频,当我尝试使用 Vitamio 时它播放效果很好,但由于它是 HTTP 链接,我试图摆脱任何第 3 方库并使用 native 类。我一如既往地尝试了 VideoView,然后在失败后尝试了 SurfaceView 基本实现 我尝试了这样的纹理视频:

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {

Surface surface = new Surface(surfaceTexture);

try {

mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(getApplicationContext(), Uri.parse(link));
mMediaPlayer.setSurface(surface);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepareAsync();

// Play video when the media source is ready for playback.
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});

mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {

Log.d(TAG, "Error occured");

return false;
}
});

} catch (IllegalArgumentException e) {
Log.d(TAG, e.getMessage());
} catch (SecurityException e) {
Log.d(TAG, e.getMessage());
} catch (IllegalStateException e) {
Log.d(TAG, e.getMessage());
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}

}

但每次调用 MediaPlayer 的 OnError 时都没有运气,在 logcat 中我得到了这个:

06-28 16:00:56.612     144-8044/? E/GenericSource﹕ Failed to prefill data cache!
06-28 16:00:56.614 7997-8016/? E/MediaPlayer﹕ error (1, -2147483648)
06-28 16:00:56.614 7997-7997/? E/MediaPlayer﹕ Error (1,-2147483648)

但问题是 URL 没有问题,这个 url 在 vi​​tamio 和我可以测试的所有其他播放器上播放正常,请帮忙!!

最佳答案

我自己也曾尝试通过 MediaPlayer 在 Android 上播放视频,我也曾尝试过 Vitamio。大多数情况下,如果视频无法在 Android 的 MediaPlayer 上正常播放,那是因为它的格式不受支持。

http://developer.android.com/guide/appendix/media-formats.html

这可能不是您想要的答案,但您可能需要将您尝试播放的任何内容重新编码为受支持的格式。 Android 的视频播放能力远不如 iphone,这是你不得不接受的。

相反,如果您愿意投入(大量)更多工作,您可以自己为 android 编译 ffmpeg,为它的许多组件创建一个 jni 接口(interface),并在表面/纹理 View 中播放视频。我个人不推荐这条路线,因为我通过 ffmpeg 流式传输 1080p 视频的体验并不好。

最好、最简单的方法是简单地重新编码您的视频。

背景:我制作了一个应用程序,可以同时播放来自不同供应商的多达 5 个视频。

关于android - SurfaceView、SurfaceTexture 和 MediaPlayer 无法在 android 中播放我的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098035/

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