. 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 , i cili e quan veten një klon YouTube me burim të hapur që mund ta instaloni në serverin tuaj.

Çuditërisht, ClipBucket nuk ka asnjë udhëzim instalimi. Falë я me ndihmën e , 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ë dhe sipas kushteve të kontratës nuk kisha të drejtë të kontribuoja në klonimin me kod të hapur të YouTube, por unë nga 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 .

ë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 , gjë që e bën të lehtë automatizimin e shkarkimeve të videove. Më e rëndësishmja, MediaGoblin hyn , i cili eliminon çdo problem me instalimin.
është një teknologji që krijon një mjedis të pavarur për një aplikacion që funksionon kudo. Unë jam duke përdorur Docker në .
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 , por nuk është e mundur ta bëni këtë në një imazh ekzistues Docker.
Epo, nuk ka problem. Imazhi Docker vjen me , Pra ti mundesh .
Fatkeqësisht, imazhi i Docker nuk është më i ndërtuar nga rryma . 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 c 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 >= 3.0, kam instaluar varësi specifike nga versioni , sepse kam testuar MediaGoblin me këtë version. Duket sikur produkti ka nevojë por 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ë и .
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 - 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ë .

Integrimi fillestar i MediaGoblin me ruajtjen e Google Cloud, i cili I
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:

paralajmërimet 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 :
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:

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:

Përmbajtja e katalogut të videove familjare sipas etiketës "Më të mirat"
Duke klikuar në miniaturë shfaqet ekrani i mëposhtëm:

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 . 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 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.

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 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 (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 , ose .
- 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 nga The National, ky është zbulimi im personal.
Burimi: www.habr.com
