Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2

Pjesa e parë përshkruan përpjekjen e vështirë për të dixhitalizuar videot e vjetra familjare dhe për t'i ndarë ato në skena të veçanta. Pasi përpunova të gjitha klipet, doja të organizoja shikimin e tyre në internet po aq të përshtatshëm sa në YouTube. Meqenëse këto janë kujtime personale familjare, ato nuk mund të postohen në vetë YouTube. Ne kemi nevojë për një pritje më private që është sa e përshtatshme dhe e sigurt.

Hapi 3. Publikimi

ClipBucket, një klon YouTube me burim të hapur që mund ta instaloni në serverin tuaj

Para së gjithash u përpoqa ClipBucket, i cili e quan veten një klon YouTube me burim të hapur që mund ta instaloni në serverin tuaj.

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2

Çuditërisht, ClipBucket nuk ka asnjë udhëzim instalimi. Falë menaxhimi i jashtëm я automatizoi procesin e instalimit me ndihmën e Ansible, një mjet i menaxhimit të konfigurimit të serverit.

Një pjesë e vështirësisë ishte se skriptet e instalimit të ClipBucket ishin thyer plotësisht. Në atë kohë unë ka punuar në Google dhe sipas kushteve të kontratës nuk kisha të drejtë të kontribuoja në klonimin me kod të hapur të YouTube, por unë postoi një raport të defektitnga e cila ishte e lehtë të bëheshin korrigjimet e nevojshme. Kaluan muaj dhe ata ende nuk e kuptonin se cili ishte problemi. Në vend të kësaj, ata shtuan gjithçka больше gabime në çdo version.

ClipBucket punoi në një model këshillimi - ata lëshuan kodin e tyre falas dhe tarifuan për ndihmë me vendosjen. Gradualisht më kuptoi se një kompani që fiton para nga mbështetja me pagesë ndoshta nuk është shumë e interesuar që klientët të instalojnë vetë produktin.

MediaGoblin, një alternativë më moderne

Pas disa muajsh zhgënjimi me ClipBucket, shqyrtova opsionet e disponueshme dhe gjeta goblin mediatik.

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
goblin mediatik është një platformë e pavarur për ndarjen e mediave

MediaGoblin ka shumë të mira. Ndryshe nga ClipBucket në PHP të shëmtuar, MediaGoblin është shkruar në Python, një gjuhë me të cilën kam shumë përvojë në shkrimin e kodit. Hani ndërfaqja e linjës së komandës, gjë që e bën të lehtë automatizimin e shkarkimeve të videove. Më e rëndësishmja, MediaGoblin hyn Imazhi i dokerit, i cili eliminon çdo problem me instalimin.

prerës është një teknologji që krijon një mjedis të pavarur për një aplikacion që funksionon kudo. Unë jam duke përdorur Docker në shumë nga projektet e mia.

Vështirësia befasuese e ridokerizimit të MediaGoblin

Unë supozova se vendosja e një imazhi doker të MediaGoblin do të ishte një detyrë e parëndësishme. Epo, nuk funksionoi në atë mënyrë.

Në imazhin e përfunduar, kishte dy funksione të nevojshme:

  • vërtetim
    • MediaGoblin krijon si parazgjedhje një portal publik mediatik dhe më duhej një mënyrë për të kufizuar aksesin e të huajve.
  • Transkodimi
    • Sa herë që ngarkoni një video, MediaGoblin përpiqet ta rikodojë atë për transmetim optimal. Nëse videoja është fillimisht gati për transmetim, transkodimi degradon cilësinë.
    • MediaGoblin Ofron çaktivizimi i transkodimit nëpërmjet opsioneve të konfigurimit, por nuk është e mundur ta bëni këtë në një imazh ekzistues Docker.

Epo, nuk ka problem. Imazhi Docker vjen me burim i hapur, Pra ti mundesh rindërtoni vetë.

Fatkeqësisht, imazhi i Docker nuk është më i ndërtuar nga rryma Depoja e MediaGoblin. U përpoqa ta sinkronizoja me versionin nga ndërtimi i fundit i suksesshëm, por as kjo nuk funksionoi. Edhe pse përdora saktësisht të njëjtin kod, varësitë e jashtme të MediaGoblin ndryshuan, duke thyer ndërtimin. Dhjetra orë më vonë, unë drejtova procesin 10-15 minuta të ndërtimit të MediaGoblin pa pushim derisa më në fund funksionoi.

