Избегайте задержки между Play() и фактическим воспроизведением.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Избегайте задержки между Play() и фактическим воспроизведением.

Сообщение Anonymous »

Я пытаюсь воспроизвести локальный медиафайл с помощью LibVLCSharp и наложить поверх него звук метронома. Вот упрощенная версия кода, который я использовал:

Код: Выделить всё

private LibVLC libVlc;
private MediaPlayer mediaPlayer;

async Task Open()
{
libVlc = new LibVLC();
Core.Initialize();
Media media = new(libVlc, new Uri(MEDIA_FILE_PATH));
await media.Parse();
mediaPlayer = new MediaPlayer(media);
}

async Task Play()
{
PeriodicTimer metronomeTimer = new(METRONOME_TIMER_INTERVAL);
mediaPlayer.Play();
for (int i = 0; i < 10; i++)
{
PlayMetronomeSound();
await metronomeTimer.WaitForNextTickAsync();
}
}
Этот код работает нормально, но между звуком метронома и звуком, воспроизводимым LibVLC, существует небольшая задержка. Если я подпишусь на событие mediaPlayer.Playing, я увижу, что это событие запускается примерно через 150 мс после вызова mediaPlayer.Play(). Я предполагаю, что в это время он буферизует носитель?
Если это так, есть ли способ предварительно буферизовать носитель в методе Open(), чтобы избежать задержка в Play()?
Единственное обходное решение, которое мне удалось найти, — это вызвать mediaPlayer.Play() в Open() метод, затем mediaPlayer.Pause() в обработчике событий mediaPlayer.Playing, а затем перейдите к началу с помощью mediaPlayer.SeekTo(TimeSpan.Zero). В этом случае второй вызов mediaPlayer.Play() немедленно запускает воспроизведение, и проблем с синхронизацией больше нет, но мне это кажется хаком.

Подробнее здесь: https://stackoverflow.com/questions/786 ... l-playback
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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