Я использую библиотеку Flutter Media_Kit 1.2.0 в своем проекте, и задача состоит в том, чтобы поместить треки в плейлист и играть в график один за другим. Каждое видео имеет собственный индекс, поэтому по планированию блока пропускает индекс для воспроизведения, и видео под этим индексом начинает воспроизводить. Я попытался установить некоторые задержки после ожидания _player.pause (); или использовать остановку вместо паузы, но это не помогло.
Не могли бы вы посоветовать? < /p>
Future addTracksToPlaylist(List files) async {
try {
final medias = files.map((file) => Media(file.path)).toList();
for (final media in medias) {
print('Adding track: ${media.uri}');
}
await _player.open(
Playlist(medias),
play: false,
);
await Future.delayed(Duration(milliseconds: 100));
notifyListeners();
} catch (e) {
print('Error adding tracks to playlist: $e');
}
}
Future play(File file, Duration? seekPosition) async {
if (_isChangingTrack) return;
_isChangingTrack = true;
try {
final playlist = _player.state.playlist;
if (playlist.medias.isEmpty) return;
final index = _findTrackIndex(playlist, file);
if (index == -1) return;
_currentTrack = file;
await _player.pause();
await _player.jump(index);
await _waitForPlayerReady(index);
await _player.play();
if (seekPosition != null && seekPosition > Duration.zero) {
await _player.seek(seekPosition);
}
notifyListeners();
} catch (e) {
print('Error playing track: $e');
} finally {
_isChangingTrack = false;
}
}
int _findTrackIndex(Playlist playlist, File file) {
return playlist.medias.indexWhere((media) {
final mediaName = media.uri.split('/').last;
final fileName = file.path.split('/').last;
return mediaName == fileName;
});
}
Future _waitForPlayerReady(int expectedIndex) async {
int attempts = 0;
while ((_player.state.buffering ||
_player.state.duration == Duration.zero ||
_player.state.playlist.index != expectedIndex) &&
attempts < 20) {
await Future.delayed(const Duration(milliseconds: 100));
attempts++;
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... rect-track
Неправильное видео/аудио кратко играет на Flutter Media_kit Player, прежде чем правильный трек запускается в плейлисте ⇐ Android
Форум для тех, кто программирует под Android
1758041377
Anonymous
Я использую библиотеку Flutter Media_Kit 1.2.0 в своем проекте, и задача состоит в том, чтобы поместить треки в плейлист и играть в график один за другим. Каждое видео имеет собственный индекс, поэтому по планированию блока пропускает индекс для воспроизведения, и видео под этим индексом начинает воспроизводить. Я попытался установить некоторые задержки после ожидания _player.pause (); или использовать остановку вместо паузы, но это не помогло.
Не могли бы вы посоветовать? < /p>
Future addTracksToPlaylist(List files) async {
try {
final medias = files.map((file) => Media(file.path)).toList();
for (final media in medias) {
print('Adding track: ${media.uri}');
}
await _player.open(
Playlist(medias),
play: false,
);
await Future.delayed(Duration(milliseconds: 100));
notifyListeners();
} catch (e) {
print('Error adding tracks to playlist: $e');
}
}
Future play(File file, Duration? seekPosition) async {
if (_isChangingTrack) return;
_isChangingTrack = true;
try {
final playlist = _player.state.playlist;
if (playlist.medias.isEmpty) return;
final index = _findTrackIndex(playlist, file);
if (index == -1) return;
_currentTrack = file;
await _player.pause();
await _player.jump(index);
await _waitForPlayerReady(index);
await _player.play();
if (seekPosition != null && seekPosition > Duration.zero) {
await _player.seek(seekPosition);
}
notifyListeners();
} catch (e) {
print('Error playing track: $e');
} finally {
_isChangingTrack = false;
}
}
int _findTrackIndex(Playlist playlist, File file) {
return playlist.medias.indexWhere((media) {
final mediaName = media.uri.split('/').last;
final fileName = file.path.split('/').last;
return mediaName == fileName;
});
}
Future _waitForPlayerReady(int expectedIndex) async {
int attempts = 0;
while ((_player.state.buffering ||
_player.state.duration == Duration.zero ||
_player.state.playlist.index != expectedIndex) &&
attempts < 20) {
await Future.delayed(const Duration(milliseconds: 100));
attempts++;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79766487/wrong-video-audio-briefly-plays-on-flutter-media-kit-player-before-correct-track[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия