我正在开发一个函数,我单击下一步按钮,然后暂停视频将搜索到下一部分并开始。例如,当video.getCurrentPosition为8000时,我单击按钮使视频查找(10000(,因为视频在8000和10000之间显示相同的内容。
此功能在某些安卓设备上运行流畅,例如Samsung s6 edge,OnePlus,Xiaomi,Smartison
...
但问题是,在某些设备上,例如华为,Moto Nexus 6,当视频在8000上,我点击按钮,它有一些" delay time
"。大约 1 秒后,视频终于开始了。
相比之下,我特意更改了seekto(10200(,这是错误的参数,这些"问题设备"像"普通设备"一样运行流畅。但是,之前"normal devices
"上的视频跳过了一些帧并从10200开始。
有谁知道为什么导致此问题?希望你的回答,谢谢。
视频是否使用 h264
编码? 正如对此 SO 问题的评论中所建议的那样,使用 mpeg4
编解码器重新编码为我解决了 Android ViewView
非常奇怪的seekTo
行为问题。
要检查编码并重新编码,您可以使用 ffmpeg
。
$ ffprobe <inputfile>
...
...
Stream #0:0(eng): Video: h264 ...
...
这表明该文件是使用 h264
编码的,这是较新的,并且通常在与mpeg4
相同的比特率下产生更好的质量,但(大概是因此(更难通过,至少对于 Android VideoView
。
要按mpeg4
编码,以下内容对我有用,但ffmpeg
wiki 有更多细节。
$ ffmpeg -i <inputfile> -c:v libxvid <outputfile>