OpenGL实现视频的剪裁、旋转、水印、滤镜?? 将 ffmpeg 库移植到 Android 平台?
  在播放网络上的视频流时,Android原生的MediaPlayer支持两种协议,HTTP和RTSP,这两种协议最大的不同是,RTSP协议支持实时流媒体的播放,而HTTP协议不支持。因为VideoView的底层实现是MediaPlayer,因此VideoView也支持以上两种协议。 但是Android原生MediaPalyer支持的协议(不支持RTMP、MMS等)和封装格式实在太有限了.
  除了使用MediaPlayer + SurfaceView播放视频的方式,我们还可以使用VideoView来直接播放视频。SurfaceView播放视频时,如果不进行设置,视频宽高总是等于定义的SurfaceView布局宽高,所以视频可能会被拉伸变形。而使用VideoView时,视频宽度等于VideoView布局宽,但是高是自适应的,自动调整宽高比到视频原始比例,所以不会有拉伸。

> MediaPlayer+SurfaceView点播视频
Android MediaPlayer+SurfaceView播放视频(附Demo)- http://blog.csdn.net/junzia/article/details/52704129
Android移动开发-使用MediaPlayer和SurfaceView播放视频的实现- https://download.csdn.net/download/fukaimei/10002446
Android--SurfaceView播放视频- http://www.cnblogs.com/plokmju/p/android_SurfaceView.html
Android SurfaceView播放视频有声音无图像问题- http://blog.csdn.net/aminfo/article/details/7588475
从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频- http://blog.csdn.net/worker90/article/details/7108358
Android之SurfaceView实现视频播放- http://www.cnblogs.com/devinzhang/archive/2012/02/03/2337576.html
Android SurfaceView使用dirty rect刷新- http://blog.csdn.net/jjwwmlp456/article/details/50364424
Android中 Rect类- http://blog.csdn.net/u010142437/article/details/38585637
Android开发:SurfaceView上新建线程绘制旋转图片 及 刷新特定区域(脏矩形)- http://blog.csdn.net/yanzi1225627/article/details/8581200
基于Surface的视频编解码与OpenGL ES渲染- http://blog.csdn.net/gh_home/article/details/52399959 https://github.com/google/grafika
Android图形系统之Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的联系- http://blog.csdn.net/conowen/article/details/7821409
openGL ES进阶教程(四)用openGL ES+MediaPlayer 渲染播放视频+滤镜效果- http://blog.csdn.net/king1425/article/details/72773331

> TextureView+MediaPlayer点播视频 ,SurfaceTexture.OnFrameAvailableListener
TextureView+SurfaceTexture+OpenGL ES来播放视频(一)- https://www.jianshu.com/p/d3d3186eefcb
SurfaceTexture进行视频分屏的文字,GLSurfaceView和SurfaceTexture,使用opengl绘制
TextureView+SurfaceTexture+OpenGL ES来播放视频(一)- http://blog.csdn.net/Ray_Chou/article/details/48416467

> openGL+GLSurfaceView+MediaPlayer点播视频/拍照、预览图片和视频、滤镜等,GLSurfaceView.Renderer。  
  创建一个纹理时,视频的每一帧都可以看成图片,也就是要不断的更新纹理.
主要的原因是,MediaPlayer的输出往往不是RGB格式(一般是YUV),而GLSurfaceView需要RGB格式才能正常显示,另外,获取每一帧的数据并没有那么方便。
    GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处。独到之处在哪?当使用Surfaceview无能为力时就只有使用GLSurfaceView了,它能够真正做到让Camera的数据和显示分离,所以搞明白了这个,像Camera只开预览不显示这都是小菜,妥妥的。Android4.0的自带Camera源码是用SurfaceView预览的,但到了4.2就换成了GLSurfaceView来预览。如今到了4.4又用了自家的TextureView,所以从中可以窥探出新增TextureView的用意。

-- 推荐:通过Opengl ES去绘制视频的demo- https://github.com/ChouRay/PlayVideo-OpenGL
Android上使用OpenGLES2.0显示YUV数据- https://blog.csdn.net/android_technology/article/details/52143291 
Android上使用OpenGLES2.0显示YUV数据- https://blog.csdn.net/ueryueryuery/article/details/17608185
OpenGL预览摄像头-https://download.csdn.net/download/a296777513/9786330  
Android OpenGL渲染双视频- https://github.com/296777513/AndroidOpenGL
GLSurfaceView控件通过MediaPlayer播放普通视频- https://download.csdn.net/download/fowuchubuzai/10140354?locationNum=3&fps=1
Android OpenGL使用GLSurfaceView预览视频- http://blog.csdn.net/a296777513/article/details/63685658
视频学习笔记:Android OpenGL渲染YUV420P图像- http://blog.csdn.net/lidec/article/details/73732369
Android上使用OpenGLES2.0显示YUV数据- http://blog.csdn.net/ueryueryuery/article/details/17608185
github.com/xiaoyanger0825/NiceVideoPlayer  github.com/lipangit/JieCaoVideoPlayer
Android使用OpengGL Es2.0技术(GLSurfaceView含缩放功能)yuv视频流展示总结- http://blog.csdn.net/android_technology/article/details/52143291
Camera_V3.0.0[使用GLsurfaceView预览Camera 拍照demo]- https://download.csdn.net/download/rzjhsbyj110/8361481
PlayCamera_V2.0.0[TextureView预览Camera 拍照完整demo]- https://download.csdn.net/download/yanzi1225627/7540903
 使用GLsurfaceView预览Camera 拍照demo- http://download.csdn.net/detail/yanzi1225627/7547263
 Android camera实时预览 实时处理,人脸识别示例- http://www.jb51.net/article/103783.htm  http://www.apkbus.com/thread-589022-1-1.html
 Android人脸识别Demo竖屏YUV方向调整和图片保存(分享)- http://www.jb51.net/article/131299.htm
 使用GLSurfaceView预览Camera 基础拍照demo;GLSurfaceView做Camera预览
OpenGL预览摄像头- https://download.csdn.net/download/a296777513/9786330
 GLSurfaceView预览图像,一些滤镜处理和OpenGLES进阶Demo- https://github.com/lb377463323/GraphicsTestBed
 渲染多个视频流数据,微信视频聊天- https://github.com/296777513/AndroidOpenGL
 
  通过在C++层实现YUV-RGB转换,通过OpenGL绘制,通过片段着色器运行Shader脚本实现图像处理,虽然将滤镜的一些处理交给GPU来执行,极大的减少了速度,但YUV-RGB过程却拖了后腿。GLSL(GL Shading Language)的着色器代码分成2个部分:Vertex Shader(顶点着色器)和Fragment(片断着色器),有时还会有Geometry Shader(几何着色器)。负责运行顶点着色的是顶点着色器。它可以得到当前OpenGL 中的状态,GLSL内置变量进行传递。GLSL其使用C语言作为基础高阶着色语言,避免了使用汇编语言或硬件规格语言的复杂性。
  GPUImage for Android- https://github.com/CyberAgent/android-gpuimage

GL的Program/Shader把用户传过来的YUV数据,转换成RGB数据后,通过Renderer贴在GLSurfaceView上。
利用ffmpeg解码视频帧,然后通过 shader 进行处理,再通过ffmpeg编码为视频
opengGL+ffmpeg,FFmpeg解码、OpenGL视频显示;RTSP取流+FFmpeg解码+OpenGL显示
1、https://github.com/htwahzs/Rtsp-Android-Client(RTSP取流)
2、http://blog.csdn.net/shikh/article/details/45345313(用FFmpeg解码)
3、http://blog.csdn.net/ueryueryuery/article/details/17608185(解码后的YUV数据显示)

1.android本身也不能直接显示YUV图像,YUV转成RGB还是必要的;
2.YUV手动转RGB会占用大量的CPU资源,如果以这样的形式播放视频,手机会很热,所以我们尽量让GPU来做这件事;

GLSurfaceView.getHolder().getSurface();.用openGL实现过贴图.
Rect rect =  mGLSurfaceView.getHolder().getSurfaceFrame();//获得当前SurfaceView上的帧.
通过Surface就可以获取raw buffer其中的内容。原生缓冲区(raw buffer)存储着当前窗口的像素数据。

-- 视频播放暂停时,OpenGL ES重绘SurfaceView  Android
Android Camera使用OpenGL ES 2.0和GLSurfaceView对预览进行实时处理(黑白滤镜)- http://blog.csdn.net/lb377463323/article/details/77071054
OpenGL ES总结(四)OpenGL 渲染视频画面- http://blog.csdn.net/hejjunlin/article/details/62976457
解决android opengl es绘制物体屏幕横竖屏切换物体压扁形变以及矩阵相关知识- http://blog.csdn.net/pangrui201/article/details/75452155

> VideoView
Android VideoView播放本地视频短暂黑屏的解决方法- https://blog.csdn.net/goodlixueyong/article/details/53590573
android 启动页VideoView 播放本地视频短暂黑屏解决- https://blog.csdn.net/dhl_1986/article/details/79063923
Android VideoView 播放黑屏- https://www.jianshu.com/p/d5a63a0af370

TextureView/SurfaceView/GLSurfaceView/VideoView渲染视频(点播播放器)相关推荐

  1. Android视频直播源码开发直播平台、点播播放器哪家强?

    Android视频直播源码开发直播平台.点播播放器哪家强? 最近在项目中要加入视频直播和点播功能,那么问题来了,我需要一个播放器来播放视频流,那该如何选择呢?除了原生的VideoView(VideoV ...

  2. 视频云:点播播放器和直播播放器冲突如何解决?

    1.问题 开发者有点播和直播都需要用,既有播放网络视频的需求也有直播播放视频流的需求,这个时候如果用户先集成了点播播放器再去集成直播播放器的时候会出现冲突报错. 2.解决方案 开发者仅仅使用直播播放器 ...

  3. LivePlayer.js免费直播、点播播放器如何自适应div宽高集成播放视频

    LivePlayer网页直播.点播播放器 资源下载:https://www.liveqing.com/docs/download/LivePlayer.html 使用说明:https://www.li ...

  4. 直播平台软件开发中选择点播播放器哪家强?

    直播平台软件开发中选择点播播放器哪家强? 太长不看版 这里选择了开源播放器IjkPlayer和直播云厂商播放器PLDroidPlayer作为测试样本. 数据统计 软硬编码 IjkPlayer PLDr ...

  5. YUVPlayer: 基于Android平台的YUV视频原始数据播放器

    基于Android平台的YUV视频原始数据播放器 编译环境 FFmpeg版本: 4.2.2 NDK版本:r17c 运行环境 x86(模拟器) arm64-v8a(64位手机) 功能点 从文件中读取YU ...

  6. html选择本地文件视频并播放器,使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file)...

    使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file) 在播放视频时,我无法让HTML5播放器播放不同的视频,我尝试更改 ...

  7. LivePlayer H5直播/点播播放器安装与使用

    LivePlayer H5播放器 简介 H5直播/点播播放器,使用简单,功能强大, 免费使用 支持m3u8播放; 支持HTTP-FLV播放; 支持RTMP播放; 支持直播和点播播放; 支持播放器快照截 ...

  8. 网页直播/点播播放器支持WebRTC/http-flv/rtmp/m3u8等直播流播放

    H5播放器 H5直播/点播播放器,使用简单,功能强大 支持WebRTC播放; 支持MP4播放; 支持m3u8/HLS播放; 支持HTTP-FLV/WS-FLV播放; 支持RTMP播放; 支持直播和点播 ...

  9. SkeyeWebPlayer免费网页RTSP/RTMP/FLV/HLS/H265/M3U8直播点播播放器-页面动态多播放器添加代码示例

    强大的网页直播/点播播放器 SkeyeWebPlayer,使用简单,功能强大, 终身免费使用,支持Windows. Android.iOS平台. SkeyeWebPlayer.js H5播放器是由成都 ...

最新文章

  1. 【转】Win7安装Oracle10g经验分享
  2. NLP 专题论文解读:从 Chatbot 到 NER | PaperDaily #11
  3. Boosting(提升方法)之GBDT
  4. spring里面 @Controller和@RestController注解的区别
  5. 前端学习(707):循环小结
  6. python中随机输入数字再排序
  7. 《三体》动画版官宣!B站出品 刘慈欣“倒吸一口凉气”
  8. 更改yum源配置后执行报错[Errno 14] PYCURL ERROR 22 - “The requested URL returned error: 404 Not Found”
  9. Vue2.0三——Vue-router
  10. 精心挑选的15款优秀 jQuery 文本特效插件和教程
  11. 三个箭头循环标志_摩托车6年免检,应该如何通过APP申请免检检验标志?
  12. 压缩文件的后缀html,压缩文件的扩展名是什么
  13. 编写优质嵌入式C程序
  14. SpringBoot(53) 整合canal实现数据同步
  15. 集群通信组件Tribes之整体介绍
  16. 智能化工厂数字化管理系统软件解决方案
  17. 新书推荐 | 数据流机器学习:MOA实例
  18. 学习《软件工程》心得
  19. Python制作CSDN数据中心——CSDN机器人访客
  20. 【算法设计与分析】C++回溯法求全排列

热门文章

  1. 从0开始写一个基于Flutter的开源中国客户端(5)——App整体布局框架搭建
  2. 组队竞赛-Java-牛客模拟三
  3. 深度学习调参技巧总结
  4. R统计绘图-PCA分析及绘制双坐标轴双序图
  5. VS之实现计时器的几种方法
  6. FMpeg分析4:AVStream
  7. 基于隐马尔科夫模型的道路匹配
  8. rtorrent一键安装脚本rtinst指定版本号
  9. 对变上下限积分函数的一般求导方法(如更新方程求导)
  10. centos7.5 定时任务不执行,定时任务日志报错信息为 MAIL (mailed 68 bytes of output but got status 0x004b#012)