android音视频总结

1、流媒体相关

计算机网络知识

流媒体及流媒体传输协议

2、Android开源框架

2.1、开源音频、视频框架

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

视频播放(media palyer, video player):

  • ijkplayer(c语言):https://github.com/Bilibili/ijkplayer

  • Exoplayer:https://github.com/google/ (google开源)

  • GSYVideoPlayer:https://github.com/CarGuo/GSYVideoPlayer

  • Jiaozi(饺子、节操):https://github.com/lipangit/JiaoZiVideoPlayer (坑多)

  • Vitamio(强大):https://www.vitamio.org/

  • awesomeplayer:https://github.com/filipebezerra/AwesomePlayer (5.1已经弃用)

  • nuplayer:https://github.com/timsheu/NuPlayer-Android (没有star)

  • mpv(c语言):https://github.com/mpv-player/mpv (基于MPlayer/mplayer2)

  • VideoPlayerManager:https://github.com/danylovolokh/VideoPlayerManager

  • PLDroidPlayer(七牛):https://github.com/pili-engineering/PLDroidPlayer

  • SmarterStreaming(大牛):https://github.com/daniulive/SmarterStreaming (付费)

  • jjdxm_ijkplayer:https://github.com/jjdxmashl/jjdxm_ijkplayer

  • NiceVieoPlayer:https://github.com/xiaoyanger0825/NiceVieoPlayer

开源控件总结

视频缓存(边看边播)

https://github.com/danikula/AndroidVideoCache

视频编辑(video edit):

https://github.com/Zhaoss/WeiXinRecordedDemo
https://github.com/pili-engineering/PLDroidShortVideo
https://github.com/LanSoSdk/LanSoEditor_common
https://github.com/aiyaapp/AiyaEffectsAndroid
https://github.com/yangjie10930/EpMedia
https://github.com/rdsdk/rdVideoEditSDK-for-Android

音频:

  • UniversalMusicPlayer:https://github.com/googlesamples/android-UniversalMusicPlayer
  • JamsMusicPlayer:https://github.com/psaravan/JamsMusicPlayer
  • Timber: https://github.com/naman14/Timber
  • StylishMusicPlayer:https://github.com/ryanhoo/StylishMusicPlayer
  • JamsMusicPlayer:https://github.com/psaravan/JamsMusicPlayer
  • Music-Player:https://github.com/andremion/Music-Player
  • SmarterStreaming:https://github.com/daniulive/SmarterStreaming

视频编码器:

  • MediaCodec
  • FFmpeg

最简单的基于FFmpeg的移动端例子:

微信Android视频编码爬过的那些坑

2.2、视频播放器总结

1、原生VideoView

v2.6.4及以前(VideoPlayActivity.java)

  • 适合最简单的视频播放,存在兼容问题
  • 需要新打开Activity来播放

Android MediaPlayer的生命周期

2、JiaoZiVideoPlayer(饺子、节操)

JieCao 是作者最开始开发的,后面更新为Jiaozi 视频。

https://github.com/lipangit/JieCaoVideoPlayer

implementation('fm.jiecao:jiecaovideoplayer:5.5.4') 

<fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
    android:id="@+id/jc_video"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

https://github.com/lipangit/JiaoZiVideoPlayer

compile 'cn.jzvd:jiaozivideoplayer:6.2.7'

<cn.jzvd.JZVideoPlayerStandard
    android:id="@+id/videoplayer"
    android:layout_width="match_parent"
    android:layout_height="200dp"/>

https://github.com/Jzvd/JZVideo

  • 在Fragment中无法监听返回键和画面切换,所有需要特殊处理。

注意:

  • 一般不需要新开activity来播放视频。

  • activity关闭时注意回收播放器。

      @Override
      
      protected void onPause() {
          super.onPause();
          JZVideoPlayer.releaseAllVideos();
      }
    
      @Override
      public void onBackPressed() {
          if (JZVideoPlayer.backPress()) {
              return;
          }
          super.onBackPressed();
      }
    
  • activity的配置问题(竖向、转动)-

JiaoZiVideoPlayer源码分析

https://segmentfault.com/a/1190000011959615

https://blog.csdn.net/zhjin8510/article/details/95460829

饺子播放器源码解析与评估

该播放器的核心实现类为以上几个。

  • JZVideoPlayer为继承自FrameLayout实现的一个组合自定义View来实现了视频播放器的View相关的内容。
  • JZVideoPlayerStandard则是继承自JZVideoPlayer实现了一些自身的功能。
  • JZMediaManager是用来对于MediaPlayer的管理,对于MediaPlayer的一些监听器方法的回调和TextrueView的相关回调处理。
  • JZVideoPlayerManager管理JZVideoPlayer

JZ提供两种播放引擎

  • JZMediaSystem(默认、基于MediaPlayer)
  • JZMediaIjkplayer(基于IjkMediaPlayer)

补充说明:JZMediaIjkplayer集成了ijkplayer(tv.danmaku.ijk.media.player.IMediaPlayer).

3、GSYVideoPlayer

https://github.com/CarGuo/GSYVideoPlayer

视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。

4、NiceVieoPlayer

https://github.com/xiaoyanger0825/NiceVieoPlayer 未维护

整个功能有参考节操播放器,但是自己这样封装和节操播放器还是有很大差异:

  • 用IjkPlayer/MediaPlayer + TextureView封装,可切换IjkPlayer、MediaPlayer.
  • 支持本地和网络视频播放.
  • 完美切换小窗口、全屏,可在RecyclerView中无缝全屏.
  • 手势滑动调节播放进度、亮度、声音.
  • 支持清晰度切换.
  • 可自定义控制界面.

5、ijkplayer解析

Android ijkplayer的使用解析

常用类:IMediaPlayer,IjkMediaPlayer,IjkTimedText

6、对比

库名支持support的版本支持AndroidX的版本Start数
ExoPlayerv2.9.6v2.10.0 +18.1K
GSYVideoPlayerv6.0.3v7.0.0 +16.6K
JzVideov7.2.0v7.2.1 +10.4k =>1.8K
DKVideoPlayerv3.0.3v3.0.4+3.6K

2.3、短视频SDK

阿里趣拍云

七牛短视频SDK

百度智能云短视频 OneSDK

腾讯云短视频 SDK

涂图SDK

美摄SDK

又拍云SDK

3、直播

Android直播实现(Android端推流、播放)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值