标签: seektotime

ExoPlayer seekto 函数不搜索指定点而是从 0 开始

我正在为广播流应用程序开发 ExoPlayer 2.6.0。收音机播放很好,但是当我尝试添加 seekTo +/-30 秒时,它总是从 0 开始流式传输。在调试模式下,播放器搜索到 +30 秒,但一旦设置了 setPlayWhenReady() 它就会返回从 0 开始。我一直在寻找这个解决方案很久了,所以决定在这里提问。任何帮助将不胜感激。

以下是我用于 seekto 操作的代码。

ivForward.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {
                if (exoPlayer != null && Constants.isMediaPlaying) {
                    exoPlayer.setPlayWhenReady(false);
                    Constants.isMediaPlaying = false;
                    long bufferPosition = exoPlayer.getBufferedPosition();
                    long currentPosition = exoPlayer.getCurrentPosition();
                    if ((currentPosition + 30000) < bufferPosition + 50) {
                        exoPlayer.setPlayWhenReady(false);
                        Constants.isMediaPlaying = false;
                        exoPlayer.seekTo(exoPlayer.getCurrentWindowIndex(), currentPosition + 30000);
                        exoPlayer.setPlayWhenReady(true);
                        Constants.isMediaPlaying = true;
                    }
                }
            } catch (Exception e) {
                MakeToast.show("Error moving forward");
            }
        } …
Run Code Online (Sandbox Code Playgroud)

exoplayer seektotime exoplayer2.x

6
推荐指数
0
解决办法
213
查看次数

AVPlayer中的SeekToTime在前进时停止播放流式音频

我正在使用AVPlayer传输音频.它运作良好.但是现在我需要制作一个滑块来向前和向后移动音频,就像典型的音乐播放器一样.我使用了seekToTime与本地音频文件一起使用的功能.但是当我从网址流传输歌曲时,当我转发大范围的滑块时,该功能会停止音频.

我的猜测是正在下载歌曲,如果我向前移动大范围的滑块,那么系统可能没有下载当时的歌曲数据包,所以它会停止播放器.

让我说我只是按一个按钮来播放歌曲,但现在我立即在0到100秒移动滑块.在这种情况下,系统无法正常工作并停止播放器.由于当时缺少数据包.

有谁知道如何克服这个问题或有任何其他方法.我正在使用SWIFT进行开发.如果它可以在swift中工作,我也可以使用任何库.这是我的功能:

func forward () {
    timeGap = slider.value
    let preferredTimeScale : Int32 = 1
    let targetTime : CMTime = CMTimeMake(timeGap, preferredTimeScale)

    player.seekToTime(targetTime, toleranceBefore: kCMTimeZero, toleranceAfter: kCMTimeZero)

}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

audio-streaming ios avplayer swift seektotime

5
推荐指数
1
解决办法
2018
查看次数

Android SDK MediaPlayer无法正确搜索

我有一个mp3文件,我的应用程序必须寻找该mp3文件的某些选定时间,然后从那里开始播放.

我通过此方法将字符串时间转换为int值

private static int convert(String time) {
    int quoteInd = time.indexOf(":");
    int pointInd = time.indexOf(".");

    int min = Integer.valueOf(time.substring(0, quoteInd));
    int sec = Integer.valueOf(time.substring(++quoteInd, pointInd));
    int mil = Integer.valueOf(time.substring(++pointInd, time.length()));

    return (((min * 60) + sec) * 1000) + mil;
} 
Run Code Online (Sandbox Code Playgroud)

注意:我的蜇声是这样的5:12.201,意味着5分12秒和201毫秒.

我从MP3 Audio Editor应用程序(它是用于Windows)中获取这些时间,并且我使用KMPlayer应用程序检查主题(它是用于Windows).这些时间对他们两个都是正确的.

但是在我的应用程序中,当我寻找MediaPlayer那个时间时,音频不会从我选择的位置开始. (时间是正确的,但声音是不同的.)


我以为MediaPlayer没有正确地寻求那个时间.所以我getCurrentPosition()在玩之前通过调用检查当前位置,但是返回值并且搜索值相同.

我对它没有任何想法.


编辑:

我的问题不是时间转换.

我正确地转换并寻求到那里,但它发挥了那个时代不期望的东西.

这意味着KMPlayer和Android的时机不同.

我的问题是Way?如何能为解决呢?

audio mp3 android android-mediaplayer seektotime

5
推荐指数
1
解决办法
755
查看次数

AVPlayer seekToTime 下载大量消耗大量数据的媒体片段文件

我正在一个应用程序中工作,在该应用程序中,我可以使用 AVPlayer 实例播放流媒体广播(仅限音频)的 HLS m3u8 播放列表而没有任何问题。使用 Charles 我可以看到播放列表是如何以正常速度正确更新的(每 9-10 秒,这需要一个媒体片段文件)。当我执行seekToTime:(回到过去)时,播放器从我想要的时候开始成功播放流,但在Charles中我观察到播放器如何开始下载大量媒体片段文件,消耗大量数据。似乎播放器下载所有媒体段文件直到那个时候,然后再次保持正常行为。

我知道正确的行为是在我想要的时间下载媒体片段文件,开始播放它,然后每 9-10 秒不断下载 1 或 2 个媒体片段文件,就像我播放流时一样没有时移。

我的问题是这是否是正常行为,或者我的 m3u8 播放列表或客户端实现是否有问题。任何人都可以帮我澄清这一点吗?

更新:我可以确认这不会发生在 iOS 7 中,所以它似乎是 iOS 8 引入的错误。

http-live-streaming ios avplayer avplayeritem seektotime

5
推荐指数
1
解决办法
691
查看次数