Webtorrent клиент / плеер для Ionic 4 - PullRequest
0 голосов
/ 26 мая 2019

Я хотел бы внедрить Webtorrent в приложение Ionic 4 . Мне уже удалось безупречно воспроизвести .m3u8 потоков. Все, что мне сейчас нужно, это webtorrent часть, с которой я не слишком знаком.

Я использую тег <video src='url.m3u8'></video> для потоков .m3u8 , и, похоже, он отлично работает в Ionic 4. Я хочу иметь возможность загружать торрент-видеофайлы и передавать / воспроизводить видео на Ionic используя тег <video> или видеоплеер компонент.

Пожалуйста, мне нужна помощь. Я пробовал все, что я знаю и что я могу найти в Интернете, но пока ничего не помогло. Любая помощь будет оценена.


Заранее спасибо.




edited: Sun, May 26th, 2019 at 7:59:02 PM

Это ошибка, которую я получаю с реализацией, которую я пробую. У любого есть идея, в чем может быть проблема.

Вот снимок моего кода.

Изображение здесь

Скажите мне, что вы, ребята, думаете.

Заранее спасибо.

1 Ответ

0 голосов
/ 28 мая 2019

Хорошо, после нескольких дней, пробовавших разные методы, я нашел решение. Действительно легко, кстати.

вот фотография


вот код, который я использовал.

    import { WebTorrent } from 'webtorrent';

    declare var WebTorrent: WebTorrent;

        ....

    playVideo() {

    const client = WebTorrent();
    const magnetURL = 'https://webtorrent.io/torrents/sintel.torrent';

    client.add(magnetURL, function (torrent) {
      // document.getElementById('hash').textContent = 'Client downloading: ' + torrent.infoHash;
      torrent.files.forEach(function (file) {
        torrent.on('download', function (bytes) {
          document.getElementById('download').textContent = 'just downloaded: ' + bytesToSize(bytes);
          document.getElementById('tdownload').textContent = 'total downloaded: ' + bytesToSize(torrent.downloaded);
          document.getElementById('sdownload').textContent = 'download speed: ' + bytesToSize(torrent.downloadSpeed);
          document.getElementById('pdownload').textContent = toPercentage(torrent.progress);
        });
        torrent.files.find(function (file) {
          return file.name.endsWith('.mp4') || file.name.endsWith('.avi') || file.name.endsWith('.mkv') || file.name.endsWith('.mpeg');
        });
        file.renderTo('#video', function (err, element) {
          presentToast(magnetURL);
        });
      });
    });
    function presentToast(text: string) {
      this.presentToast(text);
    }
    function bytesToSize(bytes) {
      const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
      if (bytes === 0) { return '0 Bytes'; }
      const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
      return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
    }

    function toPercentage(dec) {
      dec = dec.toString();
      const a = dec.split('.');
      dec = a[1];
      dec = dec.substr(0, 4);
      return dec = (dec / 100) + '%';
    }
  }

У меня есть 2 проблемы с этим, хотя. Я могу играть в sintel.mp4 только после того, как он достигнет 99,89%, но я хочу иметь возможность транслировать его во время загрузки. Вторая проблема в том, что я могу загружать и играть только в Sintel.torrent. Я пытался использовать другие магнитные ссылки, и это ничего не делает. Я предполагаю, что это как-то связано с тем, как генерируется URL-адрес магнита.

...