Merge branch 'fix-issues#568'
This commit is contained in:
@ -4,6 +4,8 @@ import 'package:pilipala/http/live.dart';
|
|||||||
import 'package:pilipala/models/live/room_info.dart';
|
import 'package:pilipala/models/live/room_info.dart';
|
||||||
import 'package:pilipala/plugin/pl_player/index.dart';
|
import 'package:pilipala/plugin/pl_player/index.dart';
|
||||||
import '../../models/live/room_info_h5.dart';
|
import '../../models/live/room_info_h5.dart';
|
||||||
|
import '../../utils/storage.dart';
|
||||||
|
import '../../utils/video_utils.dart';
|
||||||
|
|
||||||
class LiveRoomController extends GetxController {
|
class LiveRoomController extends GetxController {
|
||||||
String cover = '';
|
String cover = '';
|
||||||
@ -16,6 +18,7 @@ class LiveRoomController extends GetxController {
|
|||||||
PlPlayerController plPlayerController =
|
PlPlayerController plPlayerController =
|
||||||
PlPlayerController.getInstance(videoType: 'live');
|
PlPlayerController.getInstance(videoType: 'live');
|
||||||
Rx<RoomInfoH5Model> roomInfoH5 = RoomInfoH5Model().obs;
|
Rx<RoomInfoH5Model> roomInfoH5 = RoomInfoH5Model().obs;
|
||||||
|
late bool enableCDN;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
@ -31,6 +34,8 @@ class LiveRoomController extends GetxController {
|
|||||||
cover = liveItem.cover;
|
cover = liveItem.cover;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// CDN优化
|
||||||
|
enableCDN = setting.get(SettingBoxKey.enableCDN, defaultValue: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
playerInit(source) async {
|
playerInit(source) async {
|
||||||
@ -57,9 +62,11 @@ class LiveRoomController extends GetxController {
|
|||||||
List<CodecItem> codec =
|
List<CodecItem> codec =
|
||||||
res['data'].playurlInfo.playurl.stream.first.format.first.codec;
|
res['data'].playurlInfo.playurl.stream.first.format.first.codec;
|
||||||
CodecItem item = codec.first;
|
CodecItem item = codec.first;
|
||||||
String videoUrl = (item.urlInfo?.first.host)! +
|
String videoUrl = enableCDN
|
||||||
item.baseUrl! +
|
? VideoUtils.getCdnUrl(item)
|
||||||
item.urlInfo!.first.extra!;
|
: (item.urlInfo?.first.host)! +
|
||||||
|
item.baseUrl! +
|
||||||
|
item.urlInfo!.first.extra!;
|
||||||
await playerInit(videoUrl);
|
await playerInit(videoUrl);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
import 'package:pilipala/models/video/play/url.dart';
|
import 'package:pilipala/models/video/play/url.dart';
|
||||||
|
|
||||||
|
import '../models/live/room_info.dart';
|
||||||
|
|
||||||
class VideoUtils {
|
class VideoUtils {
|
||||||
static String getCdnUrl(dynamic item) {
|
static String getCdnUrl(dynamic item) {
|
||||||
var backupUrl = "";
|
var backupUrl = "";
|
||||||
@ -12,13 +14,20 @@ class VideoUtils {
|
|||||||
} else if (item is AudioItem) {
|
} else if (item is AudioItem) {
|
||||||
backupUrl = item.backupUrl ?? "";
|
backupUrl = item.backupUrl ?? "";
|
||||||
videoUrl = backupUrl.contains("http") ? backupUrl : (item.baseUrl ?? "");
|
videoUrl = backupUrl.contains("http") ? backupUrl : (item.baseUrl ?? "");
|
||||||
|
} else if (item is CodecItem) {
|
||||||
|
backupUrl = (item.urlInfo?.first.host)! +
|
||||||
|
item.baseUrl! +
|
||||||
|
item.urlInfo!.first.extra!;
|
||||||
|
videoUrl = backupUrl.contains("http") ? backupUrl : (item.baseUrl ?? "");
|
||||||
} else {
|
} else {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// issues #70
|
/// issues #70
|
||||||
if (videoUrl.contains(".mcdn.bilivideo") ||
|
if (videoUrl.contains(".mcdn.bilivideo")) {
|
||||||
videoUrl.contains("/upgcxcode/")) {
|
videoUrl =
|
||||||
|
'https://proxy-tf-all-ws.bilivideo.com/?url=${Uri.encodeComponent(videoUrl)}';
|
||||||
|
} else if (videoUrl.contains("/upgcxcode/")) {
|
||||||
//CDN列表
|
//CDN列表
|
||||||
var cdnList = {
|
var cdnList = {
|
||||||
'ali': 'upos-sz-mirrorali.bilivideo.com',
|
'ali': 'upos-sz-mirrorali.bilivideo.com',
|
||||||
|
|||||||
Reference in New Issue
Block a user