feat: 音频输出方式设置
This commit is contained in:
6
lib/models/video/play/ao_output.dart
Normal file
6
lib/models/video/play/ao_output.dart
Normal file
@ -0,0 +1,6 @@
|
||||
final List aoOutputList = [
|
||||
{'title': 'audiotrack,opensles', 'value': '0'},
|
||||
{'title': 'opensles,audiotrack', 'value': '1'},
|
||||
{'title': 'audiotrack', 'value': '2'},
|
||||
{'title': 'opensles', 'value': '3'},
|
||||
];
|
@ -3,6 +3,7 @@ import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:pilipala/models/video/play/ao_output.dart';
|
||||
import 'package:pilipala/models/video/play/quality.dart';
|
||||
import 'package:pilipala/pages/setting/widgets/select_dialog.dart';
|
||||
import 'package:pilipala/plugin/pl_player/index.dart';
|
||||
@ -28,6 +29,7 @@ class _PlaySettingState extends State<PlaySetting> {
|
||||
late dynamic defaultDecode;
|
||||
late int defaultFullScreenMode;
|
||||
late int defaultBtmProgressBehavior;
|
||||
late String defaultAoOutput;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -44,6 +46,8 @@ class _PlaySettingState extends State<PlaySetting> {
|
||||
defaultValue: FullScreenMode.values.first.code);
|
||||
defaultBtmProgressBehavior = setting.get(SettingBoxKey.btmProgressBehavior,
|
||||
defaultValue: BtmProgresBehavior.values.first.code);
|
||||
defaultAoOutput =
|
||||
setting.get(SettingBoxKey.defaultAoOutput, defaultValue: '0');
|
||||
}
|
||||
|
||||
@override
|
||||
@ -263,6 +267,31 @@ class _PlaySettingState extends State<PlaySetting> {
|
||||
}
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
dense: false,
|
||||
title: Text('音频输出方式', style: titleStyle),
|
||||
subtitle: Text(
|
||||
'当前输出方式 ${aoOutputList.firstWhere((element) => element['value'] == defaultAoOutput)['title']}',
|
||||
style: subTitleStyle,
|
||||
),
|
||||
onTap: () async {
|
||||
String? result = await showDialog(
|
||||
context: context,
|
||||
builder: (context) {
|
||||
return SelectDialog<String>(
|
||||
title: '音频输出方式',
|
||||
value: defaultAoOutput,
|
||||
values: aoOutputList,
|
||||
);
|
||||
},
|
||||
);
|
||||
if (result != null) {
|
||||
defaultAoOutput = result;
|
||||
setting.put(SettingBoxKey.defaultAoOutput, result);
|
||||
setState(() {});
|
||||
}
|
||||
},
|
||||
),
|
||||
ListTile(
|
||||
dense: false,
|
||||
title: Text('默认全屏方式', style: titleStyle),
|
||||
|
@ -13,6 +13,7 @@ import 'package:media_kit/media_kit.dart';
|
||||
import 'package:media_kit_video/media_kit_video.dart';
|
||||
import 'package:ns_danmaku/ns_danmaku.dart';
|
||||
import 'package:pilipala/http/video.dart';
|
||||
import 'package:pilipala/models/video/play/ao_output.dart';
|
||||
import 'package:pilipala/plugin/pl_player/index.dart';
|
||||
import 'package:pilipala/plugin/pl_player/models/play_repeat.dart';
|
||||
import 'package:pilipala/services/service_locator.dart';
|
||||
@ -453,7 +454,13 @@ class PlPlayerController {
|
||||
// 音量不一致
|
||||
if (Platform.isAndroid) {
|
||||
await pp.setProperty("volume-max", "100");
|
||||
await pp.setProperty("ao", "audiotrack,opensles");
|
||||
String defaultAoOutput =
|
||||
setting.get(SettingBoxKey.defaultAoOutput, defaultValue: '0');
|
||||
await pp.setProperty(
|
||||
"ao",
|
||||
aoOutputList
|
||||
.where((e) => e['value'] == defaultAoOutput)
|
||||
.first['title']);
|
||||
}
|
||||
|
||||
await player.setAudioTrack(
|
||||
|
@ -102,6 +102,8 @@ class SettingBoxKey {
|
||||
autoPiP = 'autoPiP',
|
||||
enableAutoLongPressSpeed = 'enableAutoLongPressSpeed',
|
||||
enablePlayerControlAnimation = 'enablePlayerControlAnimation',
|
||||
// 默认音频输出方式
|
||||
defaultAoOutput = 'defaultAoOutput',
|
||||
|
||||
// youtube 双击快进快退
|
||||
enableQuickDouble = 'enableQuickDouble',
|
||||
|
Reference in New Issue
Block a user