. Бүх клипийг боловсруулсны дараа би YouTube дээрх шиг онлайнаар үзэхийг хүссэн юм. Эдгээр нь гэр бүлийн хувийн дурсамж учраас YouTube дээр нийтлэх боломжгүй. Бидэнд тав тухтай, аюулгүй илүү хувийн хостинг хэрэгтэй байна.
Алхам 3: Нийтлэх
ClipBucket, өөрийн сервер дээр суулгаж болох нээлттэй эхийн YouTube клон
Миний оролдсон хамгийн эхний зүйл , энэ нь өөрийгөө нээлттэй эх сурвалжийн YouTube клон гэж нэрлэдэг бөгөөд та өөрийн сервер дээр суулгаж болно.

Хачирхалтай нь ClipBucket-д суулгах заавар байхгүй байна. Баярлалаа я тусламжтайгаар , серверийн тохиргооны удирдлагын хэрэгсэл.
Хэцүү байдлын нэг хэсэг нь ClipBucket суулгах скриптүүд бүрэн эвдэрсэн байсан. Тэр үед би мөн гэрээний нөхцлийн дагуу би нээлттэй эхийн YouTube-ийн клонд хувь нэмэр оруулах эрхгүй байсан ч би , үүнээс шаардлагатай засварыг хялбархан хийж болно. Хэдэн сар өнгөрч, тэд асуудал юу болохыг ойлгоогүй хэвээр байв. Үүний оронд тэд бүгдийг нэмсэн түүнээс дээш хувилбар бүрт алдаа гардаг.
ClipBucket зөвлөх загвар дээр ажилладаг байсан бөгөөд тэд өөрсдийн кодыг үнэ төлбөргүй гаргаж, байршуулах тусламжийн төлбөрийг төлсөн. Төлбөртэй тусламжаас мөнгө олдог компани нь үйлчлүүлэгчид өөрсдөө уг бүтээгдэхүүнийг суулгах сонирхолгүй байдаг нь аажмаар надад санагдав.
MediaGoblin, илүү орчин үеийн хувилбар
ClipBucket-т олон сар бухимдсаны дараа би боломжит хувилбаруудыг судалж үзээд олсон .

