# Android_Video_Audio
**Repository Path**: k_woo/android_video_audio
## Basic Information
- **Project Name**: Android_Video_Audio
- **Description**: 基于最新的VLC开源库封装,支持本地、在线音视频播放。
- **Primary Language**: Android
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2023-07-14
- **Last Updated**: 2023-07-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#Android音视频播放库V1.0.0
目前Android原生的VideoView等视频播放控件支持格式有限,且在部分机型上兼容性存在着问题,所以封装这个第三方库,该库根据VLC较新版本(2.0.2)进行封装(底层基于ffmpeg),目前支持音视频的在线、本地播放,也可自定义音视频播放界面,支持当今大多数媒体及视频格式。
支持功能如下,欢迎提出问题进行修改。
####视频
* 支持单个视频的播放、暂停、播放进度条拖动、标题显示
* 支持主流视频格式
* 兼容性好,目前测试了主流版本和手机,暂时没发现问题,如果有问题请反馈给我进行修改
* 支持自定义播放界面,提供类似于VideoView对视频画面进行控制
####音频
* 支持单个音频播放、暂停
* 支持主流的音频格式
* 支持自定义播放器,提供音频控制器(AudioPlayerControl)对音频进行控制
####重要!!!使用之前请仔细阅读下面几点,避免踩坑.
* 对于6.0及以上系统(sdk>=23),在播放本地音视频之前,请先申请访问读取外部存储运行时权限(READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE)
* 目前支持的手机架构包括armeabi-v7a、armeabi-v8a,如果有用到极少数的x86、mips架构,请联系我加入相应架构的so库
* 对于buid.gradle中配置了ndk支持的架构,请小心使用,最好配置一个v7a支持,不然可能会有问题。
*
ndk {
//设置支持的SO库架构
abiFilters 'armeabi-v7a'//, 'arm64-v8a'
}
##视频播放使用步骤
### 1.使用默认播放器进行视频播放
//视频播放路径
String path = localVideoEt.getText().toString().trim();
//播放界面所需参数对象
PlayerPara para = new PlayerPara(path);
//设置播放进度条不可拖动
para.setDragSeekBar(false);
//跳转播放界面进行视频播放
VideoPlayerActivity.gotoVideoPlayerActivity(MainActivity.this, para);
######视频播放支持如下属性设置
//播放地址 必传
private String path;
//标题 不传不进行显示
private String title;
//是否能拖动进度条 默认为true
private boolean isDragSeekBar = true;
//工具栏显示时 隐藏工具栏时间 单位毫秒 默认 8s
private int hideOverLayLength = 8000;
######效果图如下:

### 2.自定义播放界面实现视频播放
######自己写好播放界面样式,引入自定义播放控件VideoView(提供了跟官方类似的功能)
######设置播放路径,交由VideoView控制播放画面
if(isLocalPath(mPlayerPara.getPath())) {
//设置本地播放路径
mPlayerView.setVideoPath(mPlayerPara.getPath());
} else {
//设置在线播放路径
mPlayerView.setVideoURI(Uri.parse(mPlayerPara.getPath()));
}
//设置播放画面状态监听
mPlayerView.setOnChangeListener(this);
//开始播放
mPlayerView.start();
######VideoView提供了如下对视频操作接口
//是否在播放
boolean isPlaying();
//是否能快进
boolean isSeekAble();
//播放
void play();
//暂停
void pause();
//停止
void stop();
//获取当前的播放状态
int getPlayerState();
//获取当前音量大小
int getVolume();
//调节音量
int setVolume(int volume);
//获取资源长度
long getLength();
//获取当前播放进度
long getCurrentPosition();
//资源释放
void release();
//跳到某个播放时间点
void seekTo(int milliSeconds);
##音频播放使用步骤
### 1.使用默认播放器进行音频播放
######引入自定义音频播放控件
######设置播放路径开始播放
//获取音频播放路径
mAudioView = (AudioPlayerView)findViewById(R.id.audio_player_view);
//设置音频播放路径,会自动判断本地或者在线路径
mAudioView.setPath(mCurrentUrl);
//开始播放
mAudioView.start();
######效果图如下:

### 2.自定义播放界面实现音频播放
######自定义音频播放布局,初始化音频播放控制器,该控制器实现了上述所有的视频操作接口
//初始化音频播放控制器,需传入播放path
mAudioPlayerControl = new AudioPlayerControl(mCurrentUrl);
//设置音频播放监听
mAudioPlayerControl.setOnChangeListener(this);
//开始进行音频播放
mAudioPlayerControl.play();
#####由于第一个版本支持的功能不多,后续将支持下面列举的更多功能
####视频
* 支持对多个视频的播放
* 支持窗口横竖屏,放大缩小等
* 支持音量调节、亮度调节、快进手势操作
* 支持同一个视频分高清、普清等选择
* 支持屏幕锁定功能
####音频
* 支持多个音频播放
* 支持App退出后仍然能播放、播放界面显示在通知栏中