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