Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2

Ang unang bahin naghulagway sa lisud nga pagpangita sa pag-digitize sa daan nga mga video sa pamilya ug pagbungkag niini ngadto sa lain nga mga talan-awon.. Pagkahuman sa pagproseso sa tanan nga mga clip, gusto nako nga organisahon ang ilang pagtan-aw online nga dali sama sa YouTube. Tungod kay kini mga personal nga panumduman sa pamilya, dili kini ma-post sa YouTube mismo. Nagkinahanglan kami usa ka labi ka pribado nga pag-host nga parehas nga kombenyente ug luwas.

Lakang 3: Pagmantala

ClipBucket, usa ka open source nga clone sa YouTube nga mahimong ma-install sa imong kaugalingong server

Unang butang nga akong gisulayan ClipBucket, nga nagtawag sa iyang kaugalingon nga usa ka open-source nga clone sa YouTube nga mahimo nimong i-install sa imong server.

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2

Katingad-an, ang ClipBucket walay bisan unsang mga panudlo sa pag-install. Salamat sa sa pagdumala sa gawas я awtomatiko ang proseso sa pag-install sa panabang Ansible, usa ka himan sa pagdumala sa configuration sa server.

Kabahin sa kalisud mao nga ang mga script sa pag-install sa ClipBucket hingpit nga nabuak. Niadtong panahona ako nagtrabaho sa Google ug sumala sa mga termino sa kontrata wala akoy katungod sa pagtampo sa open source nga YouTube clone, apan ako nagpost ug bug report, diin ang gikinahanglan nga mga pagtul-id dali nga mahimo. Milabay ang mga bulan, ug wala gihapon sila makasabot kon unsa ang problema. Hinuon ilang gidugang ang tanan labaw pa sa mga bug sa matag pagpagawas.

Ang ClipBucket naglihok sa usa ka modelo sa pagkonsultaβ€”gipagawas nila ang ilang code nga libre ug gibayran alang sa tabang sa pag-deploy. Anam-anam nga nahunahuna nako nga ang usa ka kompanya nga nakakuha salapi gikan sa bayad nga suporta tingali dili kaayo interesado nga ipa-install sa mga kostumer ang produkto mismo.

MediaGoblin, usa ka mas modernong alternatibo

Human sa mga bulan sa kasagmuyo sa ClipBucket, akong gitan-aw ang mga opsyon nga anaa ug nakit-an MediaGoblin.

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
MediaGoblin mao ang usa ka offline nga media sharing platform

Ang MediaGoblin adunay daghang mga kaayohan. Dili sama sa ClipBucket sa dili maayo nga PHP, ang MediaGoblin gisulat sa Python, usa ka lengguwahe nga ako adunay daghang kasinatian sa coding. Kaon interface sa command line, nga nagtugot kanimo sa dali nga pag-automate sa pag-download sa video. Labing hinungdanon, kauban ang MediaGoblin Imahe sa Docker, nga nagwagtang sa bisan unsang mga problema sa pag-instalar.

Docker mao ang usa ka teknolohiya nga nagmugna sa usa ka autonomous nga palibot alang sa usa ka aplikasyon nga modagan bisan asa. Gigamit nako ang Docker sa daghan sa iyang mga proyekto.

Ang makapakurat nga kalisud sa pag-re-dockerize sa MediaGoblin

Nagtuo ko nga ang pag-deploy sa imahe sa MediaGoblin docker usa ka gamay nga buluhaton. Aw, dili kaayo kana molampos.

Ang nahuman nga imahe wala maglangkob sa duha nga kinahanglan nga mga gimbuhaton:

  • Pagpanghimatuud
    • Ang MediaGoblin nagmugna og public media portal nga default, ug nagkinahanglan ko og paagi aron mapugngan ang pag-access sa mga taga-gawas.
  • Transcoding
    • Matag higayon nga mag-download ka og video, ang MediaGoblin mosulay sa pag-transcode niini para sa labing maayo nga streaming. Kung ang video sa sinugdan andam na alang sa streaming, ang transcoding makadaot sa kalidad.
    • Ang MediaGoblin naghatag pag-disable sa transcoding pinaagi sa mga opsyon sa pag-configure, apan dili kini mahimo sa usa ka naglungtad nga imahe sa Docker.

Aw, walay problema. Ang imahe sa Docker nag-uban bukas nga tinubdan, mao nga posible pagtukod pag-usab niini sa imong kaugalingon.

Ikasubo, ang imahe sa Docker wala na gitukod gikan sa karon. Ang tipiganan sa MediaGoblin. Gisulayan nako nga i-sync kini sa bersyon gikan sa katapusang malampuson nga pagtukod, apan napakyas usab. Bisan kung gigamit nako ang eksaktong parehas nga kodigo, ang mga eksternal nga dependency sa MediaGoblin nausab, nga nakaguba sa pagtukod. Pagkahuman sa daghang oras, gibalikbalik nako ang 10-15 minuto nga proseso sa pagtukod sa MediaGoblin hangtod nga kini nagtrabaho.

Paglabay sa pipila ka bulan mao gihapon ang nahitabo. Sa kinatibuk-an, ang MediaGoblin dependency chain nakaguba sa akong pagtukod sa makadaghang higayon sa milabay nga duha ka tuig, ug ang katapusang higayon nga kini nahitabo samtang ako nagsulat niini nga artikulo. Na-publish na gyud nako kaugalingon nga tinidor sa MediaGoblin c hard-coded dependencies ug tin-aw nga gipiho nga mga bersyon sa mga librarya. Sa laing pagkasulti, imbis sa kaduhaduhaan nga pag-angkon nga ang MediaGoblin nagtrabaho sa bisan unsang bersyon celery >= 3.0, nag-install ko og piho nga bersyon dependency celery 4.2.1tungod kay gisulayan nako ang MediaGoblin sa kini nga bersyon. Morag gikinahanglan ang produkto reproducible nga mekanismo sa pagtukod, pero wala pa nako nabuhat.

Bisan pa, pagkahuman sa daghang oras nga pakigbisog, sa katapusan nakahimo ako ug na-configure ang MediaGoblin sa usa ka imahe sa Docker. Sayon ra didto laktawan ang wala kinahanglana nga transcoding ΠΈ i-install ang Nginx para sa pag-authenticate.

Lakang 4. Pag-host

Tungod kay ang MediaGoblin nagpadagan sa Docker sa akong lokal nga kompyuter, ang sunod nga lakang mao ang pag-deploy niini sa usa ka cloud server aron ang pamilya makatan-aw sa video.

MediaGoblin ug ang problema sa pagtipig sa video

Adunay daghang mga platform nga nagkuha usa ka imahe sa Docker ug gi-host kini sa usa ka publiko nga URL. Ang nakuha mao nga dugang sa app mismo, ang 33 GB nga mga file sa video kinahanglan i-publish. Posible nga i-hard-code kini sa usa ka imahe sa Docker, apan kana mahimong lisud ug daotan. Ang pagbag-o sa usa ka linya sa pag-configure magkinahanglan pag-usab sa 33 GB nga datos.

Kung gigamit nako ang ClipBucket nasulbad nako ang problema gcsfuse - usa ka utility nga nagtugot sa operating system nga mag-upload og mga direktoryo sa Google Cloud cloud storage isip regular nga mga agianan paingon sa file system. Gi-host nako ang mga video file sa Google Cloud ug gigamit ang gcsfuse aron ipakita kini sa ClipBucket isip lokal nga mga file.

Ang kalainan mao nga ang ClipBucket midagan sa usa ka tinuod nga virtual machine, samtang ang MediaGoblin midagan sa usa ka Docker nga sudlanan. Dinhi, ang pag-mount sa mga file gikan sa cloud storage nahimong mas lisud. Gigugol nako ang daghang oras sa pagsulbad sa tanan nga mga problema ug nagsulat bahin niini tibuok blog post.

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
Ang una nga panagsama sa MediaGoblin sa pagtipig sa Google Cloud, nga akong gihisgutan gisulti sa 2018

Human sa pipila ka mga semana sa pag-adjust sa tanan nga mga sangkap, ang tanan nagtrabaho. Sa walay paghimog bisan unsang kausaban sa kodigo sa MediaGoblin, gilimbongan ko kini sa pagbasa ug pagsulat sa mga media files ngadto sa Google cloud storage.

Ang bugtong problema mao nga ang MediaGoblin nahimong malaw-ay nga hinay. Nagkinahanglan kini og bug-os nga 20 segundos aron ma-load ang mga thumbnail sa video sa home page. Kung molukso ka sa unahan samtang nagtan-aw og video, ang MediaGoblin mohunong sa walay katapusan nga 10 segundos sa dili pa ipadayon ang playback.

Ang panguna nga problema mao nga ang mga video ug mga litrato nagkuha usa ka taas, libot nga ruta sa tiggamit. Kinahanglan sila nga moadto gikan sa Google cloud storage pinaagi sa gcsfuse ngadto sa MediaGoblin, Nginx - ug dayon sila nakaabot sa browser sa user. Ang nag-unang bottleneck mao ang gcsfuse, nga wala gi-optimize alang sa katulin. Ang mga developers nagpasidaan bahin sa dagkong mga paglangan sa operasyon sa utility diha mismo sa main page sa proyekto:

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
Mga Pasidaan mahitungod sa ubos nga performance sa dokumentasyon sa gcsfuse

Sa tinuud, ang browser kinahanglan nga magkuha og mga file direkta gikan sa Google Cloud, nga dili moagi sa bisan unsang intermediate layer. Giunsa nimo kini mahimo nga wala’y pag-diving sa MediaGoblin codebase o pagdugang komplikado nga Google Cloud integration logic?

Sub_filter trick sa nginx

Sa swerte nakit-an nako ang usa ka yano nga solusyon, bisan pa gamay nga ngil-ad. Gidugang nako ang default.conf configuration sa Nginx ingon nga usa ka filter:

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

Sa akong setup, ang Nginx milihok isip proxy tali sa MediaGoblin ug sa end user. Ang direktiba sa ibabaw nagmando sa Nginx sa pagpangita ug pag-ilis sa tanan nga mga tubag sa MediaGoblin HTML sa dili pa kini i-serve sa end user. Gipulihan sa Nginx ang tanan nga mga agianan sa MediaGoblin media file nga adunay mga URL gikan sa pagtipig sa panganod sa Google.

Pananglitan, ang MediaGoblin naghimo og HTML nga sama niini:

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

Gibag-o sa Nginx ang tubag:

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

Karon ang tanan nagtrabaho sama sa gipaabut:

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
Gisulat pag-usab ni Nginx ang mga tubag gikan sa MediaGoblin aron ang mga kliyente makahangyo og mga media file direkta gikan sa Google cloud storage

Ang labing kaayo nga bahin sa akong solusyon mao nga wala kini magkinahanglan bisan unsang mga pagbag-o sa code sa MediaGoblin. Ang duha ka linya nga direktiba sa Nginx hapsay nga naghiusa sa MediaGoblin ug Google Cloud, bisan kung ang mga serbisyo wala’y nahibal-an bahin sa usag usa.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Kini nga solusyon nagkinahanglan nga ang mga file sa Google cloud storage mabasa sa tanan. Aron makunhuran ang peligro sa dili awtorisado nga pag-access, naggamit ako usa ka taas, random nga ngalan sa balde (eg. mediagoblin-39dpduhfz1wstbprmyk5ak29) ug pamatud-i nga ang palisiya sa pagkontrol sa pag-access sa balde wala magtugot sa dili awtorisado nga mga tiggamit sa pagpakita sa mga sulod sa direktoryo.

Katapusan nga produkto

Niini nga punto ako adunay usa ka kompleto, nagtrabaho nga solusyon. Malipayon nga nagdagan ang MediaGoblin sa kaugalingon nga sudlanan sa cloud platform sa Google, mao nga dili na kinahanglan nga i-patch o i-update kanunay. Ang tanan sa akong proseso awtomatiko ug mabag-o, nga nagtugot sa yano nga mga pag-edit o pag-rollback sa nangaging mga bersyon.

Ganahan kaayo ang akong pamilya kung unsa kadali ang pagtan-aw sa mga video. Uban sa tabang sa Nginx hack nga gihulagway sa ibabaw, ang pagtrabaho sa mga video nahimong ingon ka paspas sama sa YouTube.

Ang pagtan-aw sa screen ingon niini:

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
Mga sulod sa katalogo sa video sa pamilya pinaagi sa tag nga "Best"

Ang pag-klik sa thumbnail magdala og screen nga sama niini:

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
Pagtan-aw sa usa ka clip sa usa ka media server

Human sa mga tuig sa pagtrabaho, kini usa ka talagsaon nga magantihon sa paghatag sa mga sakop sa pamilya sa oportunidad sa pagtan-aw sa among mga video sa sama nga user-friendly YouTube-sama sa interface nga ako sa orihinal gusto.

Bonus: Pagpakunhod sa gasto ngadto sa ubos sa $1 kada bulan

Dili ka magtan-aw kanunay sa mga video sa balay, matag pipila lang ka bulan. Ang akong pamilya kolektibo nga nakamugna mga 20 ka oras nga trapiko sa usa ka tuig, apan ang server nagdagan 15/99,7. Nagbayad ako og $XNUMX kada bulan alang sa usa ka server nga ubos sa XNUMX% sa panahon.

Sa katapusan sa 2018, gipagawas sa Google ang produkto Cloud Run. Ang killer feature nagpadagan sa mga sudlanan sa Docker nga dali kaayo nga ang aplikasyon makatubag sa mga hangyo sa HTTP. Kana mao, ang server mahimong magpabilin sa standby mode ug magsugod lamang kung adunay gusto nga maka-access niini. Alang sa dili kanunay nga pagpadagan sa mga aplikasyon sama sa akoa, ang gasto mius-os gikan sa $15 matag bulan ngadto sa pipila ka sentimo kada tuig.

Alang sa mga hinungdan nga wala na nako mahinumduman, ang Cloud Run wala molihok sa akong imahe sa MediaGoblin. Apan sa pag-abot sa Cloud Run nahinumdom ko niana Heroku nagtanyag og susama nga serbisyo nga libre, ug ang ilang mga himan mas user-friendly kay sa Google.

Uban sa usa ka libre nga server sa aplikasyon, ang gasto ra mao ang pagtipig sa datos. Ang standard nga regional storage sa Google nagkantidad ug 2,3 cents/GB. Ang video archive nagkinahanglan og 33 GB, mao nga nagbayad lang ako og 77 cents kada bulan.

Ang akong walo ka tuig nga pagtinguha nga ma-digitize ang 45 ka mga videocassette. Bahin 2
Kini nga solusyon nagkantidad lamang og $0,77 kada bulan

Mga tip para sa mga nagplano nga mosulay

Klaro nga ang proseso nagdugay kanako. Apan nanghinaut ko nga kini nga artikulo makatabang kanimo sa pagluwas sa 80-90% sa paningkamot sa pag-digitize ug pagmantala sa imong mga home video. Sa usa ka bulag nga seksyon imong makit-an detalyado nga lakang-sa-lakang nga giya sa tibuok proseso, apan ania ang pipila ka kinatibuk-ang mga tip:

  • Atol sa yugto sa pag-digitize ug pag-edit, pagpreserbar sa daghang metadata kutob sa mahimo.
    • Ang bililhong impormasyon kasagarang girekord sa mga label sa video cassette.
    • Pagsubay kung unsang clip ang gikuha gikan sa unsang teyp ug sa unsang pagkasunod-sunod.
    • Isulat ang petsa sa pagpamusil, nga mahimong makita sa video.
  • Ikonsiderar ang pagbayad alang sa propesyonal nga mga serbisyo sa digitalization.
    • buhaton nimo hilabihan lisud ug mahal ang pagpares kanila sa kalidad sa digitalization.
    • Apan pagpalayo sa usa ka kompanya nga gitawag og EverPresent (mensahe ako kung kinahanglan nimo ang mga detalye).
  • Kung ikaw mismo ang mag-digitize, pagpalit ug HDD.
    • Ang dili ma-compress nga standard definition nga video nagkinahanglan og 100-200 MB kada minuto.
    • Gitipigan nako ang tanan sa akoa Synology DS412 + (10 TB).
  • Irekord ang metadata sa pipila ka kasagarang pormat nga wala mahigot sa usa ka piho nga aplikasyon.
    • Mga deskripsyon sa clip, oras code, petsa, ug uban pa.
    • Kung imong gitipigan ang metadata sa usa ka pormat nga espesipiko sa aplikasyon (o mas grabe pa, ayaw kini i-save), dili nimo mahimo pag-usab ang trabaho kung magdesisyon ka nga mogamit usa ka lahi nga solusyon.
    • Sa imong pag-edit, makakita ka og daghang mapuslanong metadata sa video. Mawala nimo sila kung dili nimo sila luwason.
      • Unsa ang nahitabo sa video?
      • Kinsay registered didto?
      • Kanus-a kini narekord?
  • Markahi ang imong paborito nga mga video.
    • Sa tinuud, kadaghanan sa mga video sa balay medyo makalaay.
    • Akong i-apply ang "labing maayo sa" tag sa akong paborito nga mga clip ug ablihan kini kung gusto nako motan-aw og kataw-anan nga mga video.
  • Pag-organisar og usa ka komprehensibo nga solusyon sa sayo kutob sa mahimo aron ang proseso diretso gikan sa pagsugod hangtod sa pagkahuman.
    • Gisulayan nako nga i-digitize una ang tanan nga mga teyp, dayon gi-edit ang tanan nga mga teyp, ug uban pa.
    • Nanghinaut ko nga nagsugod ako sa usa ka teyp ug nahimo ang tanan nga buluhaton niini. Dayon akong masabtan kung unsang mga desisyon ug sa unsang mga yugto ang makaapekto sa katapusang resulta.
  • Ipadayon ang pag-recode sa labing gamay.
    • Matag higayon nga imong i-edit o i-encode pag-usab ang usa ka clip, imong makunhuran ang kalidad niini.
    • I-digitize ang imong hilaw nga footage sa pinakataas nga kalidad, dayon i-transcode ang matag clip sa eksaktong kausa ngadto sa format nga natively render sa mga browser.
  • Gamita ang pinakasimple nga solusyon nga posible sa pagmantala sa mga video clip.
    • Sa paghinumdom, ang MediaGoblin ingon og usa ka sobra ka komplikado nga himan alang sa medyo yano nga senaryo sa paghimo og mga web page nga adunay usa ka static nga set sa mga video file.
    • Kung nagsugod pa ako, mogamit ako usa ka static nga site generator sama Hugo, Jekyll o Makalilisang.
  • Buhata ang pag-instalar.
    • Ang pag-edit sa video usa ka makalingaw nga paagi aron makombinar ang labing kaayo nga mga higayon gikan sa daghang mga video.
    • Ang nag-unang butang sa pag-edit mao ang musika. Pananglitan, ang tema talagsaon Hinay nga Snow gikan sa The National, kini ang akong personal nga nadiskobrehan.

Source: www.habr.com