use*_*574 6 android surfaceview android-mediaplayer android-4.2-jelly-bean mediacodec
我目前正在使用Android Jelly Bean MediaCodec API来开发一个简单的视频播放器.
我在单独的线程中提取曲目,播放音频和视频.问题是视频播放总是播放太快.
哪里可以隐藏问题?
音频和视频的处理方式几乎相同,但音频通过AudioTrack播放,视频呈现在表面.
如果以最大速度渲染帧,在大多数设备上您将达到 60 fps。您需要根据编码器提供的演示时间戳来调整速度。
例如,如果输入是Android支持的格式(例如典型的.mp4文件),则可以使用MediaExtractor类来提取每一帧。可以使用 检索时间戳getSampleTime()。您希望通过连续帧上的时间戳之间的差异来延迟渲染 - 不要假设第一帧的时间戳为零。
另外,不要假设视频帧以恒定速率(例如 30fps)出现。对于某些来源,帧到达的方式会不均匀。
请参阅Grafika中的“播放视频(TextureView)”示例,特别是SpeedControlCallback该类。该gen-eight-rects.mp4视频使用可变的帧持续时间来练习它。如果您选中“以 60fps 播放”框,则演示时间戳将被忽略。
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |