android ijkplayer简单使用
class VideoPlayer : FrameLayout, TextureView.SurfaceTextureListener{
private var url:String? = null
private var headers:Map<String,String>? = null
private var mediaPlayer: IMediaPlayer? = null //播放器
private var container: FrameLayout? = null //播放器根目录
private var textureView: TextureView? = null //视频显示视图
private var surfaceTexture: SurfaceTexture? = null
private var playerType:Int = PlayerTypes.TYPE_IJK
private var surface: Surface? = null
constructor(context: Context, attributeSet: AttributeSet):super(context,attributeSet){
init()
}
/**
* 设置播放器类型
*
* @param playerType IjkPlayer or MediaPlayer.
*/
fun setPlayerType(playerType: Int) {
this.playerType = playerType
}
fun setUp(url:String,headers:Map<String,String>?){
this.url = url
this.headers = headers
}
fun start(){
mediaPlayer?.start()
}
private fun init(){
container = FrameLayout(context)
this.removeView(container)
val params = LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT
)
this.addView(container,params)
initTextureView()
initMediaPlayer()
}
private fun initTextureView(){
if(textureView == null){
textureView = TextureView(context)
textureView?.surfaceTextureListener = this
}
container?.removeView(textureView)
val params = LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT,
Gravity.CENTER
)
container?.addView(textureView,0,params)
}
private fun initMediaPlayer(){
if(mediaPlayer == null){
when(playerType){
PlayerTypes.TYPE_IJK -> mediaPlayer = IjkMediaPlayer()
PlayerTypes.TYPE_NATIVE -> mediaPlayer = AndroidMediaPlayer()
else -> mediaPlayer = IjkMediaPlayer()
}
}
mediaPlayer?.setOnVideoSizeChangedListener { player, w, h, sar_num, sar_den ->
Log.d("======","setOnVideoSizeChangedListener")
}
mediaPlayer?.setOnErrorListener { player, what, extra ->
Log.d("======","setOnErrorListener")
true
}
mediaPlayer?.setOnCompletionListener {
Log.d("======","setOnCompletionListener")
}
mediaPlayer?.setOnPreparedListener {
Log.d("======","setOnPreparedListener")
}
mediaPlayer?.setOnInfoListener { player, what, extra ->
Log.d("======","setOnInfoListener")
true
}
mediaPlayer?.setOnBufferingUpdateListener { player, percent ->
Log.d("======","setOnBufferingUpdateListener")
}
openMediaPlayer()
}
private fun openMediaPlayer(){
mediaPlayer?.setDataSource(context, Uri.parse(url),headers)
mediaPlayer?.prepareAsync()
}
override fun onSurfaceTextureSizeChanged(p0: SurfaceTexture?, p1: Int, p2: Int) {
}
override fun onSurfaceTextureUpdated(p0: SurfaceTexture?) {
}
override fun onSurfaceTextureDestroyed(p0: SurfaceTexture?): Boolean {
return p0 == null
}
override fun onSurfaceTextureAvailable(p0: SurfaceTexture?, p1: Int, p2: Int) {
if(surfaceTexture == null){
surfaceTexture = p0
if(surface == null){
surface = Surface(surfaceTexture)
}
mediaPlayer?.setSurface(surface)
}else{
textureView?.surfaceTexture = surfaceTexture
}
}
}
就是简单实现播放功能,其他的以后在添加
video_view.setPlayerType(PlayerTypes.TYPE_IJK)
video_view.setUp(VideoDatas.videoUrls[2],null)
video_view.start()
android ijkplayer简单使用的更多相关文章
- Android 实现简单音乐播放器(二)
在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...
- Android 实现简单音乐播放器(一)
今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...
- Android课程---Android Studio简单设置
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...
- Android实现简单音乐播放器(MediaPlayer)
Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...
- Android实现简单拨号器
Android实现简单拨号器 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 界面布局只有GridLayout和EditText两个控件,全部 ...
- 【转】Android Studio简单设置
原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...
- Android发展简单介绍
Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...
- android JNI 简单demo(2)它JNI demo 写
android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...
- Android Studio简单设置(转)
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Th ...
随机推荐
- ..\OBJ\LED.axf: Error: L6218E: Undefined symbol EXTI_Init (referred from exti.o). 错误修改
今天在移植野火的程序到元子的开发平台上时候,发现自己在中断初话中断函数的时候出现了:..\OBJ\LED.axf: Error: L6218E: Undefined symbol EXTI_Init ...
- 期末项目之 Json文件
Github上的json文件: https://raw.githubusercontent.com/color-me/first/master/b
- VUE- 解决插件报错问题
VUE- 解决插件报错问题 解决办法:先删除node_modules整个文件夹,然后cnpm cache clean,然后cnpm install. cnpm cache clean时可能会提示 这 ...
- potplayer记住播放进度
(右键——选项)F5——播放——记忆视频播放位置
- 2020年使用Delphi的25个理由(我觉得四个优点:控件+可视化开发+跨平台+数据库,还有一个编译快,运行快)——人生苦短,我用Delphi!
25年后从10个使用Delphi的理由到1个至25个使用Delphi 10.3的理由 25年前发布Delphi 1时,我汇总了使用Delphi的十大理由.这是我精通Delphi原始书的序言中的原始列表 ...
- Maven相关:mvn的配置和简单命令
1.配置mvn: 点击链接 http://maven.apache.org/download.cgi 下载 解压到文件夹: 配置系统环境变量: 测试:mvn -v 2.mvn命令: 1. 显示版本信息 ...
- Java if、switch语句,break,case,类型转换、常量、赋值比较、标识符(2)
if语句: /* if else 结构 简写格式: 变量 = (条件表达式)?表达式1:表达式2: 三元运算符: 好处:可以简化if else代码. 弊端:因为是一个运算符,所以运算完必须要有一个结果 ...
- 107.JsonResponse
JsonResponse类: 用来dump字符串成json字符串,然后返回将json字符串封装成Response对象返回给浏览器,并且它的Content-Type是application/json.示 ...
- sklearn 模型评估
原文链接 http://d0evi1.com/sklearn/model_evaluation/ 预测值:pred 真实值:y_test #### 直接用平均值 ``` mean(pred == y_ ...
- share团队冲刺2
团队冲刺第二天 昨天:在网上学习app开发的简单操作代码,实现了简单的输出界面,学会了添加按钮控件. 今天:继续昨天的进度,先进行登陆界面窗口的制作. 问题:目前只能在activity添加简单代码,复 ...