• Stars
    star
    743
  • Rank 61,046 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android 音视频播放器SDK,几句代码即可实现音视频播放功能(支持:手机、车机系统、电视盒子等设备。支持:http、https、rtsp、rtp、rtmp、byte[]、加密视频和各种文件格式视频;包含视频截图、音轨选择、字幕选择、循环播放、设置软解或硬解、透明视频、变速变调、声道切换、无缝切换surface(surfaceview和textureview)、多Surface渲染、视频比例设置、多实例音视频播放等。)~

wlmedia

Android 音视频播放SDK,几句代码即可实现音视频播放功能~

功能丰富,支持手机、电视盒子、手表等智能设备。

有意购买源码请联系:[email protected]

一、功能特点

  • 兼容androidx和support库
  • 基本信息获取(音频:采样率、声道数、时长等,视频:宽、高、fps、时长等)
  • 支持file、http、https、rtmp、rtp、rtsp、byte[]等
  • 可选音频、视频、音视频播放模式
  • 软解硬解设置
  • 无缝切换surface(也可自定义surfaceview、textureview)
  • 支持多实例播放
  • 支持媒体自由切换
  • 支持FFmpeg参数设置
  • 支持byte[]数据解码
  • 支撑音视频变速变调
  • 支撑透明视频播放(可实现不错的视觉效果)
  • 字幕选择
  • 内置循环播放
  • 链接超时设置
  • 缓存大小设置(按时间、内存和队列设置)
  • 音视频加密播放
  • 音轨选择
  • 音频声道选择
  • 音频PCM数据和实时分贝获取
  • 音频指定采样率设置
  • 视频截屏
  • 视频首帧图片或指定时间图片获取
  • 视频任意比例设置
  • 视频旋转角度设置(0,90,180,270)
  • 视频shader自定义视频滤镜(动态设置)
  • 视频背景颜色设置(默认黑色)

二、实例展示

三、集成使用

3.1

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

dependencies {
        implementation 'com.github.wanliyang1990:wlmedia:2.0.0'
}

3.2 常用权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

3.2 配置NDK编译平台

defaultConfig {
    ...
    ndk {
        abiFilter("arm64-v8a")
        abiFilter("armeabi-v7a")
        abiFilter("x86")
        abiFilter("x86_64")
        }
    ...
    }

3.3 API

3.3.1 视频Surface

    // WlSurfaceView 一般播放使用
    <com.ywl5320.wlmedia.surface.WlSurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    
    // WlTextureView 需要做透明、移动、旋转等使用
    <com.ywl5320.wlmedia.surface.WlTextureView
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

3.3.2 基础调用代码(更多功能见Demo)

    WlSurfaceView wlSurfaceView = findViewById(R.id.wlsurfaceview);
	WlMedia wlMedia = new WlMedia();
	wlMedia.setSource(url);
	wlSurfaceView.setWlMedia(wlMedia);

	wlMedia.setOnMediaInfoListener(new WlOnMediaInfoListener() {
		@Override
		public void onPrepared() {
			//异步准备好后开始播放
			wlMedia.start();
		}

		@Override
		public void onError(int code, String msg) {
			//错误回调,主要用于查看错误信息

		}

		@Override
		public void onComplete(WlComplete type, String msg) {
			//播放完成(包含:正常播放完成、超时播放完成、手动触发播放完成等)

		}

		@Override
		public void onTimeInfo(double currentTime, double bufferTime) {
			//时间回调,当前时间和缓冲时间

		}

		@Override
		public void onSeekFinish() {
			//seek完成后回调,可用于类似iptv这种快进快退
		}

		@Override
		public void onLoopPlay(int loopCount) {
			//循环播放此时回调
		}

		@Override
		public void onLoad(boolean load) {
			//加载状态回调
		}

		@Override
		public byte[] decryptBuffer(byte[] encryptBuffer) {
			return new byte[0];
		}

		@Override
		public byte[] readBuffer(int read_size) {
			return new byte[0];
		}

		@Override
		public void onPause(boolean pause) {
			//暂停回调
		}
	});

	wlSurfaceView.setOnVideoViewListener(new WlOnVideoViewListener() {
		@Override
		public void initSuccess() {
			//surfaceview初始化完成
			wlMedia.prepared();
		}

		@Override
		public void onSurfaceChange(int width, int height) {
			//surfaceview大小改变
		}

		@Override
		public void moveX(double value, int move_type) {
			//surfaceview横向左右滑动
		}

		@Override
		public void onSingleClick() {
			//surfaceview单击事件
		}

		@Override
		public void onDoubleClick() {
			//surfaceview双击事件
		}

		@Override
		public void moveLeft(double value, int move_type) {
			//surfaceview左侧上下滑动事件
		}

		@Override
		public void moveRight(double value, int move_type) {
			//surfaceview右侧上下滑动事件
		}
	});

