CefSharp обнаруживает конец видео WebM

У меня есть приложение WPF С#, использующее cefsharp v79.1.360. Приложение с радостью воспроизводит один локальный файл webm внутри браузера.

Теперь я хотел бы передать строку имен локальных файлов в приложение и воспроизвести их последовательно. Таким образом, когда один webm закончит воспроизведение, начнется следующий по порядку. На странице больше ничего нет, только файл webm.

Моя первая мысль заключалась в том, чтобы определить, когда текущий webm завершится, а затем загрузить следующий файл. Я не вижу каких-либо событий или обработчиков, которые могут сделать это для меня. Я использую обработчик FrameLoadEnd для других целей, но он срабатывает только после завершения загрузки webm, а не после завершения воспроизведения.

Кто-нибудь знает, возможно ли определить окончание веб-видео?

Другая моя мысль - загрузить каждый webm в поток и воспроизвести всю партию. Для удобства пользователей я думаю, что было бы лучше играть в каждую из них по отдельности, в определенной последовательности.

Спасибо


person bryanforst    schedule 25.06.2020    source источник
comment
Создайте html-страницу с видеоэлементом, который управляет воспроизведением ваших видео. ">developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/ вы можете легко создать список воспроизведения и циклически просматривать видео.   -  person amaitland    schedule 25.06.2020
comment
CefSharp не дает вам доступа к DOM. Глядя на воспроизведение внутри html-страницы, которая вызывает метод .Net, когда видео заканчивается. Затем я могу попытаться настроить источник видео с помощью вызова javascript из CefSharp.   -  person bryanforst    schedule 29.06.2020
comment
См. github.com/cefsharp/CefSharp/wiki/. может передать ссылку на функцию javascript и получить IJavascriptCallback для выполнения, когда ваш метод будет завершен. См. github.com/cefsharp/CefSharp/blob /   -  person amaitland    schedule 29.06.2020
comment
Вы можете использовать DevTools для отладки, если у вас возникли проблемы, см. github.com/ cefsharp/CefSharp/вики/   -  person amaitland    schedule 29.06.2020


Ответы (1)


Решил, что лучший способ решить проблему — создать html-страницу, которая будет принимать строку с разделителями видео. Он обрабатывает циклический просмотр списка, проигрывая каждый из них по отдельности. Все, что нужно было сделать, это изменить src тега видео при запуске события onending и при вызове функции loadPlaylist ниже.

Приложение C# передало список воспроизведения в html через вызов javascript:

Browser.FrameLoadEnd += (sender, args) =>
{
     //Wait for the Main Frame to finish loading
     if (args.Frame.IsMain)
     {
         var playlist = navigationContext.Parameters[NavigationParameterKeys.WebAddress].ToString();
         args.Frame.ExecuteJavaScriptAsync("loadPlaylist('" + playlist +"');");
      }
};
person bryanforst    schedule 02.07.2020