Etter Ä ha behandlet alle klippene, ville jeg gjÞre dem like enkle Ä se pÄ nettet som de er pÄ YouTube. Siden dette er personlige familieminner, kan de ikke legges ut pÄ selve YouTube. Det trengs en mer privat lagringsplass, som er bÄde praktisk og sikker.
Trinn 3. Publisering
ClipBucket, en YouTube-klone med Äpen kildekode som du kan installere pÄ din egen server
Det fÞrste jeg prÞvde var , som kaller seg en Äpen kildekode YouTube-klone som du kan installere pÄ serveren din.

Overraskende nok gir ikke ClipBucket noen installasjonsinstruksjoner. Takk. Ń via , et verktĂžy for administrasjon av serverkonfigurasjon.
Noe av problemet var at ClipBuckets installasjonsskript var fullstendig Þdelagte. PÄ den tiden, jeg og i henhold til kontraktsvilkÄrene hadde jeg ingen rett til Ä bidra til YouTube-klonen med Äpen kildekode, men jeg , hvorfra de nÞdvendige rettelsene lett kunne gjÞres. MÄneder gikk, og de forsto fortsatt ikke hva problemet var. I stedet la de til alt mer enn feil i hver utgivelse.
ClipBucket var et konsulentselskap â de ga ut koden sin gratis og tok betalt for hjelp med utrulling. Det gikk gradvis opp for meg at et selskap som tjener penger pĂ„ betalt support sannsynligvis ikke er sĂŠrlig interessert i Ă„ la kundene installere produktet selv.
MediaGoblin, et mer moderne alternativ
Etter mÄneder med frustrasjon med ClipBucket, sÄ jeg pÄ alternativene mine og fant ut .

â er en frittstĂ„ende plattform for deling av mediefiler
MediaGoblin har mye godbiter. I motsetning til ClipBucket i den skjemmende PHP-versjonen, er MediaGoblin skrevet i Python, et sprÄk jeg har mye erfaring med koding i. Det finnes , noe som gjÞr det enkelt Ä automatisere videonedlastinger. Viktigst av alt, MediaGoblin kommer inn , noe som eliminerer eventuelle problemer med installasjonen.
â er en teknologi som skaper et selvstendig miljĂž for en applikasjon som kjĂžrer hvor som helst. Jeg bruker Docker i .
Den overraskende vanskeligheten med Ă„ re-dockerisere MediaGoblin
Jeg antok at det Ă„ distribuere et docker-image for MediaGoblin ville vĂŠre en triviell oppgave. Vel, det fungerte ikke helt slik.
Det ferdige bildet manglet to nĂždvendige funksjoner:
- Autentisering
- MediaGoblin oppretter en offentlig medieportal som standard, og jeg trengte en mÄte Ä begrense tilgang fra utenforstÄende.
- Transkoding
- Hver gang du laster opp en video, prĂžver MediaGoblin Ă„ transkode den for optimal strĂžmming. Hvis videoen opprinnelig var klar for strĂžmming, vil transkoding forringe kvaliteten.
- MediaGoblin tilbyr , men det er ikke mulig Ă„ gjĂžre dette i det eksisterende Docker-imaget.
Vel, ikke noe problem. Docker-imaget leveres med , sÄ det er mulig .
Dessverre er ikke Docker-imaget lenger bygget fra den nĂ„vĂŠrende Jeg prĂžvde Ă„ synkronisere den med versjonen fra den siste vellykkede byggingen, men det mislyktes ogsĂ„. Selv om jeg brukte nĂžyaktig samme kode, hadde MediaGoblins eksterne avhengigheter endret seg, noe som Ăždela byggingen. Etter dusinvis av timer kjĂžrte jeg MediaGoblins 10â15 minutter lange byggeprosess om og om igjen helt til den endelig fungerte.
Noen mÄneder senere skjedde det samme. Totalt sett har MediaGoblins avhengighetskjede Þdelagt byggingen min flere ganger de siste par Ärene, sist da jeg skrev denne artikkelen. Jeg publiserte til slutt c og eksplisitt spesifiserte bibliotekversjoner. Med andre ord, i stedet for den tvilsomme pÄstanden om at MediaGoblin fungerer med alle versjoner >= 3.0, jeg satte den spesifikke avhengigheten til versjon , fordi jeg testet MediaGoblin med denne versjonen. Det ser ut til at produktet trenger , men det har jeg ikke gjort ennÄ.
Uansett, etter mange timers strev, klarte jeg endelig Ă„ bygge og konfigurere MediaGoblin i et Docker-image. Det var enkelt nok. Đž .
Trinn 4. Hosting
Siden MediaGoblin kjÞrte under Docker pÄ min lokale maskin, var neste steg Ä distribuere det til en skytjener slik at familien kunne se videoene.
MediaGoblin og videolagringsproblemet
Det finnes mange plattformer som tar et Docker-image og lagrer det pÄ en offentlig URL. Problemet er at i tillegg til selve applikasjonen mÄtte 33 GB med videofiler publiseres. Det ville vÊrt mulig Ä hardkode dem inn i Docker-imaget, men det ville vÊrt tungvint og stygt. à endre én konfigurasjonslinje ville krevd Ä distribuere 33 GB med data pÄ nytt.
Da jeg brukte ClipBucket, lĂžste jeg problemet med â et verktĂžy som lar operativsystemet laste opp mapper til Google Cloud-lagring som vanlige filsystemstier. Jeg lagret videofiler pĂ„ Google Cloud og brukte gcsfuse for Ă„ fĂ„ dem til Ă„ vises som lokale filer i ClipBucket.
Forskjellen var at ClipBucket kjÞrte i en ekte virtuell maskin, mens MediaGoblin kjÞrte i en Docker-container. Her viste det seg Ä vÊre mye vanskeligere Ä montere filer fra skylagring. Jeg brukte dusinvis av timer pÄ Ä lÞse alle problemene og skrev om det. .

MediaGoblins fĂžrste integrasjon med Google Cloud-lagring, som jeg
Etter noen uker med finjusteringer av alt, fungerte det. Uten Ă„ gjĂžre noen endringer i MediaGoblins kode, klarte jeg Ă„ jukse den til Ă„ lese og skrive mediefiler til Google Cloud Storage.
Det eneste problemet var at MediaGoblin ble ubehagelig treg. Det tok hele 20 sekunder fÞr videominiatyrene lastet inn pÄ hjemmesiden. Hvis du hoppet fremover mens du sÄ pÄ en video, ville MediaGoblin pause i uendelige 10 sekunder fÞr avspillingen fortsatte.
Hovedproblemet var at videoer og bilder ble sendt til brukeren via en lang, omvei. De mĂ„tte gĂ„ fra Googles skylagring via gcsfuse til MediaGoblin, Nginx â og fĂžrst da nĂ„dde de brukerens nettleser. Den stĂžrste flaskehalsen var gcsfuse, som ikke er optimalisert for rask drift. Utviklerne advarer om store forsinkelser i verktĂžyets drift rett pĂ„ prosjektets hovedside:

Rediger advarsler i gcsfuse-dokumentasjonen
Ideelt sett bÞr nettleseren hente filer direkte fra Google Cloud, og omgÄ alle mellomlagene. Hvordan kan dette gjÞres uten Ä fordype seg i MediaGoblin-kodebasen og legge til kompleks Google Cloud-integrasjonslogikk?
sub_filter-trikset i nginx
Heldigvis fant jeg en enkel lĂžsning, selv om ĐœĐ”ĐŒĐœĐŸĐłĐŸ stygg. Jeg la til i default.conf-konfigurasjonen i Nginx :
sub_filter "/mgoblin_media/media_entries/" "https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/";
sub_filter_once off;I mitt oppsett fungerer Nginx som en proxy mellom MediaGoblin og sluttbrukeren. Direktivet ovenfor forteller Nginx at den skal utfÞre et sÞk og erstatt pÄ alle MediaGoblin HTML-svar fÞr de leveres til sluttbrukeren. Nginx erstatter alle relative stier til MediaGoblin-mediefiler med URL-er fra Google Cloud Storage.
For eksempel genererer MediaGoblin HTML slik:
<video width="720" height="480" controls autoplay>
<source
src="/mgoblin_media/media_entries/16/Michael-riding-a-bike.mp4"
type="video/mp4">
</video>Nginx endrer svaret:
<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>NÄ faller alt pÄ plass som det skal:

Nginx omskriver svar fra MediaGoblin slik at klienter kan be om mediefiler direkte fra Google Cloud Storage
Det beste med lĂžsningen min er at den ikke krever noen endringer i MediaGoblin-koden. Et tolinjers Nginx-direktiv integrerer MediaGoblin og Google Cloud sĂžmlĂžst, selv om tjenestene ikke er fullstendig klar over hverandre.
NoteDenne lĂžsningen krever at filene i Google Cloud Storage er lesbare for alle. For Ă„ redusere risikoen for uautorisert tilgang bruker jeg et langt, tilfeldig bucket-navn (f.eks.
mediagoblin-39dpduhfz1wstbprmyk5ak29) og sjekk at bĂžttas tilgangskontrollpolicy ikke tillater uautoriserte brukere Ă„ liste opp innholdet i katalogen.
Sluttprodukt
PÄ dette tidspunktet hadde jeg en komplett, fungerende lÞsning. MediaGoblin kjÞrte fint i sin egen container pÄ Google Cloud Platform, sÄ den trengte ikke Ä bli oppdatert eller oppdatert sÄ ofte. Alt i prosessen min var automatisert og repeterbart, noe som muliggjorde enkle redigeringer eller tilbakestillinger til tidligere versjoner.
Familien min likte veldig godt hvor enkelt det var Ä se pÄ videoer. Med Nginx-hacket ovenfor ble det like raskt Ä se pÄ videoer som Ä se pÄ YouTube.
Visningsskjermen ser slik ut:

Familievideokataloginnhold merket med «Best»
Hvis du klikker pÄ miniatyrbildet, fÄr du opp et skjermbilde som dette:

Vise et enkelt klipp pÄ en medieserver
Etter mange Ärs arbeid var det utrolig givende Ä gi familien min muligheten til Ä se videoene vÄre i det samme brukervennlige grensesnittet som YouTube, noe jeg opprinnelig Þnsket.
Bonus: Reduser kostnadene til under 1 dollar per mÄned
Du ser ikke pÄ hjemmevideoer sÄ ofte, bare med noen fÄ mÄneders mellomrom. Familien min genererte til sammen omtrent 20 timer med trafikk per Är, men serveren kjÞrte dÞgnet rundt. Jeg betalte 15 dollar i mÄneden for en server som var inaktiv 99,7 % av tiden.
PÄ slutten av 2018 lanserte Google et produkt Den beste funksjonen var Ä starte Docker-containere sÄ raskt at applikasjonen kunne svare pÄ HTTP-forespÞrsler. Det betydde at serveren kunne stÄ inaktiv og bare starte nÄr noen ville besÞke den. For sjelden startet applikasjoner som min, falt kostnaden fra 15 dollar i mÄneden til noen fÄ cent i Äret.
Av grunner jeg ikke husker, fungerte ikke Cloud Run med MediaGoblin-imaget mitt. Men med Cloud Runs fremvekst husket jeg at tilbyr en lignende tjeneste gratis, og verktĂžyene deres er mye mer brukervennlige enn Googles.
Med den gratis appserveren er den eneste kostnaden lagring. Googles standard regionale lagring koster 2,3 cent/GB. Videoarkivet er pÄ 33 GB, sÄ jeg betaler bare 77 cent per mÄned.

Denne lÞsningen koster bare 0,77 dollar per mÄned
Tips til de som skal prĂžve
Prosessen tok meg selvsagt lang tid. Men jeg hĂ„per at denne artikkelen vil hjelpe deg med Ă„ spare 80â90 % av arbeidet med digitalisering og publisering av hjemmevideoer. I en egen seksjon finner du gjennom hele prosessen, men her er noen generelle tips:
- Bevar sÄ mye metadata som mulig i digitaliserings- og redigeringsfasen.
- Verdifull informasjon stÄr ofte skrevet pÄ etikettene til videokassetter.
- Noter deg hvilket klipp som ble filmet fra hvilket bÄnd og i hvilken rekkefÞlge.
- VÊr oppmerksom pÄ innspillingsdatoen, som kan vÊre angitt pÄ videoen.
- Vurder Ă„ betale for profesjonelle digitaliseringstjenester.
- Du vil vÊre ekstremt Det er vanskelig og dyrt Ä matche dem nÄr det gjelder digitaliseringskvalitet.
- Men hold deg unna et selskap som heter EverPresent (send meg en e-post for mer informasjon).
- Hvis du digitaliserer selv, kjĂžp en harddisk.
- Ukomprimert standarddefinisjonsvideo tar opp 100â200 MB per minutt.
- Jeg beholdt alt for meg selv (10 TB).
- Skriv metadata i et vanlig format som ikke er knyttet til et bestemt program.
- Klippbeskrivelser, tidskoder, datoer osv.
- Hvis du lagrer metadata i et programspesifikt format (eller enda verre, ikke lagrer det i det hele tatt), vil du ikke kunne gjÞre arbeidet ditt pÄ nytt hvis du bestemmer deg for Ä bruke en annen lÞsning.
- NÄr du redigerer, ser du mange nyttige metadata i videoen din. Du vil miste dem hvis du ikke lagrer dem.
- Hva skjer i videoen?
- Hvem er registrert der?
- NÄr ble dette spilt inn?
- Merk favorittvideoene dine.
- For Ă„ vĂŠre ĂŠrlig, er de fleste hjemmevideoopptak ganske kjedelige.
- Jeg bruker «best of»-taggen pÄ favorittklippene mine og Äpner dem nÄr jeg vil se morsomme videoer.
- Organiser en helhetlig lÞsning sÄ tidlig som mulig, slik at prosessen gÄr fra start til slutt.
- Jeg prĂžvde fĂžrst Ă„ digitalisere alle kassettene, deretter redigere alle kassettene osv.
- Det er synd at jeg ikke startet med ett bÄnd og gjorde alt arbeidet med det. Da ville jeg ha forstÄtt hvilke avgjÞrelser og pÄ hvilke stadier som pÄvirker det endelige resultatet.
- Minimer omkoding.
- Hver gang du redigerer eller koder et klipp pÄ nytt, forringer du kvaliteten.
- Digitaliser rÄopptak med maksimal kvalitet, og transkoder deretter hvert klipp nÞyaktig én gang til et format som nettlesere spiller av.
- Bruk den enkleste mulige lĂžsningen for Ă„ publisere videoklipp.
- I ettertid virker MediaGoblin som et altfor komplekst verktĂžy for det ganske enkle scenariet med Ă„ generere nettsider med et statisk sett med videofiler.
- Hvis jeg skulle begynne pÄ nytt, ville jeg brukt en statisk nettstedgenerator som , eller .
- GjĂžr redigeringen.
- Videoredigering er en morsom mÄte Ä kombinere de beste Þyeblikkene fra flere videoer.
- Det viktigste i redigeringen er musikken. For eksempel er temaet utrolig passende fra The National, dette er min personlige oppdagelse.
Kilde: www.habr.com
