1

我已经设置了Apache 2.0几个.m3u8文件,这些mpeg2ts文件通过HLS. 这些ts文件是由libavformat我从. 当我在or上播放结果时,一切正常。但在 Android (Stagefright 1.2) 上,视频有几个问题:transmuxingMP4youtubeHLSVLCQT

  1. 全屏选项不起作用
  2. 视频时长显示为 1:40,而实际上是 2:00
  3. 视频有时无法启动,您必须重新加载页面
  4. .ts切换基础流时,视频在过渡点可靠地扭曲(撕裂和像素化) 。

如果我不使用HTML5' 标签,其中一些会得到改善。但问题 #4 仍然存在。

我可以m3u8在 Stagefright 上播放其他 's 没有任何上述问题,所以我假设我的 transmuxing 代码是错误的,但即使放弃它并使用我的(最近添加的)HLS分段功能ffmpeg也有同样的问题。重新编码libx264没有任何变化。

我对此束手无策。

4

1 回答 1

0

Android 的 libstagefright(以及 mediaservice 的 NuPlayer)不像 vlc 那样成熟,并且在使用 vlc 时不存在的许多问题都存在于 android 中,它更容易受到任何损坏、损坏、偏离的内容的影响。

这种像素化/宏块伪影通常存在于解码之前丢弃的一些帧(由 android 代码或丢失)。

如果这些损坏与一些绿色字段一起出现,则可能是格式更改与关键帧的同步存在问题(这可能是源的错误实现的结果,或者部分通知了 ANativeWindow 格式更改)。在极端情况下,您可能不会得到任何绿框,但裁剪/分辨率会出现偏差,并且可能会出现像素化)。

我会做什么:1)检查帧丢弃 2)检查连续部分边界处的一些分析器帧

于 2013-12-21T18:10:55.170 回答