... | @@ -6,7 +6,7 @@ |
... | @@ -6,7 +6,7 @@ |
|
|
|
|
|
1.在Project的build.gradle文件中配置。
|
|
1.在Project的build.gradle文件中配置。
|
|
|
|
|
|
```
|
|
```groovy
|
|
allprojects {
|
|
allprojects {
|
|
repositories {
|
|
repositories {
|
|
google()
|
|
google()
|
... | @@ -21,7 +21,7 @@ allprojects { |
... | @@ -21,7 +21,7 @@ allprojects { |
|
|
|
|
|
2.在App的build.gradle的文件中添加依赖,注意:在多module的情况下需要传递依赖时将implementation换成api。
|
|
2.在App的build.gradle的文件中添加依赖,注意:在多module的情况下需要传递依赖时将implementation换成api。
|
|
|
|
|
|
```
|
|
```groovy
|
|
dependencies {
|
|
dependencies {
|
|
//获得场景视频SDK,必须引入
|
|
//获得场景视频SDK,必须引入
|
|
implementation 'com.bokecc:CCVOD:3.16.6'
|
|
implementation 'com.bokecc:CCVOD:3.16.6'
|
... | @@ -45,7 +45,7 @@ dependencies { |
... | @@ -45,7 +45,7 @@ dependencies { |
|
|
|
|
|
在App的build.gradle的文件中配置:
|
|
在App的build.gradle的文件中配置:
|
|
|
|
|
|
```
|
|
```groovy
|
|
android {
|
|
android {
|
|
|
|
|
|
//使用投屏功能时需要添加此配置
|
|
//使用投屏功能时需要添加此配置
|
... | @@ -58,7 +58,7 @@ android { |
... | @@ -58,7 +58,7 @@ android { |
|
|
|
|
|
在AndroidManifest.xml中配置:
|
|
在AndroidManifest.xml中配置:
|
|
|
|
|
|
```
|
|
```groovy
|
|
<!--使用投屏功能时需要配置ProjectionUpnpService-->
|
|
<!--使用投屏功能时需要配置ProjectionUpnpService-->
|
|
<service
|
|
<service
|
|
android:name="com.bokecc.projection.ProjectionUpnpService"
|
|
android:name="com.bokecc.projection.ProjectionUpnpService"
|
... | @@ -75,7 +75,7 @@ android { |
... | @@ -75,7 +75,7 @@ android { |
|
|
|
|
|
## 3.2 配置项目的网络权限和文件读写权限:
|
|
## 3.2 配置项目的网络权限和文件读写权限:
|
|
|
|
|
|
```
|
|
```groovy
|
|
<!-- 用于网络通信 -->
|
|
<!-- 用于网络通信 -->
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<!-- 用于存储已下载文件 -->
|
|
<!-- 用于存储已下载文件 -->
|
... | @@ -88,13 +88,13 @@ SDK视频播放由DWMediaPlayer类实现,使用DWMediaPlayer既可播放获得 |
... | @@ -88,13 +88,13 @@ SDK视频播放由DWMediaPlayer类实现,使用DWMediaPlayer既可播放获得 |
|
|
|
|
|
从3.16.1版本开始,需要在播放器初始化之前调用,若未正常调用,SDK则会抛出RuntimeException。
|
|
从3.16.1版本开始,需要在播放器初始化之前调用,若未正常调用,SDK则会抛出RuntimeException。
|
|
|
|
|
|
```
|
|
```java
|
|
InitializeManager.getInstance(getContext()).initialize();
|
|
InitializeManager.getInstance(getContext()).initialize();
|
|
```
|
|
```
|
|
|
|
|
|
在自定义的HuodeApplication(这个类名可以自定义)启动DRMServer:
|
|
在自定义的HuodeApplication(这个类名可以自定义)启动DRMServer:
|
|
|
|
|
|
```
|
|
```java
|
|
public class HuodeApplication extends Application {
|
|
public class HuodeApplication extends Application {
|
|
|
|
|
|
private static DRMServer drmServer;
|
|
private static DRMServer drmServer;
|
... | @@ -168,7 +168,7 @@ public class HuodeApplication extends Application { |
... | @@ -168,7 +168,7 @@ public class HuodeApplication extends Application { |
|
|
|
|
|
在AndroidManifest.xml文件中配置自定义的HuodeApplication:
|
|
在AndroidManifest.xml文件中配置自定义的HuodeApplication:
|
|
|
|
|
|
```
|
|
```groovy
|
|
<application
|
|
<application
|
|
android:name=".HuodeApplication"
|
|
android:name=".HuodeApplication"
|
|
android:allowBackup="true"
|
|
android:allowBackup="true"
|
... | @@ -185,7 +185,7 @@ public class HuodeApplication extends Application { |
... | @@ -185,7 +185,7 @@ public class HuodeApplication extends Application { |
|
|
|
|
|
1. 配置布局文件
|
|
1. 配置布局文件
|
|
|
|
|
|
```
|
|
```groovy
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
android:layout_width="match_parent"
|
|
android:layout_width="match_parent"
|
... | @@ -201,7 +201,7 @@ public class HuodeApplication extends Application { |
... | @@ -201,7 +201,7 @@ public class HuodeApplication extends Application { |
|
|
|
|
|
2. 编写播放代码
|
|
2. 编写播放代码
|
|
|
|
|
|
```
|
|
```java
|
|
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener, DWMediaPlayer.OnPreparedListener {
|
|
public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener, DWMediaPlayer.OnPreparedListener {
|
|
private TextureView tv_paly_video;
|
|
private TextureView tv_paly_video;
|
|
private SurfaceTexture mTexture;
|
|
private SurfaceTexture mTexture;
|
... | @@ -272,7 +272,7 @@ public class MainActivity extends AppCompatActivity implements TextureView.Surfa |
... | @@ -272,7 +272,7 @@ public class MainActivity extends AppCompatActivity implements TextureView.Surfa |
|
|
|
|
|
DWMediaPlayer提供了getDefinitions()方法获取当前播放的视频清晰度列表。如果需要切换视频的清晰度,可根据当前视频的清晰度对DWMediaPlayer进行设置。具体实现方式如下:
|
|
DWMediaPlayer提供了getDefinitions()方法获取当前播放的视频清晰度列表。如果需要切换视频的清晰度,可根据当前视频的清晰度对DWMediaPlayer进行设置。具体实现方式如下:
|
|
|
|
|
|
```
|
|
```java
|
|
// 获取清晰度列表
|
|
// 获取清晰度列表
|
|
Map<String, Integer> definitions = player.getDefinitions();
|
|
Map<String, Integer> definitions = player.getDefinitions();
|
|
// 获取某种清晰度对应的状态码
|
|
// 获取某种清晰度对应的状态码
|
... | @@ -286,7 +286,7 @@ player.setDefinition(context, definitionCode); |
... | @@ -286,7 +286,7 @@ player.setDefinition(context, definitionCode); |
|
|
|
|
|
DWMediaPlayer获取播放地址产生的异常需要通过OnDreamWinErrorListener来获取异常,需要用户自行设置该监听。
|
|
DWMediaPlayer获取播放地址产生的异常需要通过OnDreamWinErrorListener来获取异常,需要用户自行设置该监听。
|
|
|
|
|
|
```
|
|
```java
|
|
// 设置错误信息监听器player.setOnDreamWinErrorListener(...)
|
|
// 设置错误信息监听器player.setOnDreamWinErrorListener(...)
|
|
```
|
|
```
|
|
|
|
|
... | @@ -294,7 +294,7 @@ DWMediaPlayer获取播放地址产生的异常需要通过OnDreamWinErrorListene |
... | @@ -294,7 +294,7 @@ DWMediaPlayer获取播放地址产生的异常需要通过OnDreamWinErrorListene |
|
|
|
|
|
在使用DWMediaPlayer播放本地视频时,使用setOfflineVideoPath设置视频文件地址。具体实现方式如下:
|
|
在使用DWMediaPlayer播放本地视频时,使用setOfflineVideoPath设置视频文件地址。具体实现方式如下:
|
|
|
|
|
|
```
|
|
```java
|
|
String path = "/123456.pcm";
|
|
String path = "/123456.pcm";
|
|
DWMediaPlayer player = new DWMediaPlayer();
|
|
DWMediaPlayer player = new DWMediaPlayer();
|
|
// 播放pcm加密视频需要设置此行设置,播放非加密的mp4不需要此行设置player.setDRMServerPort(HuodeApplication.getDrmServerPort());
|
|
// 播放pcm加密视频需要设置此行设置,播放非加密的mp4不需要此行设置player.setDRMServerPort(HuodeApplication.getDrmServerPort());
|
... | @@ -321,7 +321,7 @@ SDK视频上传由Uploader类实现,Uploader通过HTTP协议与服务端进行 |
... | @@ -321,7 +321,7 @@ SDK视频上传由Uploader类实现,Uploader通过HTTP协议与服务端进行 |
|
|
|
|
|
创建Uploader实例需提供VideoInfo(视频信息)和 API_KEY,使用示例如下:
|
|
创建Uploader实例需提供VideoInfo(视频信息)和 API_KEY,使用示例如下:
|
|
|
|
|
|
```
|
|
```java
|
|
VideoInfo videoInfo = new VideoInfo();
|
|
VideoInfo videoInfo = new VideoInfo();
|
|
videoInfo.setTitle("title");
|
|
videoInfo.setTitle("title");
|
|
videoInfo.setTags("tag");
|
|
videoInfo.setTags("tag");
|
... | @@ -344,7 +344,7 @@ VideoInfo是用来记录上传过程与视频相关的信息,在初始化视 |
... | @@ -344,7 +344,7 @@ VideoInfo是用来记录上传过程与视频相关的信息,在初始化视 |
|
|
|
|
|
Uploader在执行上传操作时,默认会检查是否设置了UploadListener。若已设置UploadListener,Uploader会回调UploadListener已实现的方法,若未设置,则不回调任何信息。UploadListener具体使用方法如下:
|
|
Uploader在执行上传操作时,默认会检查是否设置了UploadListener。若已设置UploadListener,Uploader会回调UploadListener已实现的方法,若未设置,则不回调任何信息。UploadListener具体使用方法如下:
|
|
|
|
|
|
```
|
|
```java
|
|
UploadListener uploadListener = new UploadListener(){
|
|
UploadListener uploadListener = new UploadListener(){
|
|
@Override
|
|
@Override
|
|
public void handleProcess(long range, long size, String videoId) {
|
|
public void handleProcess(long range, long size, String videoId) {
|
... | @@ -386,7 +386,7 @@ SDK视频下载由Downloader类实现的,Downloader通过HTTP协议与服务 |
... | @@ -386,7 +386,7 @@ SDK视频下载由Downloader类实现的,Downloader通过HTTP协议与服务 |
|
|
|
|
|
创建Downloader实例需提供视频存储文件,视频ID、账户ID、API_KEY,示例如下:
|
|
创建Downloader实例需提供视频存储文件,视频ID、账户ID、API_KEY,示例如下:
|
|
|
|
|
|
```
|
|
```java
|
|
//提供一个下载路径
|
|
//提供一个下载路径
|
|
String downloadPath = "/storage/emulated/0/HuodeDownload/";
|
|
String downloadPath = "/storage/emulated/0/HuodeDownload/";
|
|
//fileName是文件名,例如“huode”。注意:此文件名不包括后缀名,后缀名会根据云端视频文件格式自动设置。
|
|
//fileName是文件名,例如“huode”。注意:此文件名不包括后缀名,后缀名会根据云端视频文件格式自动设置。
|
... | | ... | |