PÀrast kÔigi klippide töötlemist tahtsin korraldada nende online-vaatamise sama mugavalt nagu YouTube'is. Kuna need on peremÀlestused, ei saa neid YouTube'is avaldada. Vajalik on privaatsem hosting, mis on samas mugav ja turvaline.
Samm 3. Avaldamine
ClipBucket, avatud lÀhtekoodiga YouTube'i kloon, mida saab installida oma serverisse.
Esmalt proovisin , mis nimetab end avatud lÀhtekoodiga YouTube'i klooniks, mille saab oma serverisse installida.

Ăllataval kombel puuduvad ClipBucketil igasugused installimisjuhised. Aitava ma kasutades , serverite konfiguratsiooni haldamise vahend.
Osaliselt seisnes raskus selles, et ClipBucketâi installimisskriptid on tĂ€ielikult katki. Sel ajal ma ja lepingu kohaselt ei tohtinud ma panustada avatud lĂ€htekoodiga YouTube'i klooni, kuid ma , millest on lihtne teha vajalikke muudatusi. Kuu aega lĂ€ks mööda, kuid nad ei saanud ikka aru, mis probleem oli. Selle asemel lisasid nad kĂ”ik suurem iga vĂ€ljalaskega vigasid.
ClipBucket töötas konsultatsioonimudelil â nad vabastavad oma koodi tasuta ja kĂŒsivad tasu abi eest selle juurutamisel. Aja jooksul sain aru, et ettevĂ”te, mis teenib raha tasulise toe pealt, pole tĂ”enĂ€oliselt vĂ€ga huvitatud sellest, et kliendid toote ise seadistaks.
MediaGoblin, kaasaaegsem alternatiiv
PÀrast mitmeid kuusid ClipBucketist pettumust tundes vaatasin lÀbi saadaolevad valikud ja leidsin .

 â iseseisev meediafailide jagamise platvorm
MediaGoblinil on palju toredaid funktsioone. Erinevalt ClipBucketist, mis on ehitatud inetul PHP-l, on MediaGoblin kirjutatud Pythonis â selle programmeerimise keelega mul on suur kogemus. On , mis vĂ”imaldab lihtsalt automatiseerida video ĂŒleslaadimist. Mis kĂ”ige tĂ€htsam, MediaGoblin on saadaval , mis vĂ€listab kĂ”ik installatsiooniprobleemid.
â tehnoloogia, mis loob rakendusele iseseisva keskkonna, mis töötab igal pool. Kasutan Dockerit paljudes oma projektides .
HĂ€mmastav raskus MediaGoblin'i taasdockeriseerimisel
Ma arvasin, et MediaGoblin'i docker-imaine juurutamine on triviaalne ĂŒlesanne. Noh, see ei lĂ€inud pĂ€ris nii.
Valmis pildist puudusid kaks vajalikku funktsiooni:
- Autentimine
- MediaGoblin loob vaikimisi avaliku meediaportali ja mul oli vaja viisi, kuidas piirata juurdepÀÀsu vÔÔrastele.
- Ămberkodeerimine
- Iga kord, kui laadite ĂŒles video, proovib MediaGoblin seda optimaalse striimimise jaoks ĂŒmber kodeerida. Kui video on algselt striimimiseks ette valmistatud, halveneb kvaliteet ĂŒmberkodeerimise kĂ€igus.
- MediaGoblin vÔimaldab , kuid olemasolevas Docker'i pildis pole seda vÔimalik teha.
Mis siis, pole probleemi. Docker'i pilt tuleb , seega on vÔimalik .
Kahjuks ei koostata Docker'i pilti enam praegusest . Olen proovinud selle sĂŒnkroonida viimase eduka versiooni kogumisega, kuid see ei Ă”nnestunud. Kuigi kasutasin tĂ€pselt sama koodi, on MediaGoblyni vĂ€listes sĂ”ltuvustes toimunud muudatusi, mis rikkuvad kogumise. Aastatepikkuse proovimise jĂ€rel jooksin taas ja taas 10â15-minutilise MediaGoblyni kogumisprotsessi, kuni see lĂ”puks tööle hakkas.
MÔned kuud hiljem juhtus sama asi. Kokku on viimase kahe aasta jooksul MediaGoblyni sÔltuvuste ahel mitu korda rikkuv minu kogumist, ja viimane kord juhtus see just siis, kui kirjutasin seda artiklit. LÔpuks avaldasin c ja selgelt mÀÀratletud teekide versioonidega. TeisisÔnu, kahtlaste vÀidete asemel, et MediaGoblin töötab igas versioonis >= 3.0, mÀÀrasin konkreetse sÔltuvuse versiooniks , kuna olin testinud MediaGoblini selle versiooniga. Tundub, et toode vajab , kuid ma pole sellega veel tegelenud.
Nii vÔi teisiti, pÀrast mitmeid tunde vÔitlust suutsin lÔpuks koguda ja seadistada MediaGoblini Docker'i pildiks. Seal oli juba lihtne ja .
Samm 4. Hosting
Kuna MediaGoblin töötas Dockeris minu kohalikul arvutil, oli jÀrgmine samm selle juurutamine pilveserverisse, et perekond saaks videoid vaadata.
MediaGoblin ja videofailide salvestamise probleem
On palju platvorme, mis aktsepteerivad Docker'i pilti ja paigutavad selle avalikule URL-ile. Probleemiks oli see, et lisaks rakendusele tuli avaldada 33 GB videofaile. Need oleks saanud Dockerâi pildisse kĂ”vaks kodeerida, kuid see oleks olnud mahukas ja koormav. Ăhe konfiguratsioonireal muutmine nĂ”uaks 33 GB andmete uuesti juurutamist.
Kui kasutasin ClipBucket'i, lahendasin probleemi  â utiliit, mis vĂ”imaldab operatsioonisĂŒsteemil kĂ€sitleda Google Cloud'i pilvesalvestuse kaustu nagu tavalisi failisĂŒsteemi teid. Paigaldasin videofailid Google Cloud'i ja kasutasin gcsfuse'i, et need kuvataks ClipBucket'is nagu kohalikud failid.
Erinevus seisnes selles, et ClipBucket töötas tĂ”eliselt virtuaalses masinas, samas kui MediaGoblin töötas Docker konteineris. Failide mountimine pilve salvestusest osutus siin palju keerulisemaks. Ma kulutasin kĂŒmneid tunde kĂ”igi probleemide lahendamisele ja kirjutasin sellest .

Algne MediaGoblin integreerimine Google Cloudi salvestusega, millest ma
PÀrast mitme nÀdala seadistamist töötas kÔik lÔpuks. Ilma MediaGoblin koodis mingeid muudatusi tegemata suutsin ma selle petliku viisil sundida, et see loeks ja kirjutaks meediafaile Google'i pilvesalvestusse.
Ainus probleem oli see, et MediaGoblin hakkas töötama ÀÀrmiselt aeglaselt. Videote miniatuuride laadimine avalehele kestis lausa 20 sekundit. Kui videot vaatamise ajal edasi hĂŒppasite, seisis MediaGoblin lĂ”pmatus 10 sekundit, enne kui ta taaskĂ€ivitamiseks jĂ€tkas.
Peamine probleem oli selles, et video ja pildid jĂ”udsid kasutajani keerulist, pikalt teed pidi. Need pidid minema Google'i pilvesalvestusest gcsfuse'i kaudu MediaGoblinisse, Nginxisse â ja alles siis jĂ”udsid nad kasutaja brauserisse. Peamine kitsaskoht oli gcsfuse, mis pole kiireks tööks optimeeritud. Arendajad hoiatavad suurete viivituste eest tööriista kasutamisel otse projekti avalehel:

Hoiatused gcsfuse'i dokumentatsioonis
Ideaalis peaks brauser faile otse Google Cloud'ist hankima, mööda minnes kĂ”igist vahekihtidest. Kuidas seda teha, sĂŒvenemata MediaGoblin'i koodibaasi ega lisamata keerulist Google Cloud'i integreerimise loogikat?
Nginx'i sub_filter trikk
Ănneks leidsin ma lihtsa, kuigi veidi kole lahendus. Lisasin Nginx'i default.conf konfiguratsiooni :
sub_filter "/mgoblin_media/media_entries/" "https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/";
sub_filter_once off;Minu Nginxi seadistus töötas vahendina MediaGoblin'i ja lĂ”ppkasutaja vahel. Ălaltoodud direktiiv kĂ€sib Nginx'il otsida ja asendada kĂ”iki MediaGoblin'i HTML-vastuseid, enne kui need edastatakse lĂ”ppkasutajale. Nginx asendab kĂ”ik suhtelised teed MediaGoblin'i meediafailidele Google'i pilvehoidla URL-idega.
NĂ€iteks genereerib MediaGoblin sellise HTML-i:
Nginx muudab vastuse:
NĂŒĂŒd lĂ€heb kĂ”ik nagu peab:

Nginx kirjutab ĂŒmber vastused MediaGoblin'ilt, et kliendid saaksid meediafaile otse Google'i pilvehoidlast taotleda.
Minu lahenduse juures on kÔige parem see, et see ei nÔua mingeid muudatusi MediaGoblin'i koodis. Kahe rida Nginxi direktiiv integreerib lihtsalt MediaGoblin'i ja Google Cloud'i, kuigi need teenused ei tea teineteisest absoluutselt midagi.
MÀrkus: see lahenduse jaoks peavad Google'i pilveladu failid olema kÔigile lugemiseks kergesti kÀttesaadavad. Volitamata juurdepÀÀsu riski vÀhendamiseks kasutan pikka juhuslikku konteineri nime (nÀiteks,
mediagoblin-39dpduhfz1wstbprmyk5ak29) ja kontrollin, et konteineri juurdepÀÀsupoliitika ei luba volitamata kasutajatel katalooge kuvada.
LÔplik toode
Selle hetke seisuga oli mul tÀielik ja toimiv lahendus. MediaGoblin töötas Ônnelikult oma konteineris Google'i pilveplatvormil, nii et seda ei pidanud tihti parandama ega vÀrskendama. KÔik mu protsessis oli automatiseeritud ja reprodutseeritav, vÔimaldades lihtsaid muudatusi vÔi tagasipöördumist varasemate versioonide juurde.
Minu perekond leidis, et videote sirvimine oli vĂ€ga lihtne. Ălaltoodud Nginx'i nippi kasutades on videotöötlus sama kiire kui YouTubes.
Kuva ekraan nÀeb vÀlja jÀrgmine:

Perekonna video katalooge sildi âParimâ jĂ€rgi
Miniatuuri klÔpsamine kuvab jÀrgmise ekraani:

Ăhe klipi vaatamine meedia serveris
Pika pÀrast pikka tööaega oli mul erakordselt meeldiv anda oma pereliikmetele vÔimalus vaadata meie videoid sama mugavas liideses nagu YouTube'is, nagu ma algselt tahtsin.
Boonus: kulude vÀhendamine alla 1 dollari kuus.
Te vaatate koduvideoid harva, vaid iga paari kuu tagant. Minu pere genereeris kokku umbes 20 tundi liiklust aastas, kuid server töötas ööpÀevaringse. Ma maksin igakuiselt 15 dollarit serveri eest, mis oli 99,7% ajast seisakusse.
2018. aasta lĂ”pus kĂ€ivitas Google toote. . TĂ”eliselt vĂ”imas funktsioon oli Docker-konteinerite kĂ€ivitamine nii kiiresti, et rakendus suutis vastata HTTP-pĂ€ringutele. See tĂ€hendas, et server vĂ”is jÀÀda ootereĆŸiimi â ja kĂ€ivituda ainult siis, kui keegi soovis sellele pÀÀseda. Selliste harva kasutatavate rakenduste, nagu minu omad, kulud vĂ€henesid 15 dollarilt kuus mĂ”ne senti aastas.
PÔhjustel, mida ma enam ei mÀleta, ei töötanud Cloud Run mu MediaGoblin pildiga. Kuid Cloud Runi ilmumisega meenutasin, et pakub sarnast teenust tasuta ning nende tööriistad on palju mugavamad kui Google'il.
Tasuta rakenduste serveriga on ainsaks kuluks andmete salvestamine. Google'standardne piirkondlik salvestus maksab 2,3 senti/GB. Videoarhiiv vÔtab 33 GB, seega maksab ma vaid 77 senti kuus.

Selle lahenduse maksumus on vaid 0,77 dollarit kuus.
NÔuanded neile, kes plaanivad proovida.
Ilmselt vĂ”ttis mul protsess palju aega. Kuid loodan, et see artikkel aitab Teil sÀÀsta 80-90% jĂ”upingutustest koduvideote digitaliseerimisel ja avaldamisel. Eraldi jaotises leiate kogu protsessi kohta, kuid siin on mĂ”ned ĂŒldised nĂ”uanded:
- Digitaliseerimise ja redigeerimise etapis salvestage vÔimalikult palju metaandmeid.
- Hinnaline teave on sageli kirjas videokassettide etikettidel.
- MÀrkige, milline klipp on salvestatud milliselt kassettidelt ja mis jÀrjekorras.
- MĂ€rkige ĂŒles filmimise kuupĂ€ev, mis vĂ”ib olla videol.
- MÔelge professionaalse digitaliseerimise teenuse tellimisele.
- Teil on ÀÀrmiselt raske ja kallis neid kvaliteedis vÔita.
- Kuid hoiduge EverPresent-nimelisest ettevÔttest (kirjutage mulle, kui vajate rohkem teavet).
- Kui digiteerite ise, ostke HDD.
- Kompresseerimata standardresolutsiooniga video vÔtab 100-200 MB minutis.
- Hoidsin kÔike oma (10 TB).
- Salvestage metainformatsioon mÔnes laialdaselt kasutatavas formaadis, mis ei ole seotud konkreetse rakendusega.
- Videoklippide kirjeldused, ajakoodid, kuupÀevad jne.
- Kui salvestate metainformatsiooni konkreetse rakenduse formaadis (vĂ”i, mis veelgi hullem, ĂŒldse mitte), ei saa te tööd uuesti teha, kui otsustate kasutada muud lahendust.
- Redigeerimise ajal nÀete videos palju kasulikku metainformatsiooni. Kaotate need, kui neid ei salvestata.
- Mis toimub videos?
- Kes seal on?
- Millal see on salvestatud?
- MĂ€rgi lemmikvideod.
- Ausalt öeldes on enamik koduvideomaterjalidest ĂŒsna igavad.
- Rakendan silti 'parimad' mu lemmikklippidele ja vaatan neid, kui mul on isu naljakate videote jÀrele.
- Korraldage vÔimalikult varakult kompleksne lahendus, et protsess algaks kohe algusest lÔpuni.
- Proovisin kÔigepealt digiteerida kÔik kassetid, seejÀrel redigeerida kÔik kassetid jne.
- Kahju, et ma ei alustanud ĂŒhest kassetist ja ei teinud kĂ”ike selle ĂŒmber. Siis oleksin aru saanud, millised lahendused ja millistel etappidel mĂ”jutavad lĂ”pptulemust.
- Minimeerige ĂŒmberkodeerimist.
- Iga kord, kui te redigeerite vĂ”i ĂŒmberkodeerite klippi, halveneb selle kvaliteet.
- Digiteerige toor ĐșаЎri maksimaalse kvaliteediga ja kodeerige iga klipp ainult ĂŒks kord formaati, mida brauserid natiivselt esitavad.
- Kasutage videoklippide avaldamiseks kÔige lihtsamat lahendust.
- Tagasi vaadates tundub MediaGoblin liiga keeruline tööriist suhteliselt lihtsa veebilehe genereerimise stsenaariumi jaoks, kus on staatiliste videotega komplekt.
- Kui ma alustaksin alates algusest, kasutaksin staatiliste veebisaitide generaatorit, nÀiteks , vÔi .
- Tehke montaaĆŸ.
- VideomontaaĆŸ on huvitav viis ĂŒhendada parimad hetked mitmest videost.
- MontaaĆŸi peamine osa on muusika. NĂ€iteks sobib suurepĂ€raselt laul ansamblilt The National, see on minu isiklik avastus.
Allikas: habr.com
