@ Ретрик, отличный вопрос!Я не уверен, почему люди голосуют против вас, они должны быть ненавистниками.
Вы правы, лучше сохранить это изображение / видео и ссылаться на него через GUN.Специально для видео, WebTorrent / BitTorrent уже более 10 лет делится P2P-видео и в какой-то момент обрабатывает 40% мирового интернет-трафика!
Однако WebTorrent / BitTorrent не очень хороши для обнаружения / совместного использования этих URI.(магнитные ссылки и т. д.), но GUN есть.Поэтому я бы рекомендовал это как один из вариантов.
Для изображений, особенно небольших, таких как аватары / значки / профили, я часто храню их в GUN напрямую, кодируя их Base64
(многие веб-сайты по всему миру встроеныimages / icons / sprites / avatars в CSS файлы с base64 data-URL, за исключением того, что теперь вы можете использовать GUN для этого).
Если вы заинтересованы в этом, я написал небольшую утилиту, использующую jQuery, которая позволяет вам перетаскиватьизображений на ваш веб-сайт, и он будет автоматически изменять размер (передавать опции для его перезаписи) и кодировать его base64, чтобы затем сохранить в GUN:
https://github.com/amark/gun/blob/master/lib/upload.js
Вот небольшойпример того, как я его использую:
$('#profile').upload(function resize(e, up){
if(e.err){ return } // handle error
$('#profile').addClass('pulse'); // css to indicate image processing
if(up){ return up.shrink(e, resize, 64) } // pass it `e` drag&drop/upload event, then I reuse the current function (named resize) as the callback for it, and tell it resize to 64px.
$('#profile').removeClass('pulse'); // css indicate done processing.
$("#profile img").attr('src', e.base64).removeClass('none'); // set photo in HTML!
gun.user().get('who').get('face').get('small').put(e.base64); // save profile thumbnail to GUN
});
Наконец, как насчет хранения видео в GUN, если вы не хотите использовать BitTorrent?
Я бы настоятельно рекомендовал использовать формат HLS для хранениявидео в GUN, это позволит вам осуществлять децентрализованное потоковое видео в реальном времени.Это очень простой формат, позволяющий работать с потоковым видео даже из статических файлов, поскольку он хранит видео в виде небольших фрагментов, которые можно передавать в потоковом режиме - что идеально подходит для GUN.
Уже есть видео на основе JSпроигрыватель для формата HLS:
https://github.com/video-dev/hls.js/
На основе демонстрационной страницы вы можете увидеть пример того, как хранится видео, как здесь, на GitHub:
https://github.com/video-dev/streams/tree/master/x36xhzz
(если вы щелкнете по файлу m3u8, вы увидите, что в нем есть метаданные о том, что 720p хранится в папке url_0
, в которой есть вложенные файлы)
Вместохраня видеофайлы HLS на BitTorrent или на централизованном сервере, вы можете сохранить его в GUN, используя ту же структуру папок gun.get('videos').get('x36xhzz').get('url_0').get('url_496').get('193039199_mp4_h264_aac_hd_7.ts').once(function(video_chunk){ passToHLSplayer(video_chunk) })
, чтобы HLS.js было легко интегрировать с GUN.
Теперь выВы получите децентрализованное потоковое видео P2P !!!
И даже круче, вы можете объединить его с адаптером lib/webrtc
от GUN и сделать это полностью браузером для браузера!
Надеюсь, это помогло.