mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-30 23:58:13 +08:00
committed by
GitHub
parent
7ca6d2958f
commit
3897efd82f
@@ -1,10 +1,15 @@
|
|||||||
|
// mpv --hwdec=help
|
||||||
enum HwDecType {
|
enum HwDecType {
|
||||||
no('no', '启用软解'),
|
no('no', '启用软解'),
|
||||||
auto('auto', '启用任意可用解码器'),
|
auto('auto', '启用任意可用解码器'),
|
||||||
autoSafe('auto-safe', '启用最佳解码器'),
|
autoSafe('auto-safe', '启用最佳解码器'),
|
||||||
autoCopy('auto-copy', '启用带拷贝功能的最佳解码器'),
|
autoCopy('auto-copy', '启用带拷贝功能的最佳解码器'),
|
||||||
d3d11va('d3d11va', 'DirectX11 (windows8 及以上)'),
|
d3d12va('d3d12va', 'DirectX 12 (Windows10 及以上)'),
|
||||||
d3d11vaCopy('d3d11va-copy', 'DirectX11 (windows8 及以上) (非直通)'),
|
d3d12vaCopy('d3d12va-copy', 'DirectX 12 (Windows10 及以上) (非直通)'),
|
||||||
|
d3d11va('d3d11va', 'DirectX 11 (Windows8 及以上)'),
|
||||||
|
d3d11vaCopy('d3d11va-copy', 'DirectX 11 (Windows8 及以上) (非直通)'),
|
||||||
|
dxva2('dxva2', 'DXVA2 (Windows7 及以上)'),
|
||||||
|
dxva2Copy('dxva2-copy', 'DXVA2 (Windows7 及以上) (非直通)'),
|
||||||
videotoolbox('videotoolbox', 'VideoToolbox (macOS / iOS)'),
|
videotoolbox('videotoolbox', 'VideoToolbox (macOS / iOS)'),
|
||||||
videotoolboxCopy('videotoolbox-copy', 'VideoToolbox (macOS / iOS) (非直通)'),
|
videotoolboxCopy('videotoolbox-copy', 'VideoToolbox (macOS / iOS) (非直通)'),
|
||||||
vaapi('vaapi', 'VAAPI (Linux)'),
|
vaapi('vaapi', 'VAAPI (Linux)'),
|
||||||
@@ -15,8 +20,6 @@ enum HwDecType {
|
|||||||
drmCopy('drm-copy', 'DRM (Linux) (非直通)'),
|
drmCopy('drm-copy', 'DRM (Linux) (非直通)'),
|
||||||
vulkan('vulkan', 'Vulkan (全平台) (实验性)'),
|
vulkan('vulkan', 'Vulkan (全平台) (实验性)'),
|
||||||
vulkanCopy('vulkan-copy', 'Vulkan (全平台) (实验性) (非直通)'),
|
vulkanCopy('vulkan-copy', 'Vulkan (全平台) (实验性) (非直通)'),
|
||||||
dxva2('dxva2', 'DXVA2 (Windows7 及以上)'),
|
|
||||||
dxva2Copy('dxva2-copy', 'DXVA2 (Windows7 及以上) (非直通)'),
|
|
||||||
vdpau('vdpau', 'VDPAU (Linux)'),
|
vdpau('vdpau', 'VDPAU (Linux)'),
|
||||||
vdpauCopy('vdpau-copy', 'VDPAU (Linux) (非直通)'),
|
vdpauCopy('vdpau-copy', 'VDPAU (Linux) (非直通)'),
|
||||||
mediacodec('mediacodec', 'MediaCodec (Android)'),
|
mediacodec('mediacodec', 'MediaCodec (Android)'),
|
||||||
@@ -24,7 +27,11 @@ enum HwDecType {
|
|||||||
cuda('cuda', 'CUDA (NVIDIA独占) (过时)'),
|
cuda('cuda', 'CUDA (NVIDIA独占) (过时)'),
|
||||||
cudaCopy('cuda-copy', 'CUDA (NVIDIA独占) (过时) (非直通)'),
|
cudaCopy('cuda-copy', 'CUDA (NVIDIA独占) (过时) (非直通)'),
|
||||||
crystalhd('crystalhd', 'CrystalHD (全平台) (过时)'),
|
crystalhd('crystalhd', 'CrystalHD (全平台) (过时)'),
|
||||||
rkmpp('rkmpp', 'Rockchip MPP (仅部分Rockchip芯片)');
|
rkmpp('rkmpp', 'Rockchip MPP (仅部分Rockchip芯片)'),
|
||||||
|
amf('amf', 'AMF (AMD独占)'),
|
||||||
|
amfCopy('amf-copy', 'AMF (AMD独占) (非直通)'),
|
||||||
|
qsv('qsv', 'Quick Sync Video (Intel独占)'),
|
||||||
|
qsvCopy('qsv-copy', 'Quick Sync Video (Intel独占) (非直通)');
|
||||||
|
|
||||||
final String hwdec;
|
final String hwdec;
|
||||||
final String desc;
|
final String desc;
|
||||||
|
|||||||
@@ -2059,7 +2059,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
getSelectTitle: (i) => '${i.name}(${i.desc})',
|
getSelectTitle: (i) => '${i.name}(${i.desc})',
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
'*转码使用软解,速度可能慢于播放,请不要选择过长的时间段或过高画质',
|
'*转码使用CPU,速度可能慢于播放,请不要选择过长的时间段或过高画质',
|
||||||
style: theme.textTheme.bodySmall,
|
style: theme.textTheme.bodySmall,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -2115,13 +2115,12 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
if (await future) {
|
if (await future) {
|
||||||
await ImageUtils.saveFileImg(
|
await ImageUtils.saveFileImg(
|
||||||
filePath: file,
|
filePath: file,
|
||||||
fileName: '$name.webp',
|
fileName: name,
|
||||||
needToast: true,
|
needToast: true,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
SmartDialog.showToast('转码出现错误或已取消');
|
SmartDialog.showToast('转码出现错误或已取消');
|
||||||
}
|
}
|
||||||
progress.close();
|
|
||||||
if (isPlay) ctr.play();
|
if (isPlay) ctr.play();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
|||||||
import 'dart:ffi';
|
import 'dart:ffi';
|
||||||
|
|
||||||
import 'package:PiliPlus/http/constants.dart';
|
import 'package:PiliPlus/http/constants.dart';
|
||||||
|
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||||
import 'package:flutter/foundation.dart' show kDebugMode;
|
import 'package:flutter/foundation.dart' show kDebugMode;
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get_rx/get_rx.dart';
|
import 'package:get/get_rx/get_rx.dart';
|
||||||
@@ -35,6 +36,7 @@ class MpvConvertWebp {
|
|||||||
}) : duration = end - start;
|
}) : duration = end - start;
|
||||||
|
|
||||||
Future<void> _init() async {
|
Future<void> _init() async {
|
||||||
|
final enableHA = Pref.enableHA;
|
||||||
_ctx = await Initializer.create(
|
_ctx = await Initializer.create(
|
||||||
NativeLibrary.path,
|
NativeLibrary.path,
|
||||||
_onEvent,
|
_onEvent,
|
||||||
@@ -46,6 +48,10 @@ class MpvConvertWebp {
|
|||||||
'ovc': 'libwebp_anim',
|
'ovc': 'libwebp_anim',
|
||||||
'ofopts': 'loop=0',
|
'ofopts': 'loop=0',
|
||||||
'ovcopts': 'preset=${preset.flag}',
|
'ovcopts': 'preset=${preset.flag}',
|
||||||
|
if (enableHA) 'vo': 'gpu',
|
||||||
|
if (enableHA)
|
||||||
|
'hwdec':
|
||||||
|
'${Pref.hardwareDecoding},auto-copy', // transcode only support copy
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
_setHeader();
|
_setHeader();
|
||||||
|
|||||||
Reference in New Issue
Block a user