我对如何在
Android中播放和录制视频/音频感到有些困惑.我真的不明白在什么情况下应该使用这些类:
– 玩:MediaPlayer与MediaExtractor MediaCodec
– 记录:MediaRecorder与MediaCodec MediaMuxer
我何时必须使用其中一个?
对不起,如果这是一个重复的问题,我认为它应该是一个常见的问题,但我没有找到任何问题.
解决方法
如果高级接口(MediaPlayer,MediaRecorder)可以执行您想要的操作(从系统支持的格式播放视频到显示器,或将视频从摄像机录制到文件中),您应该只使用它们,它将要简单得多.
如果你想做一些更自定义的事情,当你注意到想要修改的链的一部分被隐藏在高级别类中时,你会想要继续下一级.例如.对于MediaExtractor;如果您只想从文件中提取数据包但不解码并立即显示/播放它们,您将需要使用MediaExtractor.如果您想接收来自系统本身不支持的其他来源的数据包,您将需要使用没有MediaExtractor的MediaCodec.同样,如果您想录制除摄像机之外的其他内容,或者将输出写入除MediaRecorder支持的文件之外的其他位置,您将需要直接使用MediaCodec而不是MediaRecorder.
另请注意,对于较新的API版本,高级类也会改进并变得更加灵活,允许您执行以前需要您手动使用较低级别类的操作.例如.在Android 5.0中,MediaRecorder能够从自定义Surface进行录制,允许您录制自己渲染的视频,而不仅仅是摄像机.以前可以通过使用较低级别的类来实现4.3.