四、博客详解

wlmedia播放器集成(1)— 播放器集成

wlmedia播放器集成(2)— 常用自定义view

wlmedia播放器集成(3)— 常用api

wlmedia播放器集成(4)— 实现视频播放

五、讨论群(1085618246)


六、混淆

-keep class com.ywl5320.wlmedia.* {*;} 

七、参考资料

我的视频课程(基础):《(NDK)FFmpeg打造Android万能音频播放器》

我的视频课程(进阶):《(NDK)FFmpeg打造Android视频播放器》

我的视频课程(编码直播推流):《Android视频编码和直播推流》

我的视频课程(C++ OpenGL):《Android C++ OpenGL》

测试音视频文件地址(提取码:ivbh)

八、核心三方库

FFmpeg

OpenSSL

SoundTouch

Create By:ywl5320 2019-12-16

More Repositories

1

wlmusic

基于FFmpeg + OpenSL ES的音频播放SDK。可循环不间断播放短音频;播放raw和assets音频文件;可独立设置音量大小;可实时现在音量分贝大小(用于绘制波形图);可改变音频播放速度和音调(变速不变调、变调不变速、变速又变调);可设置播放声道(左声道、右声道和立体声);可边播边录留住美好音乐;可裁剪指定时间段的音频,制作自己的彩铃;还可以从中获取音频原始PCM数据(可指定采样率),方便二次开发等。
Java
589
star
2

wlplayer

NDK+FFmpeg+OpenSL+OpenGL+Mediacodec 的视频播放SDK源码和实例APP,很适合学习ffmpeg解码流程和Android中NDK实战开发
C
499
star
3

AppServiceRestFul

Spring MVC RESTFUL接口实例和android测试客户端,包含注册、登录、支付宝支付、微信支付、增量更新等。
Java
182
star
4

NavigationBar

标题导航栏,两三句代码即可实现
Java
130
star
5

PayPwdEditText

支付密码框,和微信支付宝类似
Java
109
star
6

FFmpeg-Android

FFmpeg(3.3.2)移植Android平台-例子
C
72
star
7

AdViewPager

ViewPager左右无限轮播实现,可用作Banner导航或广告
Java
56
star
8

Android_OpenSl_Audio

Android利用OpenSL ES通过assets、Uri和pcm文件的方式来播放音频。
C++
53
star
9

Android-JniThread

Android-Jni线程操作,包括:一般线程的创建、互斥锁、全局Listener调用java方法达到回调效果。
C++
44
star
10

SoundTouch_OpenSL_Android

Android中用OpenSL ES来播放SoundTouch转换后的PCM数据
C++
31
star
11

RxjavaRetrofit

Rxjava + Retrofit网络访问
Java
29
star
12

BsDiffYwl5320

增量更新-服务端(windows、Linux)、客户端(android)源码和动态库和jar包
C
29
star
13

CSDNDemos

CSDN博客demo
Java
28
star
14

AndroidPickPhotoDialog

Java
23
star
15

rxbusDemo

Android中的RxBus,可设置tag和制定运行的线程,消息传递,简单实用
Java
19
star
16

AndroidCircleMenu

Android圆形旋转菜单
Java
18
star
17

BottomNavTabs

Android底部功能导航和圆点提示封装
Java
13
star
18

Android-OpenGL-ES

介绍Android中OpenGL ES(v2.0)的使用方法和实例
Java
13
star
19

SDL2ForAndroid

Android平台编译SDL2
C
11
star
20

OpenSL-ES-Record

Android利用OpenSL ES录制PCM音频数据,并保存到本地。
C++
11
star
21

RecyclerViewHeaderAndFooter

RecyclerView添加头部和尾部,并添加上拉加载更多回调方法。
Java
10
star
22

FFmpeg-SDL2PlayerSDK

C
10
star
23

JniThread_mult

Android C++多线程按顺序退出并释放资源
C++
9
star
24

SDLforAndroidAS

SDL用Cmake编译到Android平台
C
8
star
25

AndroidMultiChannelPackaging-MFC

2
star