Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2

Në pjesën e parë përshkruhej aventura e vështirë për digjitalizimin e regjistrimeve familjare të vjetra, duke i ndarë ato në skena të veçanta.. Pasi përfundova të gjithë klipet, dëshiroja të organizoja shikimin e tyre online, njësoj si në YouTube. Duke qenë se këto janë kujtime personale të familjes, nuk mund t'i ngarkoja ato në YouTube. Më duhet një hosting më privat, njëkohësisht i përshtatshëm dhe i sigurt.

Hapi 3. Publikimi

ClipBucket, kloni open-source i YouTube që mund të instalohet në serverin tuaj

Së pari, provoja ClipBucket, i quajtur kloni open-source i YouTube që mund të instalohet në serverin tuaj.

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2

Çuditërisht, ClipBucket nuk ka ndonjë udhëzues për instalimin. Falë udhëzimit të jashtëm unë automatizova procesin e instalimit me anë të Ansible, një mjet për menaxhimin e konfigurimit të serverëve.

Pjesërisht, vështirësia ishte se skenarët e instalimit të ClipBucket janë të kompletuarisht të prishur. Në atë kohë, unë punoja në Google dhe sipas kushteve të kontratës nuk kisha të drejtë të kontriboja në klonin open-source të YouTube, por unë postova një raport për një defekt., nga e cila ishte lehtë për të bërë korrigjimet e nevojshme. Kaluan muaj, dhe ata ende nuk kuptonin se cila ishte problema. Në vend të kësaj, ata shtonin gjithçka më shumë gabime në çdo version.

Kompania ClipBucket punonte sipas modelit të konsulencës — ata publikuan kodin e tyre falas dhe chargesin për ndihmën në vendosje. Me kalimin e kohës, më erdhi në mendje se kompania, e cila fiton para nga mbështetje paguese, ndoshta nuk është shumë e interesuar që klientët ta instalojnë produktin vetë.

MediaGoblin, një alternativë më moderne

Pas disa muajsh zhgënjimi me ClipBucket, rishikova opsionet e disponueshme dhe gjeta MediaGoblin.

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
MediaGoblin — është një platformë autonome për shkëmbimin e mediave

MediaGoblin ka shumë kënaqësi. Ndryshe nga ClipBucket në PHP të pangjyrshëm, MediaGoblin është shkruar në Python — në këtë gjuhë kam shumë përvojë në shkrimin e kodit. Ka ndërfaqja e komandave, i cili lejon automatizimin e lehtë të ngarkimit të videove. Më e rëndësishmja, MediaGoblin vjen në format Docker, i cili përjashton çdo problem me instalimin.

Docker — është teknologjia që krijon një ambient autonom për aplikacionin, që punon kudo. Unë përdor Docker në shumë projektet e mia.

Vështirësia e jashtëzakonshme e rikthimit në Docker të MediaGoblin

Mendoja se deployimi i imazhit Docker të MediaGoblin do të ishte një detyrë triviale. Mirë, nuk doli kështu.

Imazhi përfundimtar nuk kishte dy funksionalitete të nevojshme:

  • Autentifikimi
    • MediaGoblin, për default, krijon një portal mediatik publik, por unë kisha nevojë për një mënyrë për të kufizuar aksesin e të tjerëve.
  • Transkodimi
    • Çdo herë që ngarkoni një video, MediaGoblin përpiqet ta rikodojë atë për streaming optimal. Nëse videoja është fillimisht e gatshme për streaming, transkodimi e përkeqëson cilësinë.
    • MediaGoblin ofron çaktivizimin e transkodimit përmes parametrave të konfigurimit, por në imazhin ekzistues Docker, kjo nuk është e mundur.

Mirë, asnjë problem. Imazhi Docker vjen me kod të hapur, kështu që mund të rilidhni atë vetë.

Fatkeqësisht, imazhi Docker nuk mbledh më nga repozitori aktual i MediaGoblin. Kam përpjekur ta sinkronizoj atë me versionin e ndërtimit të fundit të suksesshëm, por as kjo nuk funksionoi. Edhe pse përdora pikërisht të njëjtin kod, varësitë e jashtme të MediaGoblin ishin ndryshuar, duke prishur ndërtimin. Pas dhjetra orësh, e përsërisja procesin e ndërtimit të MediaGoblin-it për 10-15 minuta, deri sa më në fund funksionoi.

