Just_audio не переезжает на следующий трек в плейлистеIOS

Программируем под IOS
Ответить
Anonymous
 Just_audio не переезжает на следующий трек в плейлисте

Сообщение Anonymous »

Мое приложение для iOS Flutter работает так: есть один звук, разбитый во многих частях, и пользователь может выбрать порядок, чтобы воспроизводить произведения и как долго будет молчание между частями. Поскольку в iOS нет Silenceuadiosource, я использовал свой собственный аудио -трек Silence из активов. Таким образом, в основном есть плейлист, содержащий CrippingAudiosource для кусочков, и аудиорс для молчания, например, 500 мс между каждыми кусками. < /P>
final cc = ChunkController()

Future attachNewSentence({int? index, Sentence? data}) async {
index ??= cc.sentenceIndex;
final playlist = createPlaylistForSentence(index: index, data: data);

audioPlayer.setAudioSources(playlist).catchError((error) {
log.e('Playlist $index error: $error');
return null;
});
log.i('${cc.collection.name} ${audioPlayer.sequence.length}');
}

List createPlaylistForSentence({int? index, Sentence? data}) {
data ??= cc.getSentence(index ?? cc.sentenceIndex);
final playlist = [];
final baseTag = '${cc.collection.name}-${data.index ?? ''}';

if (cc.collection.hasAudio && !isMute) {
final order = [
if (cc.collection.indexPlayAudio) cc.collection.index,
...convertAudioOrderToList(),
];

for (final tag in order) {
final clip = data.sentenceParts[tag]?.clip;
if (clip != null) {
playlist.add(
ClippingAudioSource(
child: mainAudioSource,
start: Duration(milliseconds: clip.startTime),
end: Duration(milliseconds: clip.endTime),
tag: MediaItem(id: '$baseTag-$tag', title: baseTag, album: tag),
),
);
if (tag != order.last) {
playlist.add(silent500msSource);
}
}
}
}
final silentTag = MediaItem(id: '$baseTag-final', title: baseTag);
playlist.add(
cc.collection.interval > 9999
? silent10sSource
: ClippingAudioSource(
child: silent10sSource,
end: Duration(milliseconds: cc.collection.interval),
tag: silentTag,
),
);
return playlist;
}
< /code>
Проблема заключается в том, что иногда после игры One Piece она не продвигается на трек Silence. Государство «играет», и он предположительно переходит к следующему треку в плейлисте, но это не так. И это всегда останавливается при переходе к тишине, а не к кускам. Вызывает ли обновление пользовательского интерфейса каждый раз, когда изменение трека вызывает проблемы? У меня есть ценник, который меняет этот текст, который был выделен, когда играется определенный кусок, так что, возможно, это был виновник; Но тогда как отслеживать изменения плейлиста в пользовательском интерфейсе? < /p>

final ValueNotifier currentlyPlayingLanguageNotifier = ValueNotifier(
'',
);
String get currentlyPlaying => currentlyPlayingLanguageNotifier.value;
set currentlyPlaying(String language) => currentlyPlayingLanguageNotifier.value = language;

currentLanguageStream = audioPlayer.currentIndexStream.listen((index) {
if (index != null) {
final MediaItem sourceTag = audioPlayer.sequence[index].tag;
log.i(sourceTag.id);
if (sourceTag.album != null) {
currentlyPlaying = sourceTag.album!;
}

final languageSpeed =
cc.collection.audioOrder?[currentlyPlaying]?.speed ?? 1.0;
audioPlayer.setSpeed(languageSpeed);
}
});


Подробнее здесь: https://stackoverflow.com/questions/797 ... n-playlist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»