gpt4 book ai didi

android - 我的 Android MediaPlayer 同步问题

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

我有一个简单的 Android 媒体播放器,可以在一个屏幕上同时播放多个视频。所以基本上一个媒体播放器屏幕被分成 4 个部分,4 个 mediaPlayer 实例粘合在一起,每个部分播放给定的视频。

当我的视频文件存储在设备本地时,它几乎可以正常工作。存在同步问题,但很小。但是当我输入 HTTP 流的 URL 时,存在严重的同步问题。问题是什么?通常,如何消除同步问题?

我唯一能做的就是首先实例化媒体播放器和 prepare() 它们,然后一个接一个地调用 start() 所以至少开始时间是彼此靠近。不过影响不大。

这里我有一个返回每个 mediaplayer 实例的方法:

MediaPlayer mediaPreparation(String filename, boolean setMute) {
String url = "myURL"; // your URL here
// create mediaplayer instance
MediaPlayer mediaPlayer = new MediaPlayer();
if (setMute) {
mediaPlayer.setVolume(0, 0);
}
try {

mediaPlayer.setDataSource(url);
mediaPlayer.prepare();

} catch (IOException e) {
}

mediaPlayer.setLooping(true);
// mediaPlayer.start();
return mediaPlayer;
}

然后我一个一个开始:

mp[0].start();
mp[1].start();
mp[2].start();
mp[3].start();

enter image description here

最佳答案

在流式传输的情况下,总是存在数据无法持续可用的风险,因此玩家在开始播放之前会缓冲相当多的帧。在这种情况下,多个流可能需要不同的时间来缓冲足够的数量。我看到一种你可以尝试的方法,mediacodec。引用这个,https://developer.android.com/reference/android/media/MediaCodec.html .

特别是 releaseOutputBuffer() 及其变体。您可以更好地控制渲染(如果需要,可以更改时间戳,但我不会建议,因为播放不会很流畅)。您可以跟踪所有 4 个实例是否都解码了带有特定时间戳的帧,然后立即渲染它们。

关于android - 我的 Android MediaPlayer 同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38602241/

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