Disa muaj më vonë ndodhi e njëjta gjë. Në total, gjatë dy viteve të fundit, zinxhiri i varësive të MediaGoblin ka prishur ndërtimin tim disa herë, dhe hera e fundit ndodhi sapo kur po shkruaja këtë artikull. Në fund, publikova fork-un tim të MediaGoblin me me varësi të koduara ngurtë dhe versione specifike të bibliotekave të shënuara qartë. Në fjalë të tjera, në vend të pohimit të dyshimtë se MediaGoblin punon me çdo version celery >= 3.0, unë vendosa një varësi specifike për versionin celery 4.2.1, sepse e kam testuar MediaGoblin me këtë version. Duket se produkti ka nevojë për mekanizëm ndërtimesh të riprodhueshme, por unë ende nuk kam përfshirë këtë.

Në çdo rast, pas shumë orësh përpjekje, më në fund arrita të ndërtoj dhe konfiguroj MediaGoblin në imazhin Docker. Atje ishte tashmë e lehtë të kaloj transkodimin e panevojshëm dhe Instaloni Nginx për autentifikim.

Hapi 4. Hosting

Duke pasur parasysh se MediaGoblin funksiononte nën Docker në kompjuterin tim lokal, hapi tjetër ishte deploy në një server në re, për të lejuar familjen të shikonte videot.

MediaGoblin dhe problemi i ruajtjes së videove

Ka shumë platforma që pranojnë imazhe Docker dhe i publikojnë ato në një URL publike. Problemi ishte se, përveç aplikacionit vetë, duhej të publikoheshin 33 GB skedarë video. Mund të ishin koduar ashtu si duhet në imazhin docker, por do të rezultonte i madh dhe i paestetik. Ndryshimi i një rreshti në konfigurim do të kërkonte një ri-deploy të 33 GB të dhënash.

Kur përdora ClipBucket, unë e zgjida problemin duke përdorur gcsfuse — një utilitare që lejon sistemin operativ të ngarkojë direktoret në ruajtjen në cloud Google Cloud si rrugë të zakonshme të sistemit të skedarëve. Unë publikova skedarët video në Google Cloud dhe përdora gcsfuse për t'i shfaqur ato në ClipBucket si skedarë lokalë.

Dallimi ishte se ClipBucket punonte në një makinë virtuale të vërtetë, ndërsa MediaGoblin në një kontejner Docker. Këtu, montimi i skedarëve nga ruajtja në Cloud ishte shumë më i ndërlikuar. Kam shpenzuar dhjetëra orë duke zgjidhur të gjitha problemet dhe shkrova për këtë një postim të plotë në blog.

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
Integrimi fillestar i MediaGoblin me ruajtjen Google Cloud, për të cilin kam folur në vitin 2018

Pas disa javëve në rregullimin e të gjithë komponenteve, gjithçka funksionoi. Pa bërë asnjë ndryshim në kodin e MediaGoblin, arrita ta bëj atë të lexojë dhe shkruajë skedarët mediatikë në ruajtjen Google.

Problemi i vetëm ishte se MediaGoblin filloi të punojë tepër ngadalë. Ngarkimi i miniaturave të videove në faqe zgjaste 20 sekonda. Nëse gjatë shikimit të videos hidhnit përpara, MediaGoblin ndalohej për 10 sekonda të pafund përpara se të rifillonte reproduktimin.

Problemi kryesor që po përjetonin përdoruesit ishte se videot dhe imazhet arrinin te ata përmes një rruge të gjatë dhe të ndërlikuar. Atyre u duheshin të kalonin nga shërbimi i ruajtjes në re të Google përmes gcsfuse në MediaGoblin, Nginx — dhe vetëm atëherë ato arrinin në shfletuesin e përdoruesit. Ngushtica kryesore ishte gcsfuse, i cili nuk është optimizuar për performancë të shpejtë. Zhvilluesit paralajmërojnë për vonesa të mëdha në funksionimin e utilites direkt në faqen kryesore të projektit:

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
Paralajmërimet për performancë të ulët në dokumentacionin e gcsfuse

Idealisht, shfletuesi duhet të nxjerrë skedarët direkt nga Google Cloud, duke anashkaluar të gjitha shtresat ndërmjetëse. Si të bëhet kjo, pa u thelluar në bazën e kodit të MediaGoblin dhe pa shtuar logjikë të komplikuar për integrimin e Google Cloud?

