Как интегрировать функцию «onprogress» в react-azure-mp?

#reactjs #azure

#reactjs #azure

Вопрос:

У меня есть приложение React для воспроизведения некоторых видео, поступающих из серверной части. Для воспроизведения видео я интегрировал модуль npm react-azure-mp для модуля-оболочки для медиаплеера Azure. Согласно документации Azure media Player, существует функция, вызываемая onprogress для вызова Xmlhttprequest. Мне нужно вызвать эту функцию в модуле npm, но не удалось то, что я пробовал до сих пор. Видео воспроизводится с основными функциями должным образом, но функция onprogress не работает. Это react-azure-mp и то, что я пробовал

 import { AzureMP } from 'react-azure-mp';

onProgress = () => {
    console.log("working...");
}

<AzureMP
    options={{ controls: true, autoplay: false }}
    onprogress={this.onProgress} // this is not working
    adaptRatio={[4, 3]}
    src={[{ src: video.resourceUrl }]}
/>
 

Документы Azure media Player — XMLHttpRequests: https://amp.azure.net/libs/amp/latest/docs/index.html#amp.xmlhttprequestwrapper.onprogress

Как я могу это интегрировать?

Ответ №1:

Можете ли вы справиться с этим progress событием? Вы можете использовать проигрыватель, который возвращается из onInstanceCreated обратного вызова, для захвата проигрывателя, который он настраивает.

   onProgress = () => {
    //
  }
  const onInstanceCreated = (player) => {
    if (player) {
       player.on("progress", onProgress);
    }
  };

  return (
      <AzureMP onInstanceCreated={onInstanceCreated} />
   );
 

Видел что-то похожее на это в одном из примеров

Комментарии:

1. ref имеет player объект, но когда console.log(ref.player) , говорит undefined он, поэтому указанное выше if условие false . Почему это так?

2. ссылка не будет определена до тех пор, пока компонент не будет смонтирован. Он должен иметь правильные значения, как только он будет доступен.

3. Я уверен, что проигрыватель смонтирован, потому что воспроизводится видео. Так где же ошибка?

4. Вот песочница, которую я использовал для тестирования этого codesandbox.io/s/hungry-shannon-bx8ho?file=/src/App.js может быть, разные версии библиотеки?

5. вы можете использовать player.currentTime() его внутри onProgress , если передадите его игроку player.on("progress", event => onProgress(event, player)