• 开源播放器内核比较:ijkPlayer、VLC、ExoPlayer、MediaPlayer、SmartPlayer


    Android 常见的视频播放器,ijkPlayer、VLC、ExoPlayer、MediaPlayer、SmartPlayer简单对比:

    1、MediaPlayer
    在Android系统中对于视频播放器有原生的实现MediaPlayer, 以及将MediaPlayer,SurfaceView封装在一起的VideoView, 两者都只是使用硬解码播放,

    基本上只支持本地和HTTP协议的视频播放,扩展性都很差,只适合最简单的视频播放需求。

    2、ijkPlayer
    ijkplayer 是Bilibili公司开源的播放器实现,整合了FFMpeg, ExoPlayer, MediaPlayer等多种实现,提供了类似于MediaPlayer的API,可以实现软硬解码自由切换,自定义TextureView实现,同时得益于FFMpeg的能力,也能支持多种流媒体协议(RTSP,RTMP,HLS等),多种视频编码格式(h264, mpeg4, mjpeg),具有很高的灵活性,可以定制实现自己特色的播放器(比如支持视频缩放,视频翻转等)。

    如果只是使用它进行播放,集成也较为简单,使用也和MediaPlayer差不多,但是要定制化需求,就有一定的门槛高度。

    支持软硬编解码,支持倍速播放,可以定制化集成需要的功能,集成占用体积也很小。

    优点:
    1.ijkplayer结构比较简单,基本以ffplay展开,开发难度较小;
    2.ijkplayer包比VLC小一点,经过裁剪,约为4.2M左右;

    缺点:
    1.ijkplayer可扩展性较差,基本上没有提供modules供开发者二次开发;
    2.ijkplayer 官方维护力度小,版本更新很慢;

    3、ExoPlayer
    ExoPlayer 是google推出的开源播放器,主要是集成了Android 提供的一套解码系统来解析视频和音频,将MediaCodec封装地非常完善,并加入了对DASH和HLS等直播协议的支持,形成了一个性能优越,播放稳定性较好的一个开发播放器。

    但也只支持硬码,如果项目中只需要支持对H264格式、以及流媒体协议比较常规(比如HTTP,HLS),基于ExoPlayer定制也是不错的选择。

    优点:
    1.接入包小,1.1M;
    2.维护团队强大,更新速度快;

    缺点:
    1.不太适合直播;
    2.视频解码无法接入软解,可扩展性一般;
    3.适合播放场景简单的项目,播放过程中无切换码流的情况

    问题:ExoPlayer 会替代MediaPlayer成为Android平台上的默认播放器吗?

    不会,两个原因:

    Android 5.0 之后Android的Codec架构做了依次重大调整,放弃了AwesomePlayer
    ,使用NuPlayer架构,ExoPlayer 没有做过多的兼容;
    ExoPlayer 目前还是一个小而轻的播放器,如果要合成到系统中,它需要调整的东西太多,代码量会变得很繁杂,很可能得不偿失;
    4、VLC Media Player
    VLC 是VideoLAN 计划所研发的工程,最早预1996年开始,是一个完全的跨平台播放器,适合Windows、Mac OS、Linux、Android、iOS等系统,目前完全的跨平台播放器很少,VLC是最受欢迎的一种播放器;目前累计下载13亿次,是真真正正的全球播放器;

    VLC的整体框架是设计成一套module的管理机制,将功能分类并抽象成modules。
    VLC main:player的main。初始化libVLC 并加载用户界面。
    libVLCcore:libvlc的核心,抽象出了一个libvlc_instance_t 对象,提供modules的装载/卸载机制。
    modules:modules提供具体的功能,比如上面的access,demux,decode就是以一个模块的形式存在。
    External libraries:外部开源库。

    优点:
    1.跨平台,兼容性好;
    2.功能全面,支持rtsp、rtmp、ftp、http、https等协议;
    3.代码完全解耦,modules相互独立,不影响,引入新modules方便;
    4.维护团队强大,更新频繁;

    缺点:
    1.Android平台编译出的包较大,有16M左右;

    5、SmartPlayer
    SmartPlayer系大牛直播SDK(Github)出品的全自研内核的RTSP和RTMP直播播放器SDK,跨平台(Windows、Android、iOS)、功能齐全、高稳定、超低延迟,超低资源占用,适用于安防、教育、单兵指挥等对延迟和稳定性要求比较苛刻的场景。

    在机器性能没有瓶颈的前提下,SmartPlayer的RTSP播放器和RTMP播放器延迟是业内为数不多毫米级的。

    参考链接:
    https://zhuanlan.zhihu.com/p/397425806


    ————————————————
    版权声明:本文为CSDN博主「唐诺」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zhijiandedaima/article/details/119734586

  • 相关阅读:
    「JavaSE 重新出发」05.03.02 在运行时使用反射分析对象
    「JavaSE 重新出发」05.03.01 利用反射分析类
    「JavaSE 重新出发」05.03 反射
    「JavaSE 重新出发」05.02 泛型数组列表、包装类
    scp 命令简明介绍
    《鸟哥的Linux私房菜》笔记——04. 简单命令行
    《鸟哥的Linux私房菜》笔记——03. 磁盘分区
    「JavaSE 重新出发」05.01.02 hashCode 方法、toString 方法
    「JavaSE 重新出发」05.01.01 equals 方法
    「JavaSE 重新出发」05.01 继承
  • 原文地址:https://www.cnblogs.com/javalinux/p/16200327.html
Copyright © 2020-2023  润新知