feat: 音频输出方式设置

This commit is contained in:
guozhigq
2024-06-24 23:43:37 +08:00
parent 1db1d8f598
commit cc32224daf
4 changed files with 45 additions and 1 deletions

View 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'},
];

View File

@ -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),

View File

@ -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(

View File

@ -102,6 +102,8 @@ class SettingBoxKey {
autoPiP = 'autoPiP',
enableAutoLongPressSpeed = 'enableAutoLongPressSpeed',
enablePlayerControlAnimation = 'enablePlayerControlAnimation',
// 默认音频输出方式
defaultAoOutput = 'defaultAoOutput',
// youtube 双击快进快退
enableQuickDouble = 'enableQuickDouble',