Truku sub_filter në nginx

Me fat, gjetja e një zgjidhje të thjeshtë, ndonëse pak e shëmtuar. Shtova në konfigurimin default.conf në Nginx një filtrues të tillë:

sub_filter "/mgoblin_media/media_entries/" "https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/";
sub_filter_once off;

Në instalimin tim, Nginx punonte si një proxy midis MediaGoblin dhe përdoruesit përfundimtar. Direktiva e lartë i thotë Nginx-it të kryejë kërkimin dhe zëvendësimin e të gjitha përgjigjeve HTML nga MediaGoblin përpara se t'i dërgojë ato përdoruesit përfundimtar. Nginx zëvendëson gjithë rrugët relative të mediave nga MediaGoblin me URL-të nga ruajtja në të cilin Google.

Për shembull, MediaGoblin gjeneron këtë HTML:

Nginx e ndryshon përgjigjen:

Tani gjithçka funksionon siç duhet:

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
Nginx rregullon përgjigjet nga MediaGoblin, për të lejuar që klientët të kërkojnë mediat direkt nga ruajtja në Google.

E bukura në zgjidhjen time është se ajo nuk kërkon asnjë ndryshim në kodin e MediaGoblin. Direktiva e dy linjave e Nginx-it integron lehtësisht MediaGoblin me Google Cloud, ndonëse këto shërbime nuk dinë asgjë për njëra-tjetrën.

Shënim: kyçja për këtë zgjidhje është që skedarët në ruajtin në re të Google duhet të jenë të aksesueshëm për të gjitha. Për të reduktuar rrezikun e qasjes të paautorizuar, unë përdor një emër të gjatë rastësor për kontejnerin (p.sh., mediagoblin-39dpduhfz1wstbprmyk5ak29) dhe sigurohem që politika e kontrollit të aksesit të kontejnerit nuk lejon që përdoruesit e paautorizuar të nxjerrin përmbajtjen e katalogut.

Produkti përfundimtar

Në këtë moment, unë kisha një zgjidhje të plotë dhe funksionale. MediaGoblin kishte funksionuar me kënaqësi në kontejnerin e vet në platformën cloud të Google, kështu që nuk ishte e nevojshme të riparohej ose të përditësohej shpesh. Çdo gjë në procesin tim ishte e automatizuar dhe e riprodhueshme, duke lejuar ndryshime të thjeshta ose rikthim në versione të mëparshme.

Familja ime e ka pëlqyer shumë sa e lehtë është të shikosh video. Me hakatin e mësipërm për Nginx, puna me video tani ishte po aq e shpejtë sa në YouTube.

Ekrani i shikimit duket si më poshtë:

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
Përmbajtja e katalogut të videove familjare me etiketën 'Më të mirat'

Një klikim mbi miniaturën sjell një ekran të tillë:

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
Shikimi i një klipi të veçantë në serverin e medias

Pas një periudhë të gjatë pune, më bëri shumë kënaqësi t'u jepja të afërmve mundësinë të shihnin videot tona në një ndërfaqe kaq të përshtatshme si në YouTube, siç e kisha dëshiruar që në fillim.

Bonusi: ulja e kostove deri në më pak se 1 dollar në muaj.

Nuk e shihni videon në shtëpi shpesh, vetëm çdo disa muaj. Familja ime përbashkërisht ka gjeneruar rreth 20 orë trafik brenda një viti, por serveri ka punuar 24 orë. Çdo muaj paguaja $15 për serverin, i cili ishte i papunë 99.7% të kohës.

Në fund të vitit 2018, Google lëshoi një produkt. Cloud Run. Veçoria kryesore ishte nisja e kontejnerëve Docker aq shpejt saqë aplikacioni mund të përgjigjej në kërkesat HTTP. Kështu, serveri mund të qëndronte në modalitetin pritës - dhe të aktivizohej vetëm kur dikush donte të hynte. Për aplikacione të zakonshme si e imja, kostot u ulën nga 15 dollarë në muaj në disa cent në vit.

Për arsye që tashmë nuk i mbaj mend, Cloud Run nuk punonte me imazhin tim MediaGoblin. Por me shfaqjen e Cloud Run, kujtova se Heroku ofron një shërbim të ngjashëm falas, dhe mjetet e tyre janë shumë më të përdorshme se ato të Google.

