gpt4 book ai didi

Android HLS Streaming - 不同的 Android 版本在 Stream 中加载不同的位置

转载 作者:IT老高 更新时间:2023-10-28 23:11:39 26 4
gpt4 key购买 nike

我意识到在 Android 中 HLS 的支持级别存在一些问题。我正在尝试编写一个小型视频播放器演示(在尽可能多的设备上工作);最好不使用第三方库;可以流式传输 HLS 视频。

注意:我目前正在 JellyBean 4.2.2 上进行测试,但可以访问其他版本

我已经设法使用 MediaPlayer 类,以便我的应用能够开始播放流(例如 Apple 的测试视频 BipBopAll ),但它似乎正在加载流的错误部分,因为视频似乎从 29 分钟开始(因此它在大约 30 秒后结束)。

我使用的代码非常基本:

private void playTrack()
{
player = new MediaPlayer();

try
{
player.setDisplay(holder);
player.setDataSource("http://devimages.apple.com/iphone/samples/bipbop
/bipbopall.m3u8");
player.prepare();

}
catch (...)
{
}
player.start();
}

更新:我已经在 ICS 4.0.4 上测试了相同的代码,它可以正常工作。在 3.0.1 中测试,在 15 分钟加载流,然后从那里正确运行。

如何确保流从头开始,并在多个 Android 版本上正确播放?

或者,我应该使用更好的实现吗?

最佳答案

经过进一步调查,我发现以下信息有望帮助其他人在 Android 上使用 HLS 流式传输。

编码 - 视频编码和分段设置会对视频支持的 Android 版本产生很大影响。我最终使用 HandBrake 创建了一个视频,设置如下:

  • MP4 文件
  • H.264;基线资料; 3 级
  • AAC 音频; 44.1k; 128 位(注意:我发现 JellyBean 对音频比 ICS/Honeycomb 更挑剔。某些音频比特率会创建 Jellybean 根本无法播放的视频。一般来说,单声道和低比特率音频似乎在 Jellybean 上工作得更好)。

Segmentation - 使用 Apple MediaFileSegmenter,我发现添加“-no-floating-point-duration”和“-z none”标志可以让我创建一个适用于 Android 3.0 的视频 ->4.2

Gingerbread - 我无法让 Android 2.3 开箱即用地与 HLS 一起工作,但我确实发现使用 Vitamio 库效果很好(请参阅 this question 了解更多信息)

关于Android HLS Streaming - 不同的 Android 版本在 Stream 中加载不同的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16810673/

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