Giter VIP home page Giter VIP logo

zuilintan / wlmedia Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wanliyang1990/wlmedia

0.0 0.0 0.0 244.13 MB

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

License: Apache License 2.0

Java 100.00%

wlmedia's Introduction

wlmedia

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

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

注:免费版右下角有水印,若需去水印请联系(email:[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右侧上下滑动事件
		}
	});

四、博客详解

五、讨论群(1085618246)


六、混淆

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

七、参考资料

八、核心三方库

Create By:ywl5320 2019-12-16

wlmedia's People

Contributors

wanliyang1990 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.