Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2

It earste diel beskriuwt de drege syktocht om âlde famyljefideo's te digitalisearjen en op te brekken yn aparte sênes.. Nei it ferwurkjen fan alle klips woe ik har besjen online sa handich organisearje as op YouTube. Om't dit persoanlike oantinkens binne fan 'e famylje, kinne se net op YouTube sels pleatst wurde. Wy hawwe in mear privee hosting nedich dy't sawol handich as feilich is.

Stap 3: Publisearje

ClipBucket, in iepen boarne YouTube-kloon dy't kin wurde ynstalleare op jo eigen server

It earste wat ik besocht ClipBucket, dy't himsels in iepenboarne YouTube-kloon neamt dy't jo op jo tsjinner kinne ynstallearje.

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2

Ferrassend, ClipBucket hat gjin ynstallaasje ynstruksjes. Mei tank oan nei bûtenbehear я automatisearre it ynstallaasjeproses troch Sible, in tsjinner konfiguraasje behear ark.

In diel fan 'e muoite wie dat de ynstallaasjeskripts fan ClipBucket folslein brutsen wiene. Yn dy tiid ik wurke by Google en neffens de betingsten fan it kontrakt hie ik net it rjocht om by te dragen oan 'e iepen boarne YouTube-kloon, mar ik in brekrapport pleatst, dêr't de nedige korreksjes maklik út makke wurde koene. Moannen foarby, en se noch net begrepen wat it probleem wie. Ynstee se tafoege alles mear as bugs yn elke release.

ClipBucket operearre op in konsultaasjemodel - se hawwe har koade fergees frijlitten en yn rekken brocht foar assistinsje foar ynset. It kaam my stadichoan troch dat in bedriuw dat jild makket út betelle stipe, wierskynlik net tige ynteressearre is yn dat klanten it produkt sels ynstallearje.

MediaGoblin, in moderner alternatyf

Nei moannen fan frustraasje mei ClipBucket, seach ik nei de beskikbere opsjes en fûn MediaGoblin.

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
MediaGoblin is in platfoarm foar offline dielen fan media

MediaGoblin hat in protte guod. Oars as ClipBucket yn ûnsjogge PHP, is MediaGoblin skreaun yn Python, in taal dêr't ik in protte kodearring ûnderfining mei haw. Ite kommandorigel ynterface, wêrtroch jo it downloaden fan fideo's maklik kinne automatisearje. It wichtichste, MediaGoblin komt mei Docker ôfbylding, dy't alle ynstallaasjeproblemen elimineert.

Havenarbeider is in technology dy't skept in autonome omjouwing foar in applikaasje te rinnen oeral. Ik brûk Docker yn in protte fan syn projekten.

De ferrassende muoite fan it opnij dockerisearjen fan MediaGoblin

Ik tocht dat it ynsetten fan de MediaGoblin docker-ôfbylding in triviale taak wêze soe. No, dat slagge net hielendal sa.

De ôfmakke ôfbylding befette gjin twa nedige funksjes:

  • Ferifikaasje
    • MediaGoblin makket standert in iepenbier mediaportaal, en ik hie in manier nedich om tagong ta bûtensteanders te beheinen.
  • Transkodearjen
    • Elke kear as jo in fideo downloade, besiket MediaGoblin it te transkodearjen foar optimale streaming. As de fideo yn earste ynstânsje klear is foar streaming, ferleget transkodearjen de kwaliteit.
    • MediaGoblin jout transkodearjen útskeakelje fia konfiguraasjeopsjes, mar dit kin net dien wurde yn in besteande Docker-ôfbylding.

No, gjin probleem. De Docker-ôfbylding komt mei iepen Boarne, dus it is mooglik wer opbouwe it sels.

Spitigernôch is de Docker-ôfbylding net mear boud fan 'e hjoeddeistige. MediaGoblin repository. Ik besocht it te syngronisearjen mei de ferzje fan 'e lêste suksesfolle build, mar dat mislearre ek. Alhoewol't ik krekt deselde koade brûkte, feroare de eksterne ôfhinklikens fan MediaGoblin, en brekke de bou. Nei tsientallen oeren rûn ik troch it 10-15 minuten MediaGoblin-bouproses oer en wer oant it einlings wurke.

In pear moanne letter barde itselde ding. Yn totaal hat de MediaGoblin-ôfhinklike keten myn build ferskate kearen yn 'e ôfrûne pear jier brutsen, en de lêste kear dat it barde wie krekt wylst ik dit artikel skreau. Ik úteinlik publisearre eigen foarke fan MediaGoblin c hurdkodearre ôfhinklikens en eksplisyt oantsjutte ferzjes fan bibleteken. Mei oare wurden, ynstee fan 'e dubieuze bewearing dat MediaGoblin wurket mei elke ferzje selderij >= 3.0, ik ynstallearre in spesifike ferzjeôfhinklikens selderij 4.2.1om't ik MediaGoblin hifke mei dizze ferzje. It liket derop dat it produkt nedich is reproducible build meganisme, mar ik haw it noch net dien.

Hoe dan ek, nei in protte oeren fan striid, koe ik einlings MediaGoblin bouwe en konfigurearje yn in Docker-ôfbylding. It wie dêr al maklik oerslaan ûnnedige transcoding и ynstallearje Nginx foar autentikaasje.

Stap 4. Hosting

Sûnt MediaGoblin Docker op myn lokale komputer rûn, wie de folgjende stap om it yn te setten op in wolkserver, sadat de famylje de fideo koe besjen.

MediaGoblin en it fideo opslachprobleem

D'r binne in protte platfoarms dy't in Docker-ôfbylding nimme en it hostje op in iepenbiere URL. It fangen is dat neist de app sels 33 GB oan fideobestannen publisearre wurde moasten. It wie mooglik om se hurd te koade yn in Docker-ôfbylding, mar dat soe omslachtich en ûnsjoch wêze. It feroarjen fan ien rigel fan konfiguraasje soe 33 GB fan gegevens opnij ynsette.

Doe't ik brûkte ClipBucket ik oplost it probleem mei gcsfuse - in hulpprogramma wêrmei it bestjoeringssysteem mappen kin uploade nei Google Cloud-wolkopslach as gewoane paden nei it bestânsysteem. Ik hoste de fideobestannen op Google Cloud en brûkte gcsfuse om se yn ClipBucket te ferskinen as lokale bestannen.

It ferskil wie dat ClipBucket rûn yn in echte firtuele masine, wylst MediaGoblin rûn yn in Docker-kontener. Hjir die bliken dat it montearjen fan bestannen fan wolkopslach folle dreger wie. Ik haw tsientallen oeren bestege oan it oplossen fan alle problemen en skreau deroer hiele blogpost.

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
MediaGoblin's inisjele yntegraasje mei Google Cloud-opslach, wêr't ik it oer ha ferteld yn 2018

Nei ferskate wiken fan it oanpassen fan alle komponinten wurke alles. Sûnder feroaringen oan MediaGoblin's koade te meitsjen, haw ik it bedrogen yn it lêzen en skriuwen fan mediabestannen nei Google wolk opslach.

It ienige probleem wie dat MediaGoblin obscene stadich waard. It duorre in folsleine 20 sekonden foar fideo-miniatueren om op 'e thússide te laden. As jo ​​​​foarút sprongen by it besjen fan in fideo, soe MediaGoblin in einleaze 10 sekonden pauze foardat it ôfspieljen opnij waard.

It wichtichste probleem wie dat de fideo's en foto's in lange rotonde rûte namen nei de brûker. Se moasten fan Google-wolk-opslach gean fia gcsfuse nei MediaGoblin, Nginx - en pas doe kamen se nei de browser fan 'e brûker. De wichtichste knyppunt wie gcsfuse, dat is net optimalisearre foar snelheid. De ûntwikkelders warskôgje oer grutte fertragingen yn 'e operaasje fan it nut direkt op' e haadside fan it projekt:

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
Bewurkings bewurkje oer lege prestaasjes yn de gcsfuse dokumintaasje

Ideaallik moat de browser bestannen direkt fan Google Cloud ophelje, en alle tuskenlagen omgean. Hoe kinne jo dit dwaan sûnder yn 'e MediaGoblin-koadebase te dûken of komplekse Google Cloud-yntegraasjelogika ta te foegjen?

Sub_filter trúk yn ​​nginx

Gelokkich fûn ik in ienfâldige oplossing, hoewol немного ûnsjoch. Ik haw tafoege oan de default.conf-konfiguraasje yn Nginx sa'n filter:

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

Yn myn opset die Nginx as proxy tusken MediaGoblin en de ein brûker. De boppesteande rjochtline ynstruearret Nginx om alle MediaGoblin HTML-antwurden te sykjen en te ferfangen foardat se oan 'e ein brûker tsjinje. Nginx ferfangt alle relative paden nei MediaGoblin mediabestannen mei URL's fan Google wolk opslach.

Bygelyks, MediaGoblin genereart HTML sa:

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

Nginx feroaret it antwurd:

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

No wurket alles lykas ferwachte:

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
Nginx skriuwt antwurden fan MediaGoblin oer, sadat kliïnten mediabestannen direkt kinne oanfreegje fan Google wolk opslach

It bêste diel oer myn oplossing is dat it gjin wizigingen nedich is oan 'e MediaGoblin-koade. Nginx's twa-line-rjochtline yntegreart naadloos MediaGoblin en Google Cloud, ek al witte de tsjinsten hielendal neat oer elkoar.

remark: Dizze oplossing fereasket dat bestannen yn Google wolk opslach lêsber binne foar elkenien. Om it risiko fan net-autorisearre tagong te ferminderjen, brûk ik in lange, willekeurige emmernamme (bgl. mediagoblin-39dpduhfz1wstbprmyk5ak29) en befêstigje dat it tagongskontrôlebelied fan 'e emmer net tastiet dat unautorisearre brûkers de ynhâld fan' e map werjaan.

Finale produkt

Op dit punt hie ik in folsleine, wurkjende oplossing. MediaGoblin rûn lokkich yn har eigen kontener op Google's wolkplatfoarm, dus it hoegde net faak te wurde patched of bywurke. Alles yn myn proses wie automatisearre en reprodusearber, wêrtroch ienfâldige bewurkingen as weromdraaien nei eardere ferzjes mooglik wiene.

Myn famylje hâldde echt fan hoe maklik it wie om de fideo's te besjen. Mei help fan de hjirboppe beskreaune Nginx-hack waard wurkjen mei fideo's sa fluch as op YouTube.

It werjefteskerm sjocht der sa út:

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
Ynhâld fan 'e famyljefideokatalogus per tag "Bêste"

Klikje op de miniatuer bringt in skerm sa as dit:

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
Besjoch in inkele klip op in mediaserver

Nei jierren fan wurk wie it ongelooflijk beleanjend om famyljeleden de kâns te jaan om ús fideo's te besjen yn deselde brûkerfreonlike YouTube-like ynterface dy't ik oarspronklik woe.

Bonus: Ferminderje kosten nei minder dan $ 1 per moanne

Jo sjogge thúsfideo's net faak, allinich elke pear moannen. Myn famylje generearre kollektyf sawat 20 oeren ferkear yn in jier, mar de tsjinner draaide 15/99,7. Ik betelle $ XNUMX alle moannen foar in tsjinner dy't wie del XNUMX% fan 'e tiid.

Oan 'e ein fan 2018 hat Google it produkt frijlitten Cloud Run. De killerfunksje draaide Docker-konteners sa fluch dat de applikaasje koe reagearje op HTTP-oanfragen. Dat is, de tsjinner koe yn standby-modus bliuwe en allinich begjinne as immen der tagong ta woe. Foar selden rinnende applikaasjes lykas mines binne de kosten sakke fan $15 per moanne nei in pear sinten per jier.

Om redenen dy't ik net mear ûnthâlde, wurke Cloud Run net mei myn MediaGoblin-ôfbylding. Mar mei de komst fan Cloud Run herinnerde ik my dat Heroku biedt in ferlykbere tsjinst fergees, en har ark binne folle brûkerfreonliker dan dat fan Google.

Mei in fergese applikaasjetsjinner binne de ienige kosten gegevensopslach. Google's standert regionale opslach kostet 2,3 cents / GB. It fideo-argyf nimt 33 GB op, dus ik betelje mar 77 sinten yn 'e moanne.

Myn achtjierrige syktocht om 45 fideokassetten te digitalisearjen. Diel 2
Dizze oplossing kostet mar $0,77 per moanne

Tips foar dyjingen dy't plannen om te besykjen

Fansels hat it proses my lang duorre. Mar ik hoopje dat dit artikel jo sil helpe om 80-90% fan 'e ynspanningen te besparjen foar it digitalisearjen en publisearjen fan jo thúsfideo's. Yn in aparte seksje kinne jo fine detaillearre stap-foar-stap gids troch it hiele proses, mar hjir binne wat algemiene tips:

  • Bewarje yn 'e digitalisearring en bewurkjen safolle mooglik metadata.
    • Weardefolle ynformaasje wurdt faak opnommen op fideokassetteetiketten.
    • Hâld by hokker klip waard sketten fan hokker tape en yn hokker folchoarder.
    • Skriuw de datum fan sjitten op, dy't miskien ferskine op 'e fideo.
  • Tink derom om te beteljen foar profesjonele digitalisearringstsjinsten.
    • Do silst чрезвычайно it is lestich en djoer om se oan te passen yn termen fan digitalisearringskwaliteit.
    • Mar bliuw fuort fan in bedriuw neamd EverPresent (berjocht my as jo details nedich binne).
  • As jo ​​​​sels digitalisearje, keapje dan in HDD.
    • Unkomprimearre standertdefinysjefideo nimt 100-200 MB per minút.
    • Ik hold alles op myn Synology DS412 + (10 TB).
  • Record metadata yn guon gewoane formaat dat net is bûn oan in spesifike applikaasje.
    • Klipbeskriuwings, tiidkoades, datums, ensfh.
    • As jo ​​metadata bewarje yn in applikaasje-spesifike opmaak (of slimmer, net bewarje it hielendal), do silst net by steat wêze om te dwaan de baan as jo beslute om te brûken in oare oplossing.
    • As jo ​​​​bewurkje, sjogge jo in protte nuttige metadata op 'e fideo. Jo sille se ferlieze as jo se net bewarje.
      • Wat bart der yn 'e fideo?
      • Wa stiet dêr registrearre?
      • Wannear is dit opnommen?
  • Markearje jo favorite fideo's.
    • Om earlik te wêzen, binne de measte thúsfideo's aardich saai.
    • Ik tapasse de tag "bêste fan" op myn favorite klips en iepenje se as ik grappige fideo's wol besjen.
  • Organisearje sa betiid mooglik in wiidweidige oplossing, sadat it proses direkt fan begjin oant ein giet.
    • Ik besocht earst alle tapes te digitalisearjen, dan alle tapes te bewurkjen, ensfh.
    • Ik woe dat ik mei ien tape begon wie en al it wurk dermei dien. Dan soe ik begripe hokker besluten en yn hokker stadia fan ynfloed binne op it einresultaat.
  • Hâld opnij kodearjen op in minimum.
    • Elke kear as jo in klip bewurkje of opnij kodearje, ferminderje jo de kwaliteit.
    • Digitalisearje jo rûge byldmateriaal op maksimale kwaliteit, transkodearje dan elke klip krekt ien kear yn it formaat dat browsers natuerlik werjaan.
  • Brûk de ienfâldichste mooglike oplossing om fideoklips te publisearjen.
    • Efterôf liket MediaGoblin in te kompleks ark foar it frij ienfâldige senario fan it generearjen fan websiden mei in statyske set fan fideobestannen.
    • As ik opnij begon, soe ik in statyske sidegenerator brûke lykas hugo, Jekyll of Gridsome.
  • Doch de ynstallaasje.
    • Fideo-bewurkjen is in leuke manier om de bêste mominten fan meardere fideo's te kombinearjen.
    • It wichtichste ding yn it bewurkjen is muzyk. Bygelyks, it tema is geweldich Slow Snow út The National, dit is myn persoanlike ûntdekking.

Boarne: www.habr.com