Skip to content
This repository has been archived by the owner on Apr 30, 2023. It is now read-only.

Commit

Permalink
加入了VideoWithFlvParser
Browse files Browse the repository at this point in the history
  • Loading branch information
LeonNOV committed Apr 5, 2021
1 parent f1655f8 commit 81e0c6e
Show file tree
Hide file tree
Showing 25 changed files with 290 additions and 232 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@
/build
/captures
.externalNativeBuild
.cxx
.cxx
/dkplayer-ijk
/dkplayer-java
/dkplayer-ui
/constants.gradle
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
### 2021/04/05
- 播放器已基本完成,该版本的视频播放器还存在问题
- **该版本在调整了视频的位置后会出现音画不同步的问题**
- 加入了`VideoWithFlvParser`
- 由于实在找不到音画同步播放的方法,所以该版本放弃了使用`dash`的方式获取数据流
- 由于未使用`dash`的方式获取数据流,所以该版本在不登陆的情况下最高只能获取`480p`画质的视频

### 2021/04/04
- 该项目现已上传至[GitHub](https://github.com/LeonNOV/BiuVideo)
Expand Down
4 changes: 3 additions & 1 deletion app/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/build
/release
/src/main/java/com/leon/biuvideo/values/apis/AmapKey.java
/src/main/java/com/leon/biuvideo/values/apis/AmapKey.java
src\main\java\com\leon\biuvideo\ui\resourcesFragments\BiuVideoPlayerWithAudio.java
src\main\java\com\leon\biuvideo\ui\resourcesFragments\BiuVideoPlayerFactory.java
14 changes: 8 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,12 @@ dependencies {
implementation 'org.greenrobot:greendao:3.3.0'

// DKPlayer
// implementation 'com.github.dueeeke.dkplayer:dkplayer-java:3.2.6'
// implementation 'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.6'
// implementation 'com.github.dueeeke.dkplayer:player-ijk:3.2.6'
implementation project(path: ':dkplayer-java')
implementation project(path: ':dkplayer-ui')
implementation project(path: ':dkplayer-ijk')
implementation 'com.github.dueeeke.dkplayer:dkplayer-java:3.2.6'
implementation 'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.6'
implementation 'com.github.dueeeke.dkplayer:player-ijk:3.2.6'

// 自定义时使用
// implementation project(path: ':dkplayer-java')
// implementation project(path: ':dkplayer-ui')
// implementation project(path: ':dkplayer-ijk')
}
3 changes: 2 additions & 1 deletion app/src/main/java/com/leon/biuvideo/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.app.Application;

import com.dueeeke.videoplayer.ijk.IjkPlayerFactory;
import com.dueeeke.videoplayer.player.VideoViewConfig;
import com.dueeeke.videoplayer.player.VideoViewManager;
import com.leon.biuvideo.ui.resourcesFragments.BiuVideoPlayerFactory;
Expand Down Expand Up @@ -35,7 +36,7 @@ public void onException(Exception e) {
VideoViewManager
.setConfig(VideoViewConfig
.newBuilder()
.setPlayerFactory(BiuVideoPlayerFactory.create())
.setPlayerFactory(IjkPlayerFactory.create())
.build());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.leon.biuvideo.beans.mediaBeans.videoBeans;

import java.util.LinkedHashMap;
import java.util.List;

/**
* @Author Leon
* @Time 2021/4/5
* @Desc 单视频数据(flv方式)
*/
public class VideoWithFlv {
public int currentQualityId;
public LinkedHashMap<Integer, String> qualityMap;

/**
* 分段视频信息
*/
public List<VideoStreamInfo> videoStreamInfoList;

public static class VideoStreamInfo {
/**
* 视频分段序号
*/
public int order;
public String size;

/**
* 默认视频流
*/
public String url;

/**
* 备用视频流
*/
public String[] backupUrl;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import com.leon.biuvideo.utils.dataBaseUtils.DownloadRecordsDatabaseUtils;
import com.leon.biuvideo.utils.dataBaseUtils.LocalOrdersDatabaseUtils;
import com.leon.biuvideo.utils.downloadUtils.ResourceUtils;
import com.leon.biuvideo.utils.parseDataUtils.mediaParseUtils.MediaParser;
import com.leon.biuvideo.utils.parseDataUtils.mediaParseUtils.VideoWithFlvParser;
import com.leon.biuvideo.utils.parseDataUtils.searchParsers.BangumiParser;
import com.leon.biuvideo.utils.parseDataUtils.searchParsers.BangumiStateParse;
import com.leon.biuvideo.values.LocalOrderType;
Expand Down Expand Up @@ -75,7 +75,7 @@ public class BangumiActivity extends AppCompatActivity implements View.OnClickLi

private SimpleThreadPool simpleThreadPool;
private DownloadRecordsDatabaseUtils downloadRecordsDatabaseUtils;
private MediaParser mediaParser;
private VideoWithFlvParser videoWithFlvParser;
private LocalOrdersDatabaseUtils localOrdersDatabaseUtils;
private ImageView bangumi_imageView_favoriteMark;

Expand Down Expand Up @@ -264,15 +264,16 @@ public void onClick(View v) {
downloadRecordsDatabaseUtils = new DownloadRecordsDatabaseUtils(getApplicationContext());
}

if (mediaParser == null) {
mediaParser = new MediaParser();
if (videoWithFlvParser == null) {
// videoWithFlvParser = new VideoWithFlvParser();
}

// 如果番剧选集个数为1,则直接显示SingleVideoQualityDialog
if (isSingleAnthology) {
if (videoEntries == null) {

Play play = mediaParser.parseMedia(null, bangumi.eps.get(selectAnthologyIndex).cid, true);
// Play play = videoWithFlvParser.parseMedia(null, bangumi.eps.get(selectAnthologyIndex).cid, true);
Play play = null;

videoEntries = play.videoEntries();
for (Map.Entry<Integer, Media> entry : videoEntries) {
Expand Down Expand Up @@ -306,7 +307,8 @@ public void onDownload(int qualityId, long cid, int position, String subTitle) {
}

//获取视频选集信息
Play playWithDownload = mediaParser.parseMedia(null, cid, true);
// Play playWithDownload = videoWithFlvParser.parseMedia(null, cid, true);
Play playWithDownload = null;

if (playWithDownload == null) {
SimpleSnackBar.make(anthologyDownloadDialog.view, "获取不到该番剧的下载数据,可能该番剧有地区限制", SimpleSnackBar.LENGTH_SHORT).show();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
import com.leon.biuvideo.utils.dataBaseUtils.LocalOrdersDatabaseUtils;
import com.leon.biuvideo.utils.downloadUtils.ResourceUtils;
import com.leon.biuvideo.utils.ValueUtils;
import com.leon.biuvideo.values.LocalOrderType;
import com.leon.biuvideo.utils.parseDataUtils.resourcesParseUtils.MusicParser;
import com.leon.biuvideo.utils.parseDataUtils.resourcesParseUtils.MusicUrlParser;
import com.leon.biuvideo.values.LocalOrderType;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import com.bumptech.glide.Glide;
import com.leon.biuvideo.R;
import com.leon.biuvideo.adapters.FragmentViewPagerAdapter;
import com.leon.biuvideo.beans.userBeans.Follow;
import com.leon.biuvideo.beans.upMasterBean.BiliUserInfo;
import com.leon.biuvideo.ui.dialogs.LoadingDialog;
import com.leon.biuvideo.ui.fragments.userFragments.UserArticlesFragment;
Expand All @@ -30,9 +29,9 @@
import com.leon.biuvideo.ui.views.SimpleSnackBar;
import com.leon.biuvideo.utils.SimpleSingleThreadPool;
import com.leon.biuvideo.utils.ViewUtils;
import com.leon.biuvideo.utils.parseDataUtils.resourcesParseUtils.BiliUserInfoParser;
import com.leon.biuvideo.values.ImagePixelSize;
import com.leon.biuvideo.utils.dataBaseUtils.FavoriteUserDatabaseUtils;
import com.leon.biuvideo.utils.parseDataUtils.resourcesParseUtils.BiliUserInfoParser;
import com.ms.square.android.expandabletextview.ExpandableTextView;

import de.hdodenhof.circleimageview.CircleImageView;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
import com.leon.biuvideo.utils.ValueUtils;
import com.leon.biuvideo.utils.WebViewUtils;
import com.leon.biuvideo.values.LocalOrderType;
import com.leon.biuvideo.utils.parseDataUtils.mediaParseUtils.MediaParser;
import com.leon.biuvideo.utils.parseDataUtils.mediaParseUtils.VideoWithFlvParser;
import com.leon.biuvideo.utils.parseDataUtils.mediaParseUtils.ViewParser;
import com.ms.square.android.expandabletextview.ExpandableTextView;

Expand Down Expand Up @@ -99,7 +99,7 @@ public class VideoActivity extends AppCompatActivity implements View.OnClickList
private List<Map.Entry<Integer, Media>> audioEntries = null;

private SimpleThreadPool simpleThreadPool;
private MediaParser mediaParser;
private VideoWithFlvParser videoWithFlvParser;
private ViewParser viewParser;
private LoadingDialog loadingDialog;
private Handler handler;
Expand Down Expand Up @@ -177,12 +177,13 @@ public void run() {
}
viewPage = viewParser.parseView(bvid);

if (mediaParser == null) {
mediaParser = new MediaParser();
if (videoWithFlvParser == null) {
videoWithFlvParser = new VideoWithFlvParser(null, null);
}

//获取视频选集信息
play = mediaParser.parseMedia(bvid, viewPage.anthologyInfoList.get(0).cid, false);
// play = videoWithFlvParser.parseMedia(bvid, viewPage.anthologyInfoList.get(0).cid, false);
play = null;

Message message = handler.obtainMessage();
message.what = 0;
Expand Down Expand Up @@ -243,7 +244,8 @@ public void onClick(int position, long cid) {
anthologySelectedIndex = position;

//重置当前play变量
play = mediaParser.parseMedia(bvid, cid, false);
// play = videoWithFlvParser.parseMedia(bvid, cid, false);
play = null;
}
});

Expand Down Expand Up @@ -367,7 +369,7 @@ public void onFavoriteIcon(boolean addState) {
@Override
public void onDownload(int qualityId, long cid, int position, String subTitle) {
//获取视频选集信息
Play playWithDownload = mediaParser.parseMedia(viewPage.bvid, cid, false);
/*Play playWithDownload = videoWithFlvParser.parseMedia(viewPage.bvid, cid, false);
videoEntries = playWithDownload.videoEntries();
for (Map.Entry<Integer, Media> entry : videoEntries) {
Expand All @@ -385,7 +387,7 @@ public void onDownload(int qualityId, long cid, int position, String subTitle) {
}
}
saveSingleVideo(videoEntry, position);
saveSingleVideo(videoEntry, position);*/
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import com.leon.biuvideo.ui.activitys.DownloadedActivity;
import com.leon.biuvideo.ui.fragments.baseFragment.BindingUtils;
import com.leon.biuvideo.utils.dataBaseUtils.DownloadRecordsDatabaseUtils;
import com.leon.biuvideo.values.Qualitys;
import com.leon.biuvideo.values.Quality;

import java.util.List;

Expand Down Expand Up @@ -127,31 +127,31 @@ public void onClick(View v) {

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
/*switch (position) {
case 0:
qualityId = Qualitys.F120;
qualityId = Quality.F120;
break;
case 1:
qualityId = Qualitys.F116;
qualityId = Quality.F116;
break;
case 2:
qualityId = Qualitys.F112;
qualityId = Quality.F112;
break;
case 3:
qualityId = Qualitys.F80;
qualityId = Quality.F80;
break;
case 4:
qualityId = Qualitys.F64;
qualityId = Quality.F64;
break;
case 5:
qualityId = Qualitys.F32;
qualityId = Quality.F32;
break;
case 6:
qualityId = Qualitys.F16;
qualityId = Quality.F16;
break;
default:
break;
}
}*/
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
* @Time 2021/4/5
* @Desc BiuVideoPlayer工厂类
*/
public class BiuVideoPlayerFactory extends PlayerFactory<BiuVideoPlayer> {
public class BiuVideoPlayerFactory extends PlayerFactory<BiuVideoPlayerWithAudio> {
public static BiuVideoPlayerFactory create () {
return new BiuVideoPlayerFactory();
}

@Override
public BiuVideoPlayer createPlayer(Context context) {
return new BiuVideoPlayer(context);
public BiuVideoPlayerWithAudio createPlayer(Context context) {
return new BiuVideoPlayerWithAudio(context);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,29 @@

import com.dueeeke.videoplayer.player.AbstractPlayer;
import com.dueeeke.videoplayer.player.VideoViewManager;
import com.leon.biuvideo.utils.Fuck;
import com.leon.biuvideo.utils.SimpleSingleThreadPool;

import java.io.IOException;
import java.util.Map;

import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;
import tv.danmaku.ijk.media.player.misc.IMediaFormat;
import tv.danmaku.ijk.media.player.misc.IjkTrackInfo;

/**
* @Author Leon
* @Time 2021/4/5
* @Desc 可以播放音视频的自定义播放器
* @Desc 可以播放音视频的自定义播放器(不使用)
*/
public class BiuVideoPlayer extends AbstractPlayer {
public class BiuVideoPlayerWithAudio extends AbstractPlayer {
protected IjkMediaPlayer mVideoPlayer;
protected IjkMediaPlayer mAudioPlayer;

private int mBufferedPercent;

public BiuVideoPlayer(Context context) {
public BiuVideoPlayerWithAudio(Context context) {

}

Expand All @@ -38,6 +41,11 @@ public void initPlayer() {
initAudioPlayer();
}

@Override
public void setDataSource(String path, Map<String, String> headers) {

}

private void initVideoPlayer() {
mVideoPlayer = new IjkMediaPlayer();
//native日志
Expand Down Expand Up @@ -78,15 +86,15 @@ public boolean onNativeInvoke(int i, Bundle bundle) {
});
}

@Override
public void setDataSource(String videoPath, String audioPath, Map<String, String> headers) {
try {
mVideoPlayer.setDataSource(videoPath, headers);
mAudioPlayer.setDataSource(audioPath, headers);
} catch (IOException e) {
e.printStackTrace();
}
}
// @Override
// public void setDataSource(String videoPath, String audioPath, Map<String, String> headers) {
// try {
// mVideoPlayer.setDataSource(videoPath, headers);
// mAudioPlayer.setDataSource(audioPath, headers);
// } catch (IOException e) {
// e.printStackTrace();
// }
// }

@Override
public void setDataSource(AssetFileDescriptor fd) {
Expand Down

This file was deleted.

Loading

0 comments on commit 81e0c6e

Please sign in to comment.