нь офлайн медиа хуваалцах платформ юм
MediaGoblin-д маш олон сайхан зүйлс бий. Үзэсгэлэнгүй PHP хэл дээрх ClipBucket-аас ялгаатай нь MediaGoblin нь Python хэл дээр бичигдсэн бөгөөд энэ хэлээр би маш их код бичих туршлагатай. Идэх , энэ нь танд видео татах ажлыг хялбархан автоматжуулах боломжийг олгодог. Хамгийн чухал нь MediaGoblin-тэй хамт ирдэг , энэ нь суулгах аливаа асуудлыг арилгадаг.
нь программыг хаана ч ажиллуулах бие даасан орчинг бүрдүүлдэг технологи юм. Би Docker ашигладаг .
MediaGoblin-ийг дахин докержуулахын гайхалтай бэрхшээл
MediaGoblin докерын дүрсийг байрлуулах нь өчүүхэн ажил болно гэж би бодсон. За, энэ нь тийм ч сайн болсонгүй.
Дууссан зураг нь шаардлагатай хоёр функцийг агуулаагүй болно:
- Гэрчлэлт
- MediaGoblin нь анхдагчаар олон нийтийн мэдээллийн портал үүсгэдэг бөгөөд надад гадны хүмүүсийн хандалтыг хязгаарлах арга хэрэгтэй байсан.
- Код хувиргах
- Таныг видео татаж авах болгонд MediaGoblin оновчтой дамжуулалт хийхийн тулд кодыг өөрчлөхийг оролддог. Хэрэв видеог шууд дамжуулахад бэлэн бол кодыг хөрвүүлэх нь чанарыг бууруулдаг.
- MediaGoblin өгдөг , гэхдээ үүнийг одоо байгаа Docker дүрс дээр хийх боломжгүй.
За, асуудалгүй. Докерын дүрс нь хамт ирдэг , тиймээс боломжтой .
Харамсалтай нь Докерын дүрсийг одоогийнхоос бүтээхээ больсон. . Би үүнийг хамгийн сүүлд амжилттай суулгасан хувилбартай синхрончлохыг оролдсон боловч амжилтгүй болсон. Хэдийгээр би яг ижил кодыг ашигласан ч MediaGoblin-ийн гадаад хамаарал өөрчлөгдөж, бүтцийг эвдсэн. Хэдэн арван цагийн дараа би 10-15 минутын MediaGoblin бүтээх процессыг дахин дахин давтаж, эцэст нь үр дүнд хүртлээ.
Хэдэн сарын дараа ижил зүйл болсон. Нийтдээ, MediaGoblin-ийн хамаарлын сүлжээ сүүлийн хоёр жилийн хугацаанд миний бүтээн байгуулалтыг хэд хэдэн удаа эвдсэн бөгөөд хамгийн сүүлд энэ нийтлэлийг бичиж байх үед тохиолдсон. Би эцэст нь нийтэлсэн c болон номын сангийн тодорхой заасан хувилбарууд. Өөрөөр хэлбэл, MediaGoblin ямар ч хувилбартай ажилладаг гэсэн эргэлзээтэй мэдэгдлийн оронд >= 3.0, би тодорхой хувилбарын хамаарлыг суулгасан Учир нь би MediaGoblin-ийг энэ хувилбараар туршиж үзсэн. Бүтээгдэхүүнд хэрэгтэй юм шиг байна , гэхдээ би үүнийг хараахан хийгээгүй байна.
Ямартай ч олон цагийн тэмцлийн эцэст би MediaGoblin-ийг Docker дүрс дээр бүтээж, тохируулж чадсан. Тэнд аль хэдийн амар байсан и .
Алхам 4. Хостинг
MediaGoblin миний локал компьютер дээр Docker-г ажиллуулж байсан тул дараагийн алхам нь гэр бүлээрээ видеог үзэх боломжтой болгохын тулд үүнийг үүлэн серверт байрлуулах явдал байв.
MediaGoblin ба видео хадгалах асуудал
Докерын зургийг авч нийтийн URL дээр байршуулдаг олон платформууд байдаг. Хамгийн гол нь програмаас гадна 33 ГБ видео файлыг нийтлэх шаардлагатай болсон. Тэдгээрийг Docker дүрс болгон хатуу кодлох боломжтой байсан ч энэ нь төвөгтэй бөгөөд муухай байх болно. Нэг мөрийн тохиргоог өөрчлөхөд 33 ГБ өгөгдлийг дахин байршуулах шаардлагатай.
Би ClipBucket-ийг ашиглахдаа энэ асуудлыг шийдсэн - үйлдлийн системд Google Cloud үүл хадгалах сан руу лавлахуудыг файлын систем рүү ердийн зам болгон байршуулах боломжийг олгодог хэрэгсэл. Би видео файлуудыг Google Cloud дээр байршуулж, gcsfuse ашиглан ClipBucket дотор локал файл хэлбэрээр харагдуулсан.
Үүний ялгаа нь ClipBucket нь жинхэнэ виртуал машин дээр ажилладаг байсан бол MediaGoblin нь Docker контейнерт ажилладаг байв. Энд үүл хадгалах сангаас файлуудыг холбох нь илүү хэцүү болсон. Бүх асуудлыг шийдэх гэж олон арван цаг зарцуулж, энэ тухай бичсэн .

Миний яриад байгаа Google Cloud хадгалах сантай MediaGoblin-ийн анхны интеграцчлал
Хэдэн долоо хоногийн дараа бүх бүрэлдэхүүн хэсгүүдийг тохируулсны дараа бүх зүйл үр дүнтэй болсон. MediaGoblin-ийн кодонд ямар ч өөрчлөлт хийлгүйгээр би үүнийг хууран мэхэлж, Google-ийн клоуд санд медиа файлуудыг уншиж, бичиж байсан.
Цорын ганц асуудал бол MediaGoblin бүдүүлэг удаашралтай болсон явдал байв. Видеоны өнгөц зургийг нүүр хуудсанд ачаалахад бүтэн 20 секунд зарцуулсан. Хэрэв та видео үзэж байхдаа урагш харайвал MediaGoblin дахин тоглуулахын өмнө эцэс төгсгөлгүй 10 секунд түр зогсдог.
Гол асуудал нь видео, зураг нь хэрэглэгч рүү урт, тойрог замд хүргэсэн явдал байв. Тэд Google-ийн үүлэн сангаас gcsfuse-ээр дамжуулан MediaGoblin, Nginx руу шилжих шаардлагатай болсон бөгөөд үүний дараа л тэд хэрэглэгчийн хөтөч рүү очсон. Гол бэрхшээл нь gcsfuse байсан бөгөөд энэ нь хурдны хувьд оновчтой биш юм. Хөгжүүлэгчид төслийн үндсэн хуудсан дээр ашиглалтын үйл ажиллагаанд их хэмжээний саатал гарахыг анхааруулж байна.

Анхааруулга gcsfuse баримт бичигт
Хөтөч нь ямар ч завсрын давхаргыг алгасаж Google Cloud-аас файлуудыг шууд татах нь хамгийн тохиромжтой. Та MediaGoblin кодын сан руу орохгүйгээр эсвэл Google Cloud-ийн цогц логикийг нэмэхгүйгээр үүнийг яаж хийх вэ?
Nginx дээрх дэд шүүлтүүрийн трик
Аз болоход би энгийн шийдлийг олсон ч немного муухай. Би Nginx дээрх default.conf тохиргоонд нэмсэн :
sub_filter "/mgoblin_media/media_entries/" "https://storage.googleapis.com/MY-GCS-BUCKET/media_entries/";
sub_filter_once off;Миний тохиргоонд Nginx MediaGoblin болон эцсийн хэрэглэгчийн хооронд прокси үүрэг гүйцэтгэсэн. Дээрх заавар нь Nginx-д MediaGoblin-ийн бүх HTML хариултуудыг эцсийн хэрэглэгчдэд үйлчлэхээсээ өмнө хайж, солихыг зааварчилдаг. Nginx нь MediaGoblin медиа файлуудын холбогдох бүх замыг Google-ийн клоуд сангаас URL хаягаар орлуулдаг.
Жишээлбэл, MediaGoblin дараах байдлаар HTML үүсгэдэг:
<video width="720" height="480" controls autoplay>
<source
src="/mgoblin_media/media_entries/16/Michael-riding-a-bike.mp4"
type="video/mp4">
</video>Nginx хариултыг өөрчилдөг:
<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>Одоо бүх зүйл санаснаар болж байна:

Nginx нь MediaGoblin-ийн хариултыг дахин бичдэг тул үйлчлүүлэгчид Google-ийн клоуд сангаас медиа файлыг шууд хүсэх боломжтой
Миний шийдлийн хамгийн сайн тал нь MediaGoblin кодыг өөрчлөх шаардлагагүй юм. Nginx-ийн хоёр мөрийн заавар нь MediaGoblin болон Google Cloud-ийг бүрэн нэгтгэдэг боловч эдгээр үйлчилгээнүүд бие биенийхээ талаар огт мэддэггүй.
тайлбар: Энэхүү шийдэл нь Google-ийн үүлэн сан дахь файлуудыг хүн бүр унших боломжтой байхыг шаарддаг. Зөвшөөрөлгүй нэвтрэх эрсдлийг бууруулахын тулд би урт, санамсаргүй хувин нэрийг ашигладаг (жишээ нь:
mediagoblin-39dpduhfz1wstbprmyk5ak29) болон хувингийн хандалтын хяналтын бодлого нь зөвшөөрөлгүй хэрэглэгчдэд лавлахын агуулгыг харуулахыг зөвшөөрдөггүй эсэхийг шалгана уу.
Эцсийн бүтээгдэхүүн
Энэ үед надад бүрэн, ажил хэрэгч шийдэл байсан. MediaGoblin Google-ийн үүлэн платформ дээр өөрийн саванд аз жаргалтай ажиллаж байсан тул байнга засвар хийх, шинэчлэх шаардлагагүй байв. Миний үйл явц дахь бүх зүйл автоматжуулсан бөгөөд дахин давтагдах боломжтой байсан тул өмнөх хувилбаруудыг энгийн засварлах эсвэл буцаах боломжтой болсон.
Манай гэр бүл видеог үзэхэд хялбар байсан нь үнэхээр таалагдсан. Дээр дурдсан Nginx хакерын тусламжтайгаар видеотой ажиллах нь YouTube дээрх шиг хурдан болсон.
Харах дэлгэц дараах байдалтай байна.

"Шилдэг" гэсэн шошготой гэр бүлийн видео каталогийн агуулга
Өнгөц зураг дээр дарахад иймэрхүү дэлгэц гарч ирнэ:

Медиа сервер дээр нэг клип үзэх
Олон жилийн хөдөлмөрлөсний дараа гэр бүлийн гишүүдэд маань миний хүсч байсан хэрэглэгчдэд ээлтэй YouTube шиг интерфэйс дээр манай видеог үзэх боломжийг олгосон нь үнэхээр гайхалтай байлаа.
Бонус: Зардлаа сард 1 доллараас бага болгож бууруулна
Та гэрийн видеог тэр бүр үздэггүй, хэдхэн сар тутамд л үздэг. Манай гэр бүл нэг жилд 20 цаг орчим траффик үүсгэдэг байсан ч сервер нь 15/99,7 ажиллаж байсан. Би XNUMX% уналттай байсан серверт сар бүр XNUMX доллар төлсөн.
2018 оны сүүлээр Google бүтээгдэхүүнээ гаргасан . Алуурчин онцлог нь Docker контейнеруудыг маш хурдан ажиллуулж байсан тул програм HTTP хүсэлтэд хариу өгөх боломжтой байв. Өөрөөр хэлбэл, сервер зогсолтын горимд байж, хэн нэгэн хандахыг хүссэн үед л эхэлж болно. Минийх шиг ховор ажилладаг програмуудын зардал сард 15 доллараас жилд хэдэн цент болж буурсан.
Би санахгүй байгаа шалтгааны улмаас Cloud Run нь миний MediaGoblin зурагтай ажиллахгүй байсан. Гэхдээ Cloud Run гарч ирснээр би үүнийг санаж байсан ижил төстэй үйлчилгээг үнэ төлбөргүй санал болгодог бөгөөд тэдгээрийн хэрэгслүүд нь Google-ээс хамаагүй илүү хэрэглэгчдэд ээлтэй байдаг.
Үнэгүй програмын сервертэй бол цорын ганц зардал нь өгөгдөл хадгалах явдал юм. Google-ийн стандарт бүс нутгийн хадгалах сан нь 2,3 цент/ГБ үнэтэй. Видео архив нь 33 ГБ эзэлдэг тул би сард ердөө 77 цент төлдөг.

Энэ шийдэл нь сард ердөө 0,77 доллар зарцуулдаг
Туршихаар төлөвлөж буй хүмүүст зориулсан зөвлөгөө
Мэдээжийн хэрэг, энэ үйл явц надад удаан хугацаа зарцуулсан. Гэхдээ энэ нийтлэл нь таны гэрийн видеог дижитал хэлбэрт шилжүүлэх, нийтлэх хүчин чармайлтын 80-90% -ийг хэмнэхэд тусална гэж найдаж байна. Тусдаа хэсэгт та олж болно үйл явцын туршид, гэхдээ энд зарим ерөнхий зөвлөмжүүд байна:
- Дижитал болгох, засварлах үе шатанд аль болох их мета өгөгдлийг хадгалах.
- Үнэ цэнэтэй мэдээллийг ихэвчлэн видео кассет шошгон дээр тэмдэглэдэг.
- Аль клипийг ямар соронзон хальснаас, ямар дарааллаар авсан бэ гэдгийг хянаж байгаарай.
- Видеон дээр гарч болох зураг авалтын огноог бичнэ үү.
- Мэргэжлийн дижиталчлалын үйлчилгээний төлбөрийг бодож үзээрэй.
- Та болно чрезвычайно дижиталжуулах чанарын хувьд тэдгээртэй таарах нь хэцүү бөгөөд үнэтэй байдаг.
- Гэхдээ EverPresent гэх компаниас хол байгаарай (дэлгэрэнгүй мэдээлэл хэрэгтэй бол над руу мессеж бичээрэй).
- Хэрэв та дижиталчлалыг өөрөө хийвэл HDD худалдаж аваарай.
- Шахагдаагүй стандарт нарийвчлалтай видео минутанд 100-200 МБ зарцуулдаг.
- Би бүх зүйлийг өөртөө хадгалсан (10 TB).
- Тодорхой програмтай холбоогүй зарим нийтлэг форматаар мета өгөгдлийг бичнэ үү.
- Клипийн тайлбар, цагийн код, огноо гэх мэт.
- Хэрэв та мета өгөгдлийг програмын тусгай форматаар хадгалах юм бол (эсвэл бүр дордвол үүнийг огт бүү хадгал) өөр шийдлийг ашиглахаар шийдсэн бол энэ ажлыг дахин хийх боломжгүй болно.
- Та засварлах явцад видеон дээр маш их хэрэгтэй мета өгөгдлийг харах болно. Хэрэв та тэднийг аврахгүй бол алдах болно.
- Видеон дээр юу болж байна вэ?
- Тэнд хэн бүртгэлтэй вэ?
- Үүнийг хэзээ бүртгэсэн бэ?
- Өөрийн дуртай видеогоо тэмдэглэ.
- Үнэнийг хэлэхэд ихэнх гэрийн видеонууд уйтгартай байдаг.
- Би дуртай клипэндээ "best of" гэсэн шошгыг хэрэглэж, хөгжилтэй видео үзэхийг хүссэн үедээ нээдэг.
- Процесс эхнээс нь дуустал шууд явагдахын тулд цогц шийдлийг аль болох эрт зохион байгуул.
- Би эхлээд бүх соронзон хальснуудыг дижитал хэлбэрт оруулахыг оролдсон, дараа нь бүх соронзон хальснуудыг засварлах гэх мэт.
- Нэг л соронзон хальснаас эхлээд бүх ажлыг түүгээрээ хийсэн ч болоосой. Дараа нь би эцсийн үр дүнд ямар шийдвэр, ямар шатанд нөлөөлж байгааг ойлгох болно.
- Дахин кодыг хамгийн бага хэмжээнд байлга.
- Та клипийг засварлах эсвэл дахин кодлох болгондоо түүний чанарыг бууруулдаг.
- Түүхий бичлэгээ дээд зэргийн чанартайгаар дижитал болгож, клип бүрийг хөтчөөс хөрвүүлдэг формат руу яг нэг удаа хөрвүүлээрэй.
- Видео клипийг нийтлэх хамгийн энгийн шийдлийг ашигла.
- Эргээд харахад MediaGoblin нь статик видео файл бүхий вэб хуудас үүсгэх нэлээн энгийн хувилбарт зориулсан хэтэрхий төвөгтэй хэрэгсэл мэт санагдаж байна.
- Хэрэв би шинээр эхэлж байсан бол статик сайт үүсгэгчийг ашиглах байсан , буюу .
- Суулгацыг хий.
- Видео засварлах нь олон видеоны хамгийн сайхан мөчүүдийг нэгтгэх хөгжилтэй арга юм.
- Редакцийн гол зүйл бол хөгжим юм. Жишээлбэл, сэдэв нь гайхалтай юм The National-аас, энэ бол миний хувийн нээлт.
Эх сурвалж: www.habr.com
