Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2

Pérangan pisanan njlèntrèhaké upaya sing angel kanggo ngowahi digitalisasi video kulawarga lawas lan ngrusak dadi adegan sing kapisah. Sawise ngolah kabeh klip, aku pengin ngatur tampilan online kanthi trep kaya ing YouTube. Amarga iki minangka kenangan pribadi kanggo kulawarga, mula ora bisa dikirim ing YouTube dhewe. Kita butuh hosting sing luwih pribadi sing trep lan aman.

Langkah 3. Nerbitake

ClipBucket, clone YouTube open source sing bisa diinstal ing server sampeyan dhewe

Pisanan aku nyoba ClipBucket, sing nyebut dhewe minangka klon YouTube sumber terbuka sing bisa diinstal ing server sampeyan.

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2

Kaget, ClipBucket ora duwe instruksi instalasi. Matur nuwun kanggo manajemen njaba я otomatis proses instalasi kanthi pitulung saka Ansible, alat manajemen konfigurasi server.

Bagéyan saka kangelan ana sing skrip instalasi ClipBucket padha rampung rusak. Nalika iku aku makarya ing google lan miturut syarat-syarat kontrak, aku ora duwe hak kanggo nyumbang menyang klon YouTube sumber terbuka, nanging aku dikirim laporan bugsaka sing gampang kanggo nggawe koreksi sing dibutuhake. Wis pirang-pirang wulan, lan dheweke isih durung ngerti apa masalahe. Nanging, padha nambah kabeh luwih saka kewan omo ing saben release.

ClipBucket nggarap model konsultasi - dheweke ngeculake kode kasebut kanthi gratis lan dikenani biaya kanggo bantuan penyebaran. Mboko sithik aku ngerti yen perusahaan sing nggawe dhuwit saka dhukungan mbayar mbokmenawa ora kasengsem banget yen pelanggan nginstal produk kasebut dhewe.

MediaGoblin, alternatif sing luwih modern

Sawise sawetara wulan frustasi karo ClipBucket, aku mriksa pilihan sing kasedhiya lan ditemokake media goblog.

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
media goblog minangka platform enggo bareng media offline

MediaGoblin duwe akeh barang. Boten kados ClipBucket ing PHP unsightly, MediaGoblin ditulis ing Python, basa aku duwe akèh pengalaman nulis kode karo. mangan antarmuka baris printah, sing ngidini sampeyan ngotomatisasi download video kanthi gampang. Sing paling penting, MediaGoblin dilengkapi Gambar Docker, sing ngilangi masalah karo instalasi.

docker iku teknologi sing nggawe lingkungan mandhiri kanggo aplikasi sing bisa digunakake ing ngendi wae. Aku nggunakake Docker ing akeh proyekku.

Kangelan ngageti re-dockerizing MediaGoblin

Aku nganggep manawa nggunakake gambar docker MediaGoblin bakal dadi tugas sing ora pati penting. Inggih, iku ora cukup bisa metu cara sing.

Gambar sing wis rampung ora duwe rong fungsi sing dibutuhake:

  • Otentikasi
    • MediaGoblin nggawe portal media umum kanthi standar, lan aku butuh cara kanggo mbatesi akses wong njaba.
  • Transcoding
    • Saben sampeyan ngunggah video, MediaGoblin nyoba ngodhe maneh kanggo streaming sing optimal. Yen video asline wis siyap kanggo streaming, transcoding bakal nyuda kualitas.
    • MediaGoblin Nyedhiyani mateni transcoding liwat opsi konfigurasi, nanging ora bisa nindakake iki ing gambar Docker sing wis ana.

Inggih, ora masalah. Gambar Docker dilengkapi mbukak sumber, supaya sampeyan bisa mbangun maneh dhewe.

Sayange, gambar Docker ora dibangun maneh saka saiki Repositori MediaGoblin. Aku nyoba nyelarasake karo versi saka mbangun sukses pungkasan, nanging ora bisa uga. Sanajan aku nggunakake kode sing padha, dependensi eksternal MediaGoblin diganti, ngrusak bangunan kasebut. Welasan jam mengko, aku mlayu proses mbangun MediaGoblin 10-15 menit bola-bali nganti pungkasane bisa.

Sawetara sasi sabanjure kedadeyan sing padha. Secara total, rantai ketergantungan MediaGoblin wis ngrusak bangunanku kaping pirang-pirang sajrone sawetara taun kepungkur, lan pungkasane kedadeyan nalika aku nulis artikel iki. Aku pungkasanipun diterbitake garpu dhewe saka MediaGoblin c dependensi hard-kode lan versi perpustakaan sing ditemtokake kanthi jelas. Ing tembung liyane, tinimbang pratelan sing ora bisa dipercaya manawa MediaGoblin bisa digunakake karo versi apa wae celery > = 3.0, Aku diinstal katergantungan tartamtu ing versi celery 4.2.1, amarga aku nyoba MediaGoblin karo versi iki. Iku katon kaya produk perlu mekanisme mbangun reproduciblenanging aku durung nglakoni.

Oalah, sawise pirang-pirang jam perjuangan, pungkasane aku bisa mbangun lan ngatur MediaGoblin ing gambar Docker. Iku wis gampang skip transcoding sing ora perlu и nginstal Nginx kanggo otentikasi.

Langkah 4. Hosting

Wiwit MediaGoblin mbukak Docker ing komputer lokalku, langkah sabanjure yaiku nyebarake menyang server maya supaya kulawarga bisa nonton video kasebut.

MediaGoblin lan masalah panyimpenan video

Ana akeh platform sing njupuk gambar Docker lan dadi host ing URL umum. Sing nyekel yaiku saliyane aplikasi kasebut, 33 GB file video kudu diterbitake. Sampeyan bisa hard-kode menyang gambar docker, nanging ternyata dadi rumit lan ala. Ngganti siji baris konfigurasi mbutuhake redeployment saka 33 GB data.

Nalika aku digunakake ClipBucket, Aku ditanggulangi masalah karo gcsfuse - sarana sing ngidini sistem operasi ngunggah direktori menyang panyimpenan awan Google Cloud minangka jalur biasa menyang sistem file. Aku dadi tuan rumah file video ing Google Cloud lan nggunakake gcsfuse kanggo nuduhake minangka file lokal ing ClipBucket.

Bentenipun punika ClipBucket mlayu ing mesin virtual nyata, nalika MediaGoblin mlayu ing wadhah Docker. Ing kene, nginstal file saka panyimpenan awan dadi luwih angel. Aku ngenteni puluhan jam kanggo ngrampungake kabeh masalah lan nulis babagan iki kirim blog kabèh.

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
Integrasi awal MediaGoblin karo panyimpenan Google Cloud, sing dakkandhakake marang ing 2018

Sawise sawetara minggu nyetel kabeh komponen, kabeh bisa digunakake. Tanpa ngowahi kode MediaGoblin, aku ngapusi supaya maca lan nulis file media menyang panyimpenan awan Google.

Masalah mung yaiku MediaGoblin dadi alon banget. Butuh 20 detik kanggo ngunggah gambar cilik video menyang kaca ngarep. Yen sampeyan mlumpat maju nalika nonton video, MediaGoblin bakal ngaso nganti 10 detik tanpa telas sadurunge nerusake puter maneh.

Masalah utama yaiku video lan gambar menyang pangguna kanthi cara sing dawa lan bunder. Dheweke kudu pindhah saka panyimpenan maya Google liwat gcsfuse menyang MediaGoblin, Nginx - lan mung banjur mlebu menyang browser pangguna. Hambatan utama yaiku gcsfuse, sing ora dioptimalake kanggo kinerja cepet. Pangembang ngelingake babagan wektu tundha gedhe ing utilitas ing kaca utama proyek kasebut:

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
Pènget babagan kinerja kurang ing dokumentasi gcsfuse

Saenipun, browser kudu narik file langsung saka Google Cloud, ngliwati kabeh lapisan penengah. Kepiye carane nindakake iki tanpa mlebu ing basis kode MediaGoblin lan nambah logika integrasi Google Cloud sing kompleks?

trik sub_filter ing nginx

Untunge aku nemokake solusi sing gampang, sanajan немного elek. Aku ditambahake menyang konfigurasi default.conf ing Nginx saringan kuwi:

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

Ing persiyapanku, Nginx tumindak minangka proxy antarane MediaGoblin lan pangguna pungkasan. Arahan ing ndhuwur ngandhani Nginx kanggo nggoleki lan ngganti kabeh respon HTML MediaGoblin sadurunge dilayani menyang pangguna pungkasan. Nginx ngganti kabeh path relatif menyang file media MediaGoblin karo URL saka panyimpenan maya Google.

Contone, MediaGoblin ngasilake HTML iki:

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

Nginx ngganti respon:

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

Saiki kabeh wis mlaku kaya sing dikarepake:

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
Nginx nulis ulang tanggapan saka MediaGoblin supaya klien bisa njaluk file media langsung saka panyimpenan awan Google

Sisih paling apik babagan solusiku yaiku ora mbutuhake owah-owahan ing kode MediaGoblin. Arahan Nginx rong baris kanthi lancar nggabungake MediaGoblin lan Google Cloud, sanajan loro layanan kasebut ora ngerti apa-apa.

komentar: Solusi iki mbutuhake file ing Google Cloud Storage supaya bisa diwaca kabeh wong. Kanggo nyuda resiko akses ora sah, aku nggunakake jeneng ember acak dawa (contone, mediagoblin-39dpduhfz1wstbprmyk5ak29) lan verifikasi manawa kabijakan kontrol akses ember ora ngidini pangguna sing ora sah nampilake isi direktori kasebut.

Produk pungkasan

Ing jalur iki, aku duwe solusi sing lengkap lan bisa digunakake. MediaGoblin seneng-seneng mlayu ing wadhah dhewe ing Google Cloud Platform dadi ora perlu ditambal utawa dianyari kanthi kerep. Kabeh sing ana ing prosesku otomatis lan bisa direproduksi, ngidini suntingan utawa mbalek maneh menyang versi sadurunge.

Kulawargane seneng banget nonton video kanthi gampang. Kanthi bantuan hack Nginx sing diterangake ing ndhuwur, nggarap video dadi cepet kaya ing YouTube.

Layar tampilan katon kaya iki:

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
Isi katalog video kulawarga kanthi tag "Best"

Ngeklik gambar cilik bakal nampilake layar ing ngisor iki:

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
Ndeleng klip individu ing server media

Sawise pirang-pirang taun kerja, aku seneng banget menehi kesempatan kanggo para sedulur kanggo nonton video ing antarmuka sing trep kaya ing YouTube, sing dakkarepake.

Bonus: Ngurangi biaya nganti kurang saka $1 saben wulan

Sampeyan jarang nonton video ing omah, mung saben sawetara wulan. Kulawargaku sacara kolektif ngasilake lalu lintas 20 jam saben taun, nanging server mlaku 15/99,7. Aku mbayar $ XNUMX saben wulan kanggo server sing mudhun XNUMX% wektu.

Ing pungkasan 2018, Google ngeculake produk kasebut Awan Run. Fitur pembunuh kasebut mbukak wadhah Docker kanthi cepet supaya aplikasi kasebut bisa nanggapi panjaluk HTTP. Yaiku, server bisa tetep ing mode siyaga - lan mung diwiwiti nalika ana wong sing pengin mbukak. Kanggo aplikasi sing jarang digunakake kaya mine, biaya wis ilang saka $15 sasi kanggo sawetara sen taun.

Amarga aku ora ngelingi, Cloud Run ora bisa digunakake karo gambar MediaGoblin. Nanging karo tekane saka Cloud Run, Aku elinga iku Heroku nawakake layanan sing padha kanthi gratis, lan alat kasebut luwih trep tinimbang Google.

Kanthi server aplikasi gratis, biaya mung panyimpenan data. Panyimpenan regional standar Google biaya 2,3 sen / GB. Arsip video 33 GB, mula aku mung mbayar 77 sen saben wulan.

Pendhaftaran wolung taun nggoleki digitalisasi 45 kaset video. Bagean 2
Solusi iki mung biaya $0,77 saben wulan

Tips kanggo sing arep nyoba

Temenan proses kasebut njupuk wektu suwe. Nanging muga-muga artikel iki bakal mbantu sampeyan ngirit 80-90% upaya digitalisasi lan nerbitake video ing omah. Ing bagean kapisah sampeyan bisa nemokake rinci langkah dening pandhuan langkah saindhenging proses, nanging ing ngisor iki sawetara tips umum:

  • Simpen metadata sabisa-bisa sajrone tahap digitalisasi lan panyuntingan.
    • Informasi penting asring direkam ing label kaset video.
    • Rekam klip endi sing dijupuk saka kaset lan ing urutan apa.
    • Tulis tanggal njupuk, sing bisa katon ing video.
  • Coba mbayar layanan digitalisasi profesional.
    • Sampeyan bakal banget angel lan larang kanggo cocog karo kualitas digitalisasi.
    • Nanging adoh saka perusahaan sing diarani EverPresent (kabari aku yen sampeyan butuh rincian liyane).
  • Yen sampeyan nindakake digitalisasi dhewe, tuku HDD.
    • Video definisi standar sing ora dikompres butuh 100-200 MB saben menit.
    • Aku terus kabeh ing sandi Synology DS412 + (10 TB).
  • Tulis metadata ing sawetara format umum sing ora disambungake menyang aplikasi tartamtu.
    • Katrangan klip, kode wektu, tanggal, lsp.
    • Yen sampeyan nyimpen metadata ing format khusus aplikasi (utawa luwih elek, aja nyimpen kabeh), sampeyan ora bakal bisa mbaleni maneh yen sampeyan arep nggunakake solusi liyane.
    • Nalika sampeyan nyunting, sampeyan ndeleng akeh metadata migunani ing video kasebut. Sampeyan bakal ilang yen ora disimpen.
      • Apa sing kedadeyan ing video kasebut?
      • Sapa sing ndhaftar ing kono?
      • Kapan direkam?
  • Tandhani video favorit.
    • Jujur, umume konten video ing omah pancen mboseni.
    • Aku nggunakake tag "paling apik" menyang klip favorit lan mbukak nalika aku pengin nonton video lucu.
  • Atur solusi sing komprehensif sakcepete supaya proses kasebut langsung saka wiwitan nganti rampung.
    • Aku nyoba digitalisasi kabeh kaset dhisik, banjur nyunting kabeh kaset, lsp.
    • Aku pengin aku wis miwiti karo siji tape lan rampung kabeh karya karo. Banjur aku bakal ngerti keputusan lan ing tahap apa sing mengaruhi asil pungkasan.
  • Nyilikake recoding.
    • Saben sampeyan ngowahi utawa ngodhe maneh klip, sampeyan bakal nyuda kualitase.
    • Digitalisasi rekaman mentah kanthi kualitas maksimal, banjur transcode saben klip persis sapisan menyang format sing dimainake browser asli.
  • Gunakake solusi sing paling gampang kanggo ngirim klip video.
    • Ing retrospect, MediaGoblin misale jek minangka alat sing rumit banget kanggo skenario sing cukup prasaja kanggo ngasilake kaca web kanthi file video statis.
    • Yen aku miwiti maneh, aku bakal nggunakake generator situs statis kayata Hugo, Jekyll utawa Gridsome.
  • Nggawe montase.
    • Ngedit video minangka cara sing nyenengake kanggo nggabungake momen paling apik saka pirang-pirang video.
    • Sing utama ing nyunting yaiku musik. Contone, tema iku apik tenan Salju alon saka The National, iki panemuan pribadi.

Source: www.habr.com