E njëjta gjë ndodhi disa muaj më vonë. Në total, gjatë dy viteve të fundit, zinxhiri i varësisë së MediaGoblin ka thyer ndërtimin tim disa herë, dhe hera e fundit që ndodhi ishte pikërisht kur po shkruaja këtë artikull. Përfundova duke postuar forku i vet i MediaGoblin c varësitë e koduara të forta dhe versionet e bibliotekës të specifikuara në mënyrë eksplicite. Me fjalë të tjera, në vend të pretendimit të dyshimtë se MediaGoblin punon me çdo version selino >= 3.0, kam instaluar varësi specifike nga versioni selino 4.2.1, sepse kam testuar MediaGoblin me këtë version. Duket sikur produkti ka nevojë mekanizëm ndërtimi i riprodhueshëmpor nuk e kam bërë akoma.

Gjithsesi, pas shumë orësh mundimi, më në fund arrita të ndërtoj dhe konfiguroj MediaGoblin në një imazh Docker. Tashmë ishte e lehtë kapërceni transkodimin e panevojshëm и instaloni Nginx për vërtetim.

Hapi 4. Pritja

Meqenëse MediaGoblin po ekzekutonte Docker në makinën time lokale, hapi tjetër ishte vendosja në një server cloud në mënyrë që familja të mund të shikonte videon.

MediaGoblin dhe problemi i ruajtjes së videos

Ka shumë platforma që marrin një imazh Docker dhe e mbajnë atë në një URL publike. Kapja është se përveç vetë aplikacionit, duhej të publikoheshin 33 GB skedarë video. Ishte e mundur t'i kodosh ato në një imazh doker, por doli të ishte i rëndë dhe i shëmtuar. Ndryshimi i një linje konfigurimi do të kërkonte një rishpërndarje prej 33 GB të dhënash.

Kur përdora ClipBucket, e zgjidha problemin me gcsfuse - një mjet që lejon sistemin operativ të ngarkojë drejtoritë në ruajtjen e resë kompjuterike të Google Cloud si shtigje të rregullta drejt sistemit të skedarëve. I prita skedarët video në Google Cloud dhe përdora gcsfuse për t'i shfaqur ato si skedarë lokalë në ClipBucket.

Dallimi ishte se ClipBucket funksiononte në një makinë virtuale të vërtetë, ndërsa MediaGoblin funksiononte në një kontejner Docker. Këtu, montimi i skedarëve nga ruajtja e cloud doli të ishte shumë më i vështirë. Kam kaluar dhjetëra orë duke zgjidhur të gjitha problemet dhe kam shkruar për të i gjithë postimi në blog.

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
Integrimi fillestar i MediaGoblin me ruajtjen e Google Cloud, i cili I thënë në vitin 2018

Pas disa javësh rregullimi të të gjithë komponentëve, gjithçka funksionoi. Pa bërë asnjë ndryshim në kodin MediaGoblin, unë mashtroj për ta bërë atë të lexojë dhe të shkruajë skedarë mediash në ruajtjen e cloud të Google.

Problemi i vetëm ishte se MediaGoblin filloi të punonte në mënyrë të pahijshme ngadalë. U deshën 20 sekonda për të ngarkuar miniaturat e videos në faqen kryesore. Nëse hidheshe përpara ndërsa shikoje një video, MediaGoblin ndaloi për 10 sekonda të pafundme përpara se të rifillonte riprodhimin.

Problemi kryesor ishte se videot dhe fotot i shkonin përdoruesit në një mënyrë të gjatë dhe rrethrrotulluese. Atyre iu desh të kalonin nga ruajtja në cloud e Google përmes gcsfuse në MediaGoblin, Nginx - dhe vetëm atëherë ata hynë në shfletuesin e përdoruesit. Gryka e ngushtë ishte gcsfuse, e cila nuk është e optimizuar për performancë të shpejtë. Zhvilluesit paralajmërojnë për vonesa të mëdha në shërbimin direkt në faqen kryesore të projektit:

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
paralajmërimet për performancën e dobët në dokumentacionin gcsfuse

Idealisht, shfletuesi duhet të tërheqë skedarë direkt nga Google Cloud, duke anashkaluar të gjitha shtresat e ndërmjetme. Si ta bëj këtë pa hyrë thellë në bazën e kodeve MediaGoblin dhe duke shtuar logjikën komplekse të integrimit të Google Cloud?

Mashtrimi i sub_filterit në nginx

Megjithatë, për fat të mirë gjeta një zgjidhje të lehtë немного i shëmtuar. I shtova konfigurimit default.conf në Nginx një filtër të tillë:

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

