mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-30 14:20:15 +08:00
opt: subtitle & video screenshot (#2364)
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
import 'dart:io' show File;
|
||||
import 'dart:math' show min;
|
||||
|
||||
import 'package:PiliPlus/common/style.dart';
|
||||
@@ -48,12 +47,10 @@ import 'package:PiliPlus/services/download/download_service.dart';
|
||||
import 'package:PiliPlus/utils/accounts.dart';
|
||||
import 'package:PiliPlus/utils/connectivity_utils.dart';
|
||||
import 'package:PiliPlus/utils/extension/context_ext.dart';
|
||||
import 'package:PiliPlus/utils/extension/file_ext.dart';
|
||||
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
|
||||
import 'package:PiliPlus/utils/extension/num_ext.dart';
|
||||
import 'package:PiliPlus/utils/extension/size_ext.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/path_utils.dart';
|
||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||
import 'package:PiliPlus/utils/storage.dart';
|
||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||
@@ -68,7 +65,6 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive_ce/hive.dart';
|
||||
import 'package:media_kit/media_kit.dart' hide Subtitle;
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
class VideoDetailController extends GetxController
|
||||
with GetTickerProviderStateMixin, BlockMixin {
|
||||
@@ -996,19 +992,8 @@ class VideoDetailController extends GetxController
|
||||
final sub = subtitles[index - 1];
|
||||
|
||||
String subUri = subtitle.id;
|
||||
File? file;
|
||||
if (subtitle.isData) {
|
||||
subUri = path.join(tmpDirPath, '${cid.value}-${sub.lan}.vtt');
|
||||
file = File(subUri);
|
||||
if (!file.existsSync()) {
|
||||
await file.writeAsString(subtitle.id);
|
||||
if (plPlayerController.videoPlayerController?.disposed == false) {
|
||||
plPlayerController.videoPlayerController!.release.add(file.tryDel);
|
||||
} else {
|
||||
file.tryDel();
|
||||
return;
|
||||
}
|
||||
}
|
||||
subUri = 'memory://$subUri';
|
||||
}
|
||||
await plPlayerController.videoPlayerController?.setSubtitleTrack(
|
||||
SubtitleTrack(subUri, sub.lanDoc, sub.lan, uri: true),
|
||||
|
||||
@@ -341,12 +341,16 @@ class _ReplyPageState extends CommonRichTextPubPageState<ReplyPage> {
|
||||
final res = await plPlayerController
|
||||
.plPlayerController
|
||||
.videoPlayerController
|
||||
?.screenshot(format: .png);
|
||||
?.screenshot();
|
||||
if (res != null) {
|
||||
final path =
|
||||
'$tmpDirPath/${Utils.generateRandomString(8)}.png';
|
||||
await File(path).writeAsBytes(res);
|
||||
imageList.add(FilePicModel(path: path));
|
||||
final png = await res.toByteData(format: .png);
|
||||
if (png != null) {
|
||||
final path =
|
||||
'$tmpDirPath/${Utils.generateRandomString(8)}.png';
|
||||
await File(path).writeAsBytes(png.buffer.asUint8List());
|
||||
imageList.add(FilePicModel(path: path));
|
||||
}
|
||||
res.dispose();
|
||||
} else {
|
||||
debugPrint('null screenshot');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user