一、 NuPlayer简介
NuPlayer是安卓系统自带的音视频播放器,其名称源自于“New”(新)和“Universal”(通用)的缩写。在安卓4.1(API level 16)版本推出后,NuPlayer取代了OpenCore作为系统默认的音视频播放器。
NuPlayer优化了系统对于媒体资源的使用,提高了视频和音频的性能和体验。它具有多种解码器和渲染器,支持多种媒体格式和协议,在视频、音频解码、串流、播放器间通信等方面都有很强的能力。
二、 NuPlayer的特点
1.支持多种媒体格式和协议
NuPlayer支持多种常用媒体格式,如H.264, MPEG-4, H.263, Mp3等并支持HTTP,RTSP 和 UDT协议,方便进行多种输入流管理。
2.优化的性能和体验
NuPlayer对系统播放效率进行了优化,改善了视频和音频的运行效率,加强了用户体验。同时,NuPlayer还支持HLS、DASH、Http Smooth等协议,以提供更好的流畅度,快速的启动以及媒体质量的提升。
3.易于拓展
NuPlayer与MediaPlayer和ExoPlayer有着相似的架构,易于扩展和定制。在Android系统中,NuPlayer是基于IOMX组件在C++层实现的,通过IOMX组件,NuPlayer支持硬件加速。同时,开发者可以通过添加新的用于解码媒体的Codec管理器对其进行定制。
三、 NuPlayer的应用
NuPlayer广泛应用于安卓智能手机、平板电脑等移动设备上,并被Google应用于其Pixel系列手机上的移动影像技术的发展。同时,不少Android应用中也使用了NuPlayer的代码或依赖库。
四、 关键代码示例
1. 媒体播放器初始化
Uri uri = Uri.parse("http://www.example.com/sample.mp4");
try {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(getApplicationContext(), uri); // 设置数据源
mediaPlayer.prepare(); // 给MediaPlayer准备资源
mediaPlayer.start(); // 开始播放
} catch (IOException e) {
Log.e(TAG, "prepare() failed");
}
2. NuPlayer配置
private void configMediaFormat() {
MediaFormat format = new MediaFormat();
format.setString(MediaFormat.KEY_MIME, "video/avc");
format.setInteger(MediaFormat.KEY_WIDTH, 1920);
format.setInteger(MediaFormat.KEY_HEIGHT, 1080);
format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, size);
IOMXBufferPool pool = IOMXBufferPool.create("OMX.null");
MediaCodec codec = MediaCodec.createByCodecName("OMX.test");
codec.configure(format, mSurface, null, 0);
codec.start();
}
3. NuPlayer渲染器
public class MyRenderer implements SurfaceHolder.Callback, MediaCodec.Callback {
private Surface mSurface;
...
@Override
public void surfaceCreated(SurfaceHolder holder) {
mSurface = holder.getSurface();
...
}
@Override
public void onInputBufferAvailable(MediaCodec codec, int index) {
ByteBuffer inputBuffer = codec.getInputBuffer(index);
...
}
@Override
public void onOutputBufferAvailable(MediaCodec codec, int index, MediaCodec.BufferInfo info) {
ByteBuffer outputBuffer = codec.getOutputBuffer(index);
...
}
}
五、 总结
NuPlayer是安卓系统默认的音视频播放器,拥有着多种媒体解码器和渲染器,支持多种格式和协议,具有优秀的性能和体验。NuPlayer不仅被广泛应用于安卓智能设备上,并且其代码或依赖库还常常出现在各种应用中。
原创文章,作者:VAOQU,如若转载,请注明出处:https://www.506064.com/n/333017.html
微信扫一扫
支付宝扫一扫