我设置了Apache 2.0
个.m3u8
个文件,提供mpeg2ts
个HLS
个ts
个文件。这些libavformat
文件是transmuxing
MP4
youtube
从HLS
下载的VLC
生成的。当我在QT
或.ts
上播放结果HTML5
时,一切正常。但在Android(Stagefright 1.2)上,该视频有几个问题:
m3u8
流时,视频在转换点处可靠地扭曲(撕裂和像素化)。如果我不使用HLS
标签,其中一些可以改善。但问题#4仍然存在。
我可以在Stagefright上播放其他ffmpeg
而没有任何上述问题,所以我假设我的transmuxing代码是错误的,但即使放弃它并使用(最近添加的)libx264
分段{{1}}的功能我有同样的问题。使用{{1}}进行重新编码不会改变任何内容。
我现在正在调试这个。
答案 0 :(得分:0)
Android的libstagefright(以及mediaservice的NuPlayer)并不像vlc那样成熟,而且使用vlc时出现的许多麻烦都存在于android中,它对于任何破坏,损坏,偏离的内容都更容易受到攻击。
这些像素化/宏块伪像通常存在,而某些帧在解码之前被丢弃(通过android代码或丢失)。
如果这些损坏与一些绿色字段一起出现,则可能是格式更改与关键帧同步的问题(可能是源错误实现的结果,或者部分通知ANativeWindow有关格式更改)。 在角落的情况下,您可能无法获得任何绿色帧,但裁剪/重新解决将会偏离并且可能会出现像素化。
我会做什么: 1)检查帧丢失 2)检查连续部分边界处的一些分析仪框架