Me serverin falas për aplikacione, shpenzimi i vetëm është ruajtja e të dhënave. Ruajtja standarde rajonale e Google kushton 2,3 centë/GB. Arkivi i videos zë 33 GB, kështu që unë paguaj vetëm 77 centë në muaj.

Misioni im i tetëvjeçar për digjitalizimin e 45 kasetave video. Pjesa 2
Kostoja e këtij zgjidhjeje është vetëm 0,77 $ në muaj.

Këshilla për ata që planifikojnë ta provojnë.

Sigurisht, procesi im ka marrë shumë kohë. Por shpresoj se kjo artikull do t'ju ndihmojë të kurseni 80-90% përpjekjeve për digitalizimin dhe publikimin e videove shtëpiake. Në një seksion të veçantë mund të gjeni një udhëzues të detajuar hap pas hapi për të gjithë procesin, por këtu janë disa këshilla të përgjithshme:

  • Në fazën e digitalizimit dhe redaktimit, ruani sa më shumë metadatash të mundshme.
    • Informacioni i çmuar shpesh është shkruar në etiketat e kasetave të videos.
    • Shkruani se cili klip është xhiruar nga cila kasetë dhe në çfarë rendi.
    • Shkruani datën e xhirimit, e cila mund të jetë e shënuar në video.
  • Mendoni për pagesën e shërbimeve profesionale të digitalizimit.
    • Do t'ju jetë jashtëzakonisht vështirë dhe e shtrenjtë të arrini një cilësi digitalizimi si ata.
    • Por shmangni kompaninë që quhet EverPresent (më shkruani nëse keni nevojë për detaje).
  • Nëse po e digjitizoni vetë, blini një HDD.
    • Një video e pakompresuar me rezolutë standarde zë 100-200 MB për minutë.
    • Unë gjithçka e kam ruajtur në Synology DS412+ (10 TB).
  • Shkruani metadata në ndonjë format të njohur që nuk është i lidhur me një aplikacion të caktuar.
    • Përshkrimet e videove, kodet e kohës, datat, etj.
    • Nëse ruani metadata në formatin e një aplikacioni të caktuar (ose, gjë më e keqe, nuk i ruani fare), atëherë nuk do të jeni në gjendje të ripërsërisni punën nëse vendosni të përdorni një zgjidhje tjetër.
    • Gjatë redaktimit, do të shihni shumë metadata të dobishme në video. Do t'i humbni ato nëse nuk i ruani.
      • Çfarë po ndodh në video?
      • Kush është aty?
      • Kur është regjistruar?
  • Shënoni videot e preferuara.
    • Sinqerisht, shumica e materialeve video të shtëpisë janë mjaft të mërzitura.
    • Unë aplikoj etiketën “best of” për videot e mia të preferuara dhe i hap ato kur dua të shikoj video argëtuese.
  • Sa më shpejt që të jetë e mundur, organizoni një zgjidhje gjithëpërfshirëse që procesi të ndodhë menjëherë nga fillimi në fund.
    • Unë përpiqesha fillimisht të digjitalizoj të gjitha kasetat, pastaj të redaktoj të gjitha kasetat, etj.
    • Më vjen keq që nuk kam filluar me një kasetë dhe nuk kam bërë gjithë punën me të. Atëherë do ta kuptonin se cilat zgjidhje dhe në cilat etapa ndikojnë në rezultatet përfundimtare.
  • Minimizoni ribërdhjen.
    • Çdo herë që editoj ose që ribërdh një klip, përkeqësoj cilësinë e tij.
    • Dixhitalizoni pamjet origjinale me cilësinë maksimale dhe pastaj ribërdhni çdo klip vetëm një herë në formatin që shfletuesit e riprodhojnë natyrshëm.
  • Përdorni zgjidhjen më të thjeshtë të mundshme për publikimin e videoklipeve.
    • Në retrospektivë, MediaGoblin duket si një mjet shumë i komplikuar për një skenar të thjeshtë të gjenerimit të faqeve në internet me një grup static të skedarëve video.
    • Nëse do të filloja gjithçka nga e para, do të përdorja një gjenerues faqeje statike si Hugo, Jekyll ose Gridsome.
  • Bëni montazh.
    • Montazhi i videove është një mënyrë interesante për të bashkuar momentet më të mira nga disa videoklipe.
    • Elementi më i rëndësishëm në montazh është muzika. P.sh., tema Slow Snow nga The National, është një zbulim personal për mua.

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster