修改跳过片头片尾位置

This commit is contained in:
rang 2025-10-24 17:02:51 +08:00
parent ab3d5f7e02
commit a9148f7a14
2 changed files with 11 additions and 8 deletions

View file

@ -162,16 +162,19 @@ class AudiobookPlayer extends AudioPlayer {
} }
AudioTrack track = _book!.tracks[index]; AudioTrack track = _book!.tracks[index];
final appSettings = loadOrCreateAppSettings(); final appSettings = loadOrCreateAppSettings();
if (initialPosition == null || initialPosition <= Duration()) { final playerSettings = readFromBoxOrCreate(_book!.libraryItemId).playerSettings;
initialPosition = readFromBoxOrCreate(_book!.libraryItemId).playerSettings.skipChapterStart;
}
final retrievedUri = _getUri(track, downloadedUris, baseUrl: baseUrl, token: token); final retrievedUri = _getUri(track, downloadedUris, baseUrl: baseUrl, token: token);
await setAudioSource( await setAudioSource(
initialPosition: initialPosition, initialPosition: initialPosition == null || initialPosition <= Duration()
AudioSource.uri( ? playerSettings.skipChapterStart
: initialPosition,
ClippingAudioSource(
end: track.duration - playerSettings.skipChapterEnd,
child: AudioSource.uri(
retrievedUri, retrievedUri,
),
tag: MediaItem( tag: MediaItem(
// Specify a unique ID for each media item: // Specify a unique ID for each media item:
id: '${book?.libraryItemId}${track.index}', id: '${book?.libraryItemId}${track.index}',

View file

@ -6,13 +6,13 @@ class SkipStartEnd {
final Duration start; final Duration start;
final Duration end; final Duration end;
final AudiobookPlayer player; final AudiobookPlayer player;
int _index; // int _index;
final List<StreamSubscription> _subscriptions = []; final List<StreamSubscription> _subscriptions = [];
final throttler = Throttler(delay: Duration(seconds: 3)); final throttler = Throttler(delay: Duration(seconds: 3));
// final StreamController<PlaybackEvent> _playbackController = // final StreamController<PlaybackEvent> _playbackController =
// StreamController<PlaybackEvent>.broadcast(); // StreamController<PlaybackEvent>.broadcast();
SkipStartEnd({required this.start, required this.end, required this.player}) : _index = 0 { SkipStartEnd({required this.start, required this.end, required this.player}) {
// if (start > Duration()) { // if (start > Duration()) {
// _subscriptions.add( // _subscriptions.add(
// player.currentIndexStream.listen((index) { // player.currentIndexStream.listen((index) {