Në konfigurimin tim, Nginx veproi si një përfaqësues midis MediaGoblin dhe përdoruesit përfundimtar. Direktiva e mësipërme i thotë Nginx të kërkojë dhe zëvendësojë të gjitha përgjigjet HTML të MediaGoblin përpara se t'i shërbejë ato te përdoruesi fundor. Nginx zëvendëson të gjitha shtigjet përkatëse për skedarët e medias MediaGoblin me URL nga ruajtja në renë kompjuterike të Google.

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

<video width="720" height="480" controls autoplay>
  <source
    src="/mgoblin_media/media_entries/16/Michael-riding-a-bike.mp4"
    type="video/mp4">
</video>

Nginx ndryshon përgjigjen:

<video width="720" height="480" controls autoplay>
  <source
    src="https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/16/Michael-riding-a-bike.mp4"
    type="video/mp4">
</video>

Tani gjithçka funksionon siç duhet:

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
Nginx rishkruan përgjigjet nga MediaGoblin në mënyrë që klientët të mund të kërkojnë skedarë mediash direkt nga ruajtja e cloud e Google

Pjesa më e mirë e zgjidhjes sime është se ajo nuk kërkon ndonjë ndryshim në kodin MediaGoblin. Direktiva me dy linja Nginx integron pa probleme MediaGoblin dhe Google Cloud, edhe pse të dy shërbimet nuk dinë asgjë për njëri-tjetrin.

Shënim: Kjo zgjidhje kërkon që skedarët në Google Cloud Storage të jenë të lexueshëm nga të gjithë. Për të zvogëluar rrezikun e aksesit të paautorizuar, unë përdor një emër të gjatë të rastësishëm të kovës (për shembull, mediagoblin-39dpduhfz1wstbprmyk5ak29) dhe verifikoni që politika e kontrollit të aksesit të kovës nuk i lejon përdoruesit e paautorizuar të shfaqin përmbajtjen e drejtorisë.

Produkti final

Në këtë pikë, unë pata një zgjidhje të plotë, funksionale. MediaGoblin funksionoi me kënaqësi në kontejnerin e vet në platformën e resë kompjuterike të Google, kështu që nuk kishte nevojë të rregullohej ose përditësohej shpesh. Çdo gjë në procesin tim ishte e automatizuar dhe e riprodhueshme, duke lejuar modifikime të thjeshta ose rikthime në versionet e mëparshme.

Familjes sime i pëlqeu shumë sa e lehtë është të shikosh video. Me ndihmën e hakimit Nginx të përshkruar më sipër, puna me video u bë aq e shpejtë sa në YouTube.

Ekrani i shikimit duket si ky:

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
Përmbajtja e katalogut të videove familjare sipas etiketës "Më të mirat"

Duke klikuar në miniaturë shfaqet ekrani i mëposhtëm:

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
Shikimi i një klipi individual në një server mediatik

Pas shumë vitesh punë, isha jashtëzakonisht i kënaqur që u dhashë të afërmve mundësinë për të parë videot tona në të njëjtën ndërfaqe të përshtatshme si në YouTube, të cilën fillimisht e dëshiroja.

Bonus: Ulja e kostos në më pak se 1 dollarë në muaj

Ju shikoni video në shtëpi rrallë, vetëm çdo disa muaj. Familja ime gjeneronte kolektivisht rreth 20 orë trafik në vit, por serveri funksiononte 15/99,7. Kam paguar XNUMX dollarë në muaj për një server që ishte në rënie XNUMX% të rasteve.

Në fund të vitit 2018, Google lëshoi ​​​​një produkt Cloud Run. Funksioni vrasës po ekzekutonte kontejnerët Docker aq shpejt sa që aplikacioni mund t'i përgjigjej kërkesave HTTP. Kjo do të thotë, serveri mund të mbetet në modalitetin e gatishmërisë - dhe të fillojë vetëm kur dikush dëshiron të shkojë tek ai. Për aplikacionet e përdorura rrallë si të miat, kostot kanë shkuar nga 15 dollarë në muaj në disa cent në vit.

Për arsye që nuk i mbaj mend, Cloud Run nuk funksionoi me imazhin tim MediaGoblin. Por me ardhjen e Cloud Run, m'u kujtua kjo Heroku ofron një shërbim të ngjashëm falas dhe mjetet e tyre janë shumë më të përshtatshme se ato të Google.

Me një server aplikacioni falas, shpenzimi i vetëm është ruajtja e të dhënave. Memoria standarde rajonale e Google kushton 2,3 cent/GB. Arkivi i videove është 33 GB, kështu që paguaj vetëm 77 cent në muaj.

Kërkimi im tetë-vjeçar për të dixhitalizuar 45 videokaseta. Pjesa 2
Kjo zgjidhje kushton vetëm 0,77 dollarë në muaj

Këshilla për ata që do të provojnë

Natyrisht, procesi më mori shumë kohë. Por shpresoj se ky artikull do t'ju ndihmojë të kurseni 80-90% të përpjekjeve tuaja për dixhitalizimin dhe publikimin e videove në shtëpi. Në një seksion të veçantë mund të gjeni udhëzues i detajuar hap pas hapi gjatë gjithë procesit, por këtu janë disa këshilla të përgjithshme:

  • Ruani sa më shumë të dhëna meta gjatë fazës së dixhitalizimit dhe redaktimit.
    • Informacioni i vlefshëm shpesh regjistrohet në etiketat e videokasetave.
    • Regjistroni cili klip është marrë nga cila kasetë dhe në çfarë radhe.
    • Shkruani datën e xhirimit, e cila mund të tregohet në video.
  • Merrni parasysh të paguani për shërbimet profesionale të dixhitalizimit.
    • Ju do të jashtëzakonisht është e vështirë dhe e kushtueshme t'i përputhen ato për sa i përket cilësisë së dixhitalizimit.
    • Por qëndroni larg një kompanie të quajtur EverPresent (më tregoni nëse keni nevojë për më shumë detaje).
  • Nëse e bëni vetë dixhitalizimin, blini një HDD.
    • Videoja e pakompresuar me definicion standard merr 100-200 MB në minutë.
    • Unë mbaja gjithçka me vete Sinologjia DS412 + (10 TB).
  • Shkruani meta të dhënat në një format të zakonshëm që nuk është i lidhur me një aplikacion specifik.
    • Përshkrimet e klipeve, kodet e kohës, datat, etj.
    • Nëse ruani meta të dhënat në një format specifik për aplikacionin (ose më keq, mos i ruani fare), nuk do të mund ta ribëni punën nëse vendosni të përdorni një zgjidhje tjetër.
    • Gjatë redaktimit, shihni shumë meta të dhëna të dobishme në video. Do t'i humbisni nëse nuk i ruani.
      • Çfarë po ndodh në video?
      • Kush është i regjistruar atje?
      • Kur është regjistruar?
  • Etiketoni videot tuaja të preferuara.
    • Për të qenë i sinqertë, shumica e përmbajtjeve video në shtëpi janë mjaft të mërzitshme.
    • Unë aplikoj etiketën "më e mira nga" në klipet e mia të preferuara dhe i hap ato kur dua të shikoj video qesharake.
  • Organizoni një zgjidhje gjithëpërfshirëse sa më shpejt që të jetë e mundur në mënyrë që procesi të shkojë menjëherë nga fillimi në fund.
    • Unë u përpoqa të digjitalizoja të gjitha kasetat në fillim, pastaj të redaktoja të gjitha kasetat, etj.
    • Sa keq që nuk e nisa me një kasetë dhe e bëja gjithë punën me të. Atëherë do të kuptoja se cilat vendime dhe në cilat faza ndikojnë në rezultatin përfundimtar.
  • Minimizo rikodimin.
    • Sa herë që redaktoni ose rikodoni një klip, ju degradoni cilësinë e tij.
    • Dixhitalizoni pamjet e papërpunuara me cilësi maksimale, më pas transkodoni çdo klip saktësisht një herë në formatin që shfletuesit luajnë në mënyrë origjinale.
  • Përdorni zgjidhjen më të thjeshtë të mundshme për postimin e videoklipeve.
    • Në pamje të pasme, MediaGoblin duket si një mjet tepër kompleks për një skenar mjaft të thjeshtë të krijimit të faqeve në internet me një grup statik skedarësh video.
    • Nëse do të filloja nga e para, do të përdorja një gjenerues statik siti si p.sh Hugo, Jekyll ose E zymtë.
  • Bëni një montazh.
    • Redaktimi i videos është një mënyrë argëtuese për të kombinuar momentet më të mira nga video të shumta.
    • Gjëja kryesore në redaktim është muzika. Për shembull, tema është e mahnitshme Dëborë e ngadaltë nga The National, ky është zbulimi im personal.

Burimi: www.habr.com

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster