Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti

Fyrri hlutinn lýsir erfiðri leit að því að stafræna gömul fjölskyldumyndbönd og skipta þeim niður í aðskildar senur.. Eftir að hafa unnið úr öllum klippunum vildi ég skipuleggja áhorf þeirra á netinu eins þægilegt og á YouTube. Þar sem þetta eru persónulegar minningar um fjölskylduna er ekki hægt að setja þær á YouTube sjálft. Okkur vantar persónulegri hýsingu sem er bæði þægileg og örugg.

Skref 3: Útgáfa

ClipBucket, opinn uppspretta YouTube klón sem hægt er að setja upp á eigin netþjóni

Það fyrsta sem ég reyndi ClipBucket, sem kallar sig opinn YouTube klón sem þú getur sett upp á netþjóninum þínum.

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti

Það kemur á óvart að ClipBucket hefur engar uppsetningarleiðbeiningar. Þökk sé til utanaðkomandi stjórnenda я sjálfvirkt uppsetningarferlið með hjálpinni Ansible, stjórnunartól fyrir stillingar miðlara.

Hluti af erfiðleikunum var að ClipBucket uppsetningarforskriftirnar voru algjörlega bilaðar. Á þeim tíma ég vann hjá Google og samkvæmt skilmálum samningsins hafði ég ekki rétt til að leggja mitt af mörkum til opinn uppspretta YouTube klóna, en ég setti inn villuskýrslu, þaðan sem auðvelt væri að gera nauðsynlegar leiðréttingar. Mánuðir liðu og þeir skildu ekki enn hvað vandamálið var. Í staðinn bættu þeir öllu við больше villur í hverri útgáfu.

ClipBucket starfaði á ráðgjafarlíkani - þeir gáfu út kóðann sinn ókeypis og rukkuðu fyrir dreifingaraðstoð. Það rann smám saman upp fyrir mér að fyrirtæki sem græðir á greiddum stuðningi hefur líklega ekki mikinn áhuga á að láta viðskiptavini setja upp vöruna sjálfir.

MediaGoblin, nútímalegri valkostur

Eftir margra mánaða gremju með ClipBucket skoðaði ég þá valkosti sem eru í boði og fann MediaGoblin.

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
MediaGoblin er ótengdur miðlunarvettvangur

MediaGoblin hefur mikið af góðgæti. Ólíkt ClipBucket í ljótu PHP er MediaGoblin skrifað í Python, tungumáli sem ég hef mikla reynslu af erfðaskráningu. Borða skipanalínuviðmót, sem gerir þér kleift að gera niðurhal myndbanda sjálfvirkt. Mikilvægast er að MediaGoblin fylgir Docker mynd, sem útilokar öll vandamál við uppsetninguna.

Docker er tækni sem skapar sjálfstætt umhverfi fyrir forrit til að keyra hvar sem er. Ég nota Docker í mörg verkefni hans.

Óvæntur erfiðleikar við að endurskipuleggja MediaGoblin

Ég gerði ráð fyrir að það væri léttvægt verkefni að setja upp MediaGoblin bryggjumynd. Jæja, þetta gekk ekki alveg þannig.

Fullbúna myndin innihélt ekki tvær nauðsynlegar aðgerðir:

  • Auðkenning
    • MediaGoblin býr til opinbera fjölmiðlagátt sjálfgefið og ég þurfti leið til að takmarka aðgang að utanaðkomandi.
  • Umkóðun
    • Í hvert skipti sem þú hleður niður myndbandi, reynir MediaGoblin að umkóða það fyrir hámarks streymi. Ef myndbandið er upphaflega tilbúið fyrir streymi, rýrir umskráning gæðin.
    • MediaGoblin veitir slökkva á umskráningu með stillingarvalkostum, en það er ekki hægt að gera þetta í núverandi Docker mynd.

Jæja, ekkert mál. Docker myndin fylgir opinn uppspretta, svo það er hægt endurbyggja það sjálfur.

Því miður er Docker myndin ekki lengur byggð úr þeirri núverandi. MediaGoblin geymsla. Ég reyndi að samstilla það við útgáfuna frá síðustu vel heppnuðu byggingu, en það tókst líka. Jafnvel þó að ég notaði nákvæmlega sama kóða breyttust ytri ósjálfstæði MediaGoblin og braut bygginguna. Eftir tugi klukkustunda, hljóp ég í gegnum 10-15 mínútna MediaGoblin byggingarferlið aftur og aftur þar til það loksins virkaði.

Nokkrum mánuðum síðar gerðist það sama. Alls hefur MediaGoblin háð keðjan rofið bygginguna mína nokkrum sinnum á undanförnum tveimur árum og síðast þegar það gerðist var bara á meðan ég var að skrifa þessa grein. Ég birti loksins eigin gaffli MediaGoblin c harðkóðaðar ósjálfstæði og sérstaklega tilgreindar útgáfur af bókasöfnum. Með öðrum orðum, í stað þeirrar vafasamu fullyrðingar að MediaGoblin virki með hvaða útgáfu sem er sellerí >= 3.0, ég setti upp sérstaka útgáfuháð sellerí 4.2.1vegna þess að ég prófaði MediaGoblin með þessari útgáfu. Það lítur út fyrir að varan þurfi endurgerðanlegur byggingarbúnaður, en ég hef ekki gert það ennþá.

Allavega, eftir margra klukkustunda baráttu gat ég loksins smíðað og stillt MediaGoblin í Docker mynd. Það var nú þegar auðvelt slepptu óþarfa umkóðun и setja upp Nginx fyrir auðkenningu.

Skref 4. Hýsing

Þar sem MediaGoblin var að keyra Docker á tölvunni minni var næsta skref að dreifa því á skýjaþjón svo fjölskyldan gæti horft á myndbandið.

MediaGoblin og myndbandsgeymsluvandamálið

Það eru margir pallar sem taka Docker mynd og hýsa hana á opinberri vefslóð. Gallinn er sá að auk appsins sjálfs þurfti að birta 33 GB af myndbandsskrám. Það var hægt að harðkóða þá í Docker mynd, en það væri fyrirferðarmikið og ljótt. Til að breyta einni stillingarlínu þyrfti að endurdreifa 33 GB af gögnum.

Þegar ég notaði ClipBucket leysti ég vandamálið með gcsfuse - tól sem gerir stýrikerfinu kleift að hlaða upp möppum í skýjageymslu Google Cloud sem venjulegar slóðir í skráarkerfið. Ég hýsti myndbandsskrárnar á Google Cloud og notaði gcsfuse til að láta þær birtast í ClipBucket sem staðbundnar skrár.

Munurinn var sá að ClipBucket keyrði í raunverulegri sýndarvél en MediaGoblin keyrði í Docker gámi. Hér reyndist mun erfiðara að setja upp skrár úr skýjageymslu. Ég eyddi tugum klukkustunda í að leysa öll vandamálin og skrifaði um það alla bloggfærsluna.

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
Upphafleg samþætting MediaGoblin við Google Cloud geymslu, sem ég er að tala um sagt árið 2018

Eftir nokkrar vikur af aðlögun allra íhlutanna virkaði allt. Án þess að gera neinar breytingar á kóða MediaGoblin, svindlaði ég hann til að lesa og skrifa fjölmiðlaskrár í skýjageymslu Google.

Eina vandamálið var að MediaGoblin varð ógeðslega hægt. Það tók heilar 20 sekúndur fyrir smámyndir að hlaðast inn á heimasíðuna. Ef þú hoppar fram á meðan þú horfir á myndskeið myndi MediaGoblin gera hlé í endalausar 10 sekúndur áður en spilun hófst aftur.

Helsta vandamálið var að myndböndin og myndirnar tóku langa hringtorgsleið til notandans. Þeir þurftu að fara úr skýjageymslu Google í gegnum gcsfuse til MediaGoblin, Nginx - og aðeins þá komust þeir í vafra notandans. Aðal flöskuhálsinn var gcsfuse, sem er ekki fínstillt fyrir hraðvirkan árangur. Hönnuðir vara við miklum töfum á rekstri veitunnar beint á aðalsíðu verkefnisins:

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
Viðvaranir um lélega frammistöðu í gcsfuse skjölunum

Helst ætti vafrinn að sækja skrár beint úr Google Cloud og fara framhjá öllum millilögum. Hvernig geturðu gert þetta án þess að kafa inn í MediaGoblin kóðagrunninn eða bæta við flókinni Google Cloud samþættingarrökfræði?

Sub_filter bragð í nginx

Sem betur fer fann ég einfalda lausn, þó örlítið ljótt. Ég bætti við default.conf stillinguna í Nginx svona sía:

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

Í uppsetningu minni virkaði Nginx sem umboð milli MediaGoblin og endanotandans. Ofangreind tilskipun gefur Nginx fyrirmæli um að leita og skipta út öllum MediaGoblin HTML svörum áður en þau eru birt fyrir endanotanda. Nginx skiptir út öllum hlutfallslegum slóðum að MediaGoblin miðlunarskrám fyrir vefslóðir frá skýjageymslu Google.

Til dæmis býr MediaGoblin til HTML svona:

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

Nginx breytir svarinu:

<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ú gengur allt eins og við var að búast:

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
Nginx endurskrifar svör frá MediaGoblin svo viðskiptavinir geti beðið um fjölmiðlaskrár beint úr skýjageymslu Google

Það besta við lausnina mína er að það þarf engar breytingar á MediaGoblin kóðanum. Tveggja lína tilskipun Nginx samþættir MediaGoblin og Google Cloud óaðfinnanlega, jafnvel þó að þjónustan viti nákvæmlega ekkert um hvor aðra.

Athugið: Þessi lausn krefst þess að skrár í Google skýjageymslu séu læsilegar fyrir alla. Til að draga úr hættu á óviðkomandi aðgangi nota ég langt, handahófskennt heiti (t.d. mediagoblin-39dpduhfz1wstbprmyk5ak29) og staðfestu að aðgangsstýringarstefna fötu leyfir ekki óviðkomandi notendum að birta innihald möppunnar.

Lokavara

Á þessum tímapunkti hafði ég fullkomna, virka lausn. MediaGoblin hljóp hamingjusamlega í eigin íláti á skýjapalli Google, svo það þurfti ekki að laga eða uppfæra það oft. Allt í ferlinu mínu var sjálfvirkt og endurgeranlegt, sem gerði ráð fyrir einföldum breytingum eða afturköllun í fyrri útgáfur.

Fjölskyldunni minni líkaði mjög hversu auðvelt það var að horfa á myndböndin. Með hjálp Nginx hakksins sem lýst er hér að ofan varð vinna með myndbönd eins hröð og á YouTube.

Skoðunarskjárinn lítur svona út:

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
Innihald fjölskyldumyndbandalistans með merkinu „Best“

Með því að smella á smámyndina kemur upp skjár eins og þessi:

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
Skoða eina myndskeið á miðlara

Eftir margra ára vinnu var það ótrúlega gefandi að gefa fjölskyldumeðlimum tækifæri til að horfa á myndböndin okkar í sama notendavæna YouTube-líka viðmótinu og ég vildi upphaflega.

Bónus: Dragðu úr kostnaði í minna en $1 á mánuði

Þú horfir ekki oft á heimamyndbönd, aðeins á nokkurra mánaða fresti. Fjölskylda mín bjó til um það bil 20 klukkustundir af umferð á einu ári, en þjónninn var í gangi allan sólarhringinn. Ég borgaði $15 mánaðarlega fyrir netþjón sem var niðri í 99,7% tilvika.

Í lok árs 2018 gaf Google vöruna út Cloud Run. Killer eiginleikinn var að keyra Docker gáma svo hratt að forritið gat svarað HTTP beiðnum. Það er að þjónninn gæti verið áfram í biðham og byrjað aðeins þegar einhver vildi fá aðgang að honum. Fyrir sjaldan keyrð forrit eins og mitt hefur kostnaðurinn lækkað úr $15 á mánuði í nokkur sent á ári.

Af ástæðum sem ég man ekki lengur virkaði Cloud Run ekki með MediaGoblin myndinni minni. En með tilkomu Cloud Run mundi ég eftir því Heroku býður upp á svipaða þjónustu ókeypis og verkfæri þeirra eru mun notendavænni en Google.

Með ókeypis forritaþjóni er eini kostnaðurinn gagnageymsla. Staðlað svæðisgeymsla Google kostar 2,3 sent/GB. Myndbandasafnið tekur 33 GB, svo ég borga aðeins 77 sent á mánuði.

Átta ára leit mín að stafræna 45 myndbandsupptökur. 2. hluti
Þessi lausn kostar aðeins $0,77 á mánuði

Ábendingar fyrir þá sem ætla að prófa

Augljóslega tók ferlið mig langan tíma. En ég vona að þessi grein muni hjálpa þér að spara 80-90% af fyrirhöfninni við að stafræna og birta heimamyndböndin þín. Í sérstökum kafla er að finna nákvæmar skref-fyrir-skref leiðbeiningar í gegnum ferlið, en hér eru nokkur almenn ráð:

  • Á meðan á stafrænni og klippingu stendur skaltu varðveita eins mikið af lýsigögnum og mögulegt er.
    • Verðmætar upplýsingar eru oft skráðar á merkimiða myndbandssnælda.
    • Fylgstu með hvaða myndband var tekið af hvaða segulbandi og í hvaða röð.
    • Skrifaðu niður dagsetningu myndatöku, sem gæti birst á myndbandinu.
  • Íhugaðu að borga fyrir faglega stafræna þjónustu.
    • Þú munt mjög það er erfitt og dýrt að jafna þá hvað varðar gæði stafrænnar væðingar.
    • En vertu í burtu frá fyrirtæki sem heitir EverPresent (skilaboð mér ef þú þarft upplýsingar).
  • Ef þú stundar stafræna væðingu sjálfur skaltu kaupa HDD.
    • Óþjappað myndband með staðlaðri upplausn tekur 100-200 MB á mínútu.
    • Ég geymdi allt á mínu Synology DS412 + (10 TB).
  • Skráðu lýsigögn á einhverju algengu sniði sem er ekki bundið við tiltekið forrit.
    • Bútalýsingar, tímakóðar, dagsetningar o.s.frv.
    • Ef þú vistar lýsigögn á forritssértæku sniði (eða það sem verra er, alls ekki vista þau) muntu ekki geta endurtekið verkið ef þú ákveður að nota aðra lausn.
    • Þegar þú breytir, sérðu mikið af gagnlegum lýsigögnum á myndbandinu. Þú munt tapa þeim ef þú bjargar þeim ekki.
      • Hvað er að gerast í myndbandinu?
      • Hverjir eru skráðir þar?
      • Hvenær var þetta tekið upp?
  • Merktu uppáhalds myndböndin þín.
    • Satt að segja eru flest heimamyndbönd frekar leiðinleg.
    • Ég set „best of“ merkið á uppáhalds bútana mína og opna þá þegar ég vil horfa á fyndin myndbönd.
  • Skipuleggðu heildarlausn eins fljótt og auðið er þannig að ferlið gangi beint frá upphafi til enda.
    • Ég prufaði fyrst að stafræna allar spólurnar, breyta svo öllum spólunum o.s.frv.
    • Ég vildi að ég hefði byrjað á einni spólu og unnið alla vinnuna með henni. Þá myndi ég skilja hvaða ákvarðanir og á hvaða stigum hafa áhrif á lokaniðurstöðuna.
  • Haltu áfram að endurkóða í lágmarki.
    • Í hvert skipti sem þú breytir eða endurkóðar bút dregurðu úr gæðum þess.
    • Stafrænu hráefnin þín í hámarksgæðum og umritaðu síðan hvern bút nákvæmlega einu sinni yfir á sniðið sem vafrar gefa upp.
  • Notaðu einföldustu mögulegu lausnina til að birta myndskeið.
    • Eftir á að hyggja virðist MediaGoblin vera of flókið tól fyrir frekar einfalda atburðarás að búa til vefsíður með kyrrstæðum myndskrám.
    • Ef ég væri að byrja upp á nýtt myndi ég nota kyrrstæðan síðurafall eins og Hugo, Jekyll eða Gríðarlegt.
  • Gerðu uppsetninguna.
    • Vídeóklipping er skemmtileg leið til að sameina bestu augnablikin úr mörgum myndböndum.
    • Aðalatriðið í klippingu er tónlist. Til dæmis er þemað ótrúlegt Hægur snjór frá The National, þetta er mín persónulega uppgötvun.

Heimild: www.habr.com