Мое приложение для 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
Just_audio не переезжает на следующий трек в плейлисте ⇐ IOS
Программируем под IOS
-
Anonymous
1758677311
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);
}
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79773206/just-audio-not-moving-to-the-next-track-in-playlist[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия