我的Android MediaPlayer同步问题

我的Android MediaPlayer同步问题,第1张

概述我有一个简单的Android媒体播放器,可以在一个屏幕上同时播放多个视频.所以基本上单个媒体播放器屏幕分为4个部分,4个mediaPlayer实例粘在一起,每个部分播放一个​​给定的视频.当我的视频文件本地存储在设备上时,它几乎正常.有同步问题,但很小.但是,当我输入HTTP流式传输的URL时,

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

当我的视频文件本地存储在设备上时,它几乎正常.有同步问题,但很小.但是,当我输入http流式传输的URL时,会出现严重的同步问题.问题是什么?通常,如何删除同步问题?

我唯一能做的就是首先实例化媒体播放器并准备()它们,然后一个接一个地调用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;}@H_404_13@

然后我逐个开始:

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

解决方法:

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

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

总结

以上是内存溢出为你收集整理的我的Android MediaPlayer同步问题全部内容,希望文章能够帮你解决我的Android MediaPlayer同步问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存