. Nadat ek al die snitte verwerk het, wou ek hul kyk aanlyn so gerieflik soos op YouTube organiseer. Aangesien dit persoonlike herinneringe van die gesin is, kan dit nie op YouTube self geplaas word nie. Ons benodig 'n meer privaat hosting wat beide gerieflik en veilig is.
Stap 3: Publisering
ClipBucket, 'n oopbron YouTube-kloon wat op jou eie bediener geïnstalleer kan word
Eerste ding wat ek probeer het , wat homself 'n oopbron YouTube-kloon noem wat jy op jou bediener kan installeer.

Verbasend genoeg het ClipBucket geen installasie-instruksies nie. Te danke aan я met die hulp , 'n bedienerkonfigurasiebestuursinstrument.
Deel van die moeilikheid was dat die ClipBucket-installasieskrifte heeltemal stukkend was. Op daardie tydstip het ek en volgens die bepalings van die kontrak het ek nie die reg gehad om by te dra tot die oopbron YouTube-kloon nie, maar ek , waaruit die nodige regstellings maklik gemaak kon word. Maande het verbygegaan, en hulle het steeds nie verstaan wat die probleem was nie. In plaas daarvan het hulle alles bygevoeg beter foute in elke vrystelling.
ClipBucket het op 'n konsultasiemodel gewerk - hulle het hul kode gratis vrygestel en gehef vir ontplooiingsbystand. Dit het geleidelik tot my deurgedring dat 'n maatskappy wat geld maak uit betaalde ondersteuning waarskynlik nie baie daarin belangstel om kliënte self die produk te laat installeer nie.
MediaGoblin, 'n meer moderne alternatief
Na maande se frustrasie met ClipBucket, het ek na die beskikbare opsies gekyk en gevind .

is 'n vanlyn media-deelplatform
MediaGoblin het baie lekkernye. Anders as ClipBucket in onooglike PHP, is MediaGoblin in Python geskryf, 'n taal waarin ek baie ondervinding het om kode in te skryf. Eet , wat jou toelaat om video-aflaai maklik te outomatiseer. Die belangrikste is dat MediaGoblin saam met , wat enige installasieprobleme uitskakel.
is 'n tegnologie wat 'n outonome omgewing skep sodat 'n toepassing enige plek kan loop. Ek gebruik Docker in .
Die verrassende moeilikheid om MediaGoblin weer te dok
Ek het aangeneem dat die implementering van die MediaGoblin-dokkerbeeld 'n onbenullige taak sou wees. Wel, dit het nie heeltemal so uitgewerk nie.
Die voltooide prent het nie twee nodige funksies bevat nie:
- verifikasie
- MediaGoblin skep by verstek 'n publieke mediaportaal, en ek het 'n manier nodig gehad om toegang tot buitestanders te beperk.
- Transkodering
- Elke keer as jy 'n video aflaai, probeer MediaGoblin om dit te transkodeer vir optimale stroom. As die video aanvanklik gereed is vir stroom, verswak transkodering die kwaliteit.
- MediaGoblin verskaf , maar dit kan nie in 'n bestaande Docker-beeld gedoen word nie.
Wel, geen probleem nie. Die Docker-beeld kom saam met , so dit is moontlik .
Ongelukkig is die Docker-beeld nie meer gebou vanaf die huidige een nie. . Ek het probeer om dit te sinkroniseer met die weergawe van die laaste suksesvolle bou, maar dit het ook misluk. Alhoewel ek presies dieselfde kode gebruik het, het MediaGoblin se eksterne afhanklikhede verander, wat die bou verbreek het. Na tientalle ure het ek die 10-15 minute MediaGoblin-bouproses oor en oor gehardloop totdat dit uiteindelik gewerk het.
'n Paar maande later het dieselfde gebeur. In totaal het die MediaGoblin-afhanklikheidsketting my gebou verskeie kere oor die afgelope paar jaar gebreek, en die laaste keer dat dit gebeur het, was net terwyl ek hierdie artikel geskryf het. Ek het uiteindelik gepubliseer c en eksplisiet gespesifiseerde weergawes van biblioteke. Met ander woorde, in plaas van die twyfelagtige bewering dat MediaGoblin met enige weergawe werk >= 3.0, ek het 'n spesifieke weergawe-afhanklikheid geïnstalleer omdat ek MediaGoblin met hierdie weergawe getoets het. Dit lyk of die produk nodig het , maar ek het dit nog nie gedoen nie.
In elk geval, na baie ure se gesukkel kon ek uiteindelik MediaGoblin in 'n Docker-beeld bou en konfigureer. Dit was al maklik daar и .
Stap 4. Hosting
Aangesien MediaGoblin Docker op my plaaslike rekenaar laat loop het, was die volgende stap om dit na 'n wolkbediener te ontplooi sodat die gesin die video kon kyk.
MediaGoblin en die videobergingsprobleem
Daar is baie platforms wat 'n Docker-prent neem en dit op 'n publieke URL huisves. Die vangplek is dat benewens die toepassing self, 33 GB videolêers gepubliseer moes word. Dit was moontlik om hulle hard te kodeer in 'n Docker-beeld, maar dit sou omslagtig en lelik wees. Om een reël konfigurasie te verander, sal herontplooiing van 33 GB data vereis.
Toe ek ClipBucket gebruik het, het ek die probleem opgelos - 'n hulpprogram wat die bedryfstelsel toelaat om gidse na Google Wolk-wolkberging op te laai as gereelde paaie na die lêerstelsel. Ek het die videolêers op Google Cloud aangebied en gcsfuse gebruik om hulle in ClipBucket as plaaslike lêers te laat verskyn.
Die verskil was dat ClipBucket in 'n regte virtuele masjien gehardloop het, terwyl MediaGoblin in 'n Docker-houer gehardloop het. Hier was dit baie moeiliker om lêers vanaf wolkberging te monteer. Ek het tientalle ure spandeer om al die probleme op te los en daaroor geskryf .

MediaGoblin se aanvanklike integrasie met Google Cloud-berging, waarvan ek praat
Na 'n paar weke se aanpassing van al die komponente, het alles gewerk. Sonder om enige veranderinge aan MediaGoblin se kode te maak, het ek dit verneuk om medialêers na Google-wolkberging te lees en te skryf.
Die enigste probleem was dat MediaGoblin onwelvoeglik stadig geword het. Dit het 'n volle 20 sekondes geneem vir video-kleinkiekies om op die tuisblad te laai. As jy vorentoe spring terwyl jy na 'n video kyk, sal MediaGoblin vir 'n eindelose 10 sekondes onderbreek voordat jy die afspeel hervat.
Die grootste probleem was dat die video's en foto's 'n lang, omwentelingsroete na die gebruiker geneem het. Hulle moes van Google-wolkberging deur gcsfuse na MediaGoblin, Nginx gaan – en eers daarna het hulle by die gebruiker se blaaier uitgekom. Die belangrikste bottelnek was gcsfuse, wat nie vir spoed geoptimaliseer is nie. Die ontwikkelaars waarsku oor groot vertragings in die werking van die nutsprogram direk op die projek se hoofblad:

waarskuwings in die gcsfuse-dokumentasie
Ideaal gesproke moet die blaaier lêers direk van Google Wolk af haal en enige tussenliggende lae omseil. Hoe kan jy dit doen sonder om in die MediaGoblin-kodebasis te duik of komplekse Google Wolk-integrasielogika by te voeg?
Sub_filter truuk in nginx
Gelukkig het ek 'n eenvoudige oplossing gevind 'n bietjie lelik. Ek het by die default.conf-konfigurasie in Nginx gevoeg :
sub_filter "/mgoblin_media/media_entries/" "https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/";
sub_filter_once off;In my opstelling het Nginx opgetree as 'n proxy tussen MediaGoblin en die eindgebruiker. Bogenoemde opdrag gee Nginx opdrag om alle MediaGoblin HTML-antwoorde te soek en te vervang voordat dit aan die eindgebruiker bedien word. Nginx vervang alle relatiewe paaie na MediaGoblin-medialêers met URL's vanaf Google-wolkberging.
Byvoorbeeld, MediaGoblin genereer HTML soos volg:
<video width="720" height="480" controls autoplay>
<source
src="/mgoblin_media/media_entries/16/Michael-riding-a-bike.mp4"
type="video/mp4">
</video>Nginx verander die antwoord:
<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>Nou werk alles uit soos verwag:

Nginx herskryf antwoorde van MediaGoblin sodat kliënte medialêers direk vanaf Google-wolkberging kan aanvra
Die beste deel van my oplossing is dat dit geen veranderinge aan die MediaGoblin-kode vereis nie. Nginx se tweelyn-aanwysing integreer MediaGoblin en Google Cloud naatloos, al weet hierdie dienste absoluut niks van mekaar nie.
Let daarop: Hierdie oplossing vereis dat lêers in Google-wolkberging vir almal leesbaar moet wees. Om die risiko van ongemagtigde toegang te verminder, gebruik ek 'n lang, ewekansige emmernaam (bv.
mediagoblin-39dpduhfz1wstbprmyk5ak29) en verifieer dat die emmer se toegangsbeheerbeleid nie ongemagtigde gebruikers toelaat om die inhoud van die gids te vertoon nie.
Finale produk
Op hierdie stadium het ek 'n volledige, werkende oplossing gehad. MediaGoblin het gelukkig in sy eie houer op Google se wolkplatform gehardloop, so dit hoef nie gereeld gelap of opgedateer te word nie. Alles in my proses was outomaties en reproduseerbaar, wat vir eenvoudige wysigings of terugdraai na vorige weergawes moontlik gemaak het.
My familie het baie gehou van hoe maklik dit was om die video's te kyk. Met die hulp van die Nginx-hack wat hierbo beskryf word, het werk met video's so vinnig geword soos op YouTube.
Die kykskerm lyk so:

Inhoud van die gesinsvideokatalogus volgens merker "Beste"
As u op die kleinkiekie klik, word 'n skerm soos hierdie opgeroep:

Bekyk 'n enkele snit op 'n mediabediener
Na jare se werk was dit ongelooflik lonend om familielede die geleentheid te gee om ons video's te kyk in dieselfde gebruikersvriendelike YouTube-agtige koppelvlak wat ek oorspronklik wou gehad het.
Bonus: Verminder koste tot minder as $1 per maand
Jy kyk nie gereeld na tuisvideo's nie, net elke paar maande. My gesin het gesamentlik ongeveer 20 uur verkeer in 'n jaar gegenereer, maar die bediener was 15/99,7 aan die gang. Ek het $XNUMX maandeliks betaal vir 'n bediener wat XNUMX% van die tyd af was.
Aan die einde van 2018 het Google die produk vrygestel . Die moordenaarkenmerk het Docker-houers so vinnig laat loop dat die toepassing op HTTP-versoeke kon reageer. Dit wil sê, die bediener kan in bystandsmodus bly en slegs begin wanneer iemand toegang daartoe wil hê. Vir toepassings wat selde uitgevoer word soos myne, het die koste van $15 per maand tot 'n paar sent per jaar gedaal.
Om redes wat ek nie meer onthou nie, het Cloud Run nie met my MediaGoblin-beeld gewerk nie. Maar met die koms van Cloud Run het ek dit onthou bied 'n soortgelyke diens gratis aan, en hul gereedskap is baie meer gebruikersvriendelik as Google s'n.
Met 'n gratis toepassingsbediener is die enigste koste databerging. Google se standaard streekberging kos 2,3 sent/GB. Die video-argief neem 33 GB op, so ek betaal net 77 sent per maand.

Hierdie oplossing kos slegs $0,77 per maand
Wenke vir diegene wat beplan om te probeer
Natuurlik het die proses my lank geneem. Maar ek hoop dat hierdie artikel jou sal help om 80-90% van die moeite om jou tuisvideo's te digitaliseer en te publiseer, te bespaar. In 'n aparte afdeling kan jy vind regdeur die proses, maar hier is 'n paar algemene wenke:
- Bewaar soveel metadata as moontlik tydens die digitaliserings- en redigeringsfase.
- Waardevolle inligting word dikwels op videokassetetikette aangeteken.
- Bly op hoogte van watter snit vanaf watter band geskiet is en in watter volgorde.
- Skryf die datum van opname neer, wat op die video kan verskyn.
- Oorweeg om vir professionele digitaliseringsdienste te betaal.
- jy sal uiters dit is moeilik en duur om hulle te pas in terme van digitaliseringskwaliteit.
- Maar bly weg van 'n maatskappy genaamd EverPresent (boodskap vir my as jy besonderhede nodig het).
- As jy self digitalisering doen, koop 'n HDD.
- Ongecomprimeerde standaarddefinisievideo neem 100-200 MB per minuut.
- Ek het alles op myne gehou (10 TB).
- Teken metadata op in een of ander algemene formaat wat nie aan 'n spesifieke toepassing gekoppel is nie.
- Knipbeskrywings, tydkodes, datums, ens.
- As jy metadata in 'n toepassingspesifieke formaat stoor (of erger nog, moet dit glad nie stoor nie), sal jy nie die taak kan oordoen as jy besluit om 'n ander oplossing te gebruik nie.
- Soos jy redigeer, sien jy baie nuttige metadata op die video. Jy sal hulle verloor as jy hulle nie red nie.
- Wat gebeur in die video?
- Wie is daar geregistreer?
- Wanneer is dit opgeneem?
- Merk jou gunsteling video's.
- Om eerlik te wees, die meeste tuisvideo's is redelik vervelig.
- Ek pas die "best of"-merk op my gunsteling snitte en maak dit oop wanneer ek snaakse video's wil kyk.
- Organiseer 'n omvattende oplossing so vroeg as moontlik sodat die proses reguit van begin tot einde verloop.
- Ek het probeer om eers al die bande te digitaliseer, dan al die bande te redigeer, ens.
- Ek wens ek het met een band begin en al die werk daarmee gedoen. Dan sou ek verstaan watter besluite en in watter stadiums die finale uitslag beïnvloed.
- Hou herkodering tot 'n minimum.
- Elke keer as jy 'n snit redigeer of herkodeer, verminder jy die kwaliteit daarvan.
- Digitaliseer jou rou beeldmateriaal teen maksimum gehalte, en transkodeer dan elke snit presies een keer in die formaat wat blaaiers oorspronklik weergee.
- Gebruik die eenvoudigste moontlike oplossing om videogrepe te publiseer.
- In retrospek lyk MediaGoblin na 'n te komplekse hulpmiddel vir die redelik eenvoudige scenario om webblaaie met 'n statiese stel videolêers te genereer.
- As ek oor begin, sal ek 'n statiese werfgenerator gebruik soos , of .
- Doen die installasie.
- Videoredigering is 'n prettige manier om die beste oomblikke uit verskeie video's te kombineer.
- Die belangrikste ding in redigering is musiek. Byvoorbeeld, die tema is ongelooflik van The National, dit is my persoonlike ontdekking.
Bron: will.com
