. Բոլոր տեսանյութերի մշակման հետո ցանկանում էի կազմակերպել դրանց դիտումը առցանց այնպես, ինչպես YouTube-ում: Քանի որ դրանք ընտանեկան հիշողություններ են, YouTube-ում դրանք հրապարակելը հնարավոր չէ: Պետք է ավելի անձնական հոսթինգ, որը միաժամանակ կդառնա հարմար և անվտանգ.
Քայլ 3. Պարբերություն
ClipBucket, օպենսորթված YouTube-ի հայտնությունն, որն այլևս տեղադրել կարելի է սեփական սերվերում
Առաջին հերթին փորձեցի , որը իրեն անվանում է օպենսորթված YouTube-ի նմանակ, որը կարելի է տեղադրել սեփական սերվերում.

Հրաշքով, բայց ClipBucket-ում չկա որևէ տեղադրման հրահանգ: Կորուստվելով կողմից ես հաստատող , սերվերային կոնֆիգուրացիայի կառավարման ծրագիր.
Այդքան դժվարություններից մեկի մի մասը այն էր, որ ClipBucket-ի տեղադրման scripts-ը ամբողջովին փչացած էին: Այդ ժամանակ ես և պայմանագրերից ելնելով չունեի իրավունք հանգեցնել օպենսորթված YouTube-ի, բայց ես , որից կարելի էր հեշտությամբ կատարել անհրաժեշտ փոփոխությունները: Սահմանվել էին ամիսներ, և նրանք մինչև հիմա չէին հասկացել, թե որտեղ էր խնդիրը: Դրանից բացի, նրանք ավելացրեցին ամենը սխալներ յուրաքանչյուր թողարկման մեջ.
ClipBucket ընկերությունը աշխատում էր խորհրդատվության մոդելով՝ իր կոդը թողարկելով ազատ և գումար վերցնելով տեղադրման օգնության համար: Արդեն հասկացա, որ ընկերությունը, որը գումար է վաստակում վճարովի աջակցությամբ, հավանաբար, ոչ մի մեծ հետաքրքրություն ունի, որպեսզի հաճախորդները ինքնուրույն տեղադրեն արտադրանքը.
MediaGoblin, ավելի ժամանակակից այլընտրանք
Չորեք ամիսների ClipBucket-ի անհաջողություններից հետո ես վերանայեցի մատչելի տարբերակները և գտա .

՝ այս ինքնաբավ մեդիա փոխանակման ուղեցույցը.
MediaGoblin-ում շատ լավ բաներ կան. ClipBucket-ի չափի լուրջ PHP-ից նմանինչը գրանցված է Python-ում՝ այդ լեզվով ես մեծ փորձ ունեմ ծածկագրեր գրելու: Ունի , որը հեշտացնում է տեսանյութերի ավտոմատացում ապրել. Ամենակարևորն այն է, որ MediaGoblin-ը գալիս է , որը բացառում է տեղադրման հետ կապված բոլոր խնդիրները.
՝ դա տեխնոլոգիա է, որը ստեղծում է ավտոնոմ միջավայր հավելվածի համար, որը գործում է ցանկացած տեղ: Ես օգտագործում եմ Docker իմ բազմաթիվ նախագծերում. .
Ես ենթադրեցի, որ Docker-ի պատրաստի իմիջ MediaGoblin-ի տեղադրումը կլինի պարզ խնդիր: Չէ, դա այդպես չէր.
Ամսյա իմիջում չկար երկու անհրաժեշտ գործառույթներ:
Ստուգում
- MediaGoblin-ը ըստ լռության ստեղծում է հանրային մեդիա պորտալ, իսկ ինձ էր անհրաժեշտ միջոց, ինչպես սահմանափակել արտաքիններին մուտքը.
- Բեկանաչափում
- Տրանսկոդավորում
- Ամեն անգամ, երբ դուք բեռնում եք տեսանյութ, MediaGoblin-ն փորձում է այն վերածնել օպտիմալ հոսքի համար: Եթե տեսանյութը սկզբում պատրաստ է հոսելու համար, վերածնման գործընթացը կարող է նվազեցնել որակը:
- MediaGoblin-ն նախատեսում է , բայց առկա Docker նկարը դա անելը հնարավոր չի լինում:
Ինչ էլ լինի, խնդիր չկա: Docker նկարը գալիս է , այնպես որ դուք կարող եք .
Վախենալով, Docker նկարը այլևս չի կառուցվում ներկայիս . Ես փորձեցի համընկնել այն վերջին հաջող հավաքկարների տարբերակի հետ, բայց էլ չի ստացվել: Չնայած ես օգտագործել եմ հենց նույն կոդը, MediaGoblin-ի արտաքին կախվածությունները փոխվել են, հարվածելով հավաքմանը: Թվացույցների ընթացքում ես անընդմեջ կրկնում էի 10-15 րոպեների հավաքման գործընթացը, մինչեւ այն վերջապես աշխատեց:
Որոշ ամիս հետո կրկին նույնը տեղի ունեցավ: Ընդհանուր առմամբ վերջին մի քանի տարիների ընթացքում MediaGoblin-ի կախվածության շղթան մի քանի անգամ խանգարեց իմ հավաքումը, և վերջին անգամ դա տեղի ունեցավ հենց հիմա, երբ ես գրում էի այս հոդվածը: Վերջապես, ես հրապարակեցի հետ և ակնհայտորեն նշված գրադարանների տարբերակներով: Այլ խոսքով, MediaGoblin-ի հետ աշխատելու թերագնահատված փաստարկի փոխարեն, ես կոնկրետ կախվածություն հաստատեցի >= 3.0, ես կարող եմ հաստատել կոնկրետ կախվածությունը , որովհետև ես փորձարկել էի MediaGoblin այս տարբերակով: Ներքին միտքն անհրաժեշտ է , բայց ես դեռ չեմ զբաղվել դրանով:
Միևնույն է, բազմաթիվ ժամ անցկացնելուց հետո, ես վերջապես կարողացա կառուցել և սահմանել MediaGoblin-ը Docker նկարի մեջ: Այնտեղ արդեն հեշտ էր և .
Քայլ 4. Հոստինգ
Չնայած MediaGoblin-ը աշխատում էր Docker-ի վրա իմ տեղական համակարգչում, հաջորդ քայլը տեղադրում էր Cloud սերվերում, որպեսզի ընտանիքը կարողանա դիտել տեսանյութերը:
MediaGoblin և տեսանյութերի պահպանման խնդիրը
Կան շատ հարթակներ, որոնք ընդունում են Docker նկարը և տեղադրում են այն հասարակ URL-ի վրա: Դժվարությունը կայանում է նրանում, որ ինքն aplicación-ին հավելվածին 33 ԳԲ տեսանյութերի ֆայլեր պետք էին հրապարակել: Կարող էինք դրանք կոշտ էակով տեղադրելու, բայց դա ստացվում էր խոշոր և անտեսանելի: Մի որոնման էական փոփոխությունը պահանջելու համար, նորից տեղադրում էր 33 ԳԲ տվյալների:
Երբ ես օգտագործեցի ClipBucket-ը, ես խնդիրը լուծեցի — գործիք, որը թույլ է տալիս օպերացիոն համակարգին վերադառնալ Google Cloud-ի ամպային պահեստի ուղիները որպես սովորական ֆայլային համակարգի ուղիներ: Ես տեսանյութերը տեղադրեցի Google Cloud-ում և օգտագործեցի gcsfuse-ը, որ նրանք հանդես գան ClipBucket-ում որպես տեղական ֆայլեր.
Տարբերությունը նրանում էր, որ ClipBucket-ը աշխատում էր իրական վիրտուալ մեքենայում, մինչդեռ MediaGoblin-ը գործում էր Docker կոնտեյներում։ Այստեղ ֆայլերի մոնտաժումը մեխանիկական պահոցից շատ ավելի բարդ էր։ Ես ծախսեցի բազմաթիվ ժամեր բոլոր խնդիրները լուծելու վրա և գրել եմ այդ մասին .

Ամենակային MediaGoblin-ի ագրեգացումը Google Cloud պահոցի հետ, որի մասին ես
Մի քանի շաբաթների ընթացքում բոլոր բաղկացուցիչները աշխատեցին։ Անգամ MediaGoblin-ի կոդում ապրումները փոխելով ես նենգորեն ստիպել էի, որ այն կարդա և գրի մեդիա ֆայլեր Google Cloud պահոցում։
Միակ խնդիրը այն էր, որ MediaGoblin-ը սկսեց աշխատել չափազանց դանդաղ։ Տեսանյութերի մանրապատկերների բեռնողի մուտք գործելը գլխավոր էջում պահանջում էր целых 20 վարկյան։ Եթե տեսանյութը դիտելու ժամանակ դուք առաջ էինք անցնում, MediaGoblin-ը կանգնում էր անվերջ 10 վարկյան, նախքան վերադառնալու վարվելաոճը։
Գլխավոր խնդիրը այն էր, որ տեսանյութերն ու պատկերները գնացին թափանցիկ, շրջիկ ճանապարհով։ Նրանք ստիպված էին անցնել Google Cloud պահովանից gcsfuse-ով MediaGoblin, Nginx-ից միայն հետո կգան օգտագործողի բրաուզեր։ Բարձրերան տեղը gcsfuse-ը էր, որը նպատակահարմար չի լինի արագ աշխատանքի համար։ Արդյունաբերողները տեղեկացնում են մեծ դանդաղ շարժումների մասին հենց նախագծի գլխավոր էջում։

Տեղեկատվություն gcsfuse-ի փաստաթղթերում
Ամենաիդալական բրաուզերը պետք է գտնի ֆայլերը անմիջապես Google Cloud-ից, շրջելով բոլոր միջถุนային շերտերը։ Ինչպե՞ս դա անել՝ MediaGoblin-ի կոդային բազայից դուրս գալով և չհավելելով Google Cloud-ի ինտեգրման բարդ տրամաբանություն:
nginx-ի sub_filter հնարքը
Օրինակ, ես գտա պարզ լուծում, սակայն մանրամասների հիասոսական։ Ես ավելացրել եմ default.conf-ի կոնֆիգուրացիայում Nginx :
sub_filter "\/mgoblin_media\/media_entries\/:" "https:\/\/storage.googleapis.com\/MY-GCS-BUCKET\/media_entries\/";
sub_filter_once off;Որպես իմ Nginx գործունեություն, նա աշխատում էր որպես պրոքսի MediaGoblin-ի և վերջնական օգտագործչի միջև։ վերոնշյալ հրահանգը արդեն ասում է Nginx-ին որոնել ու փոխարինել բոլոր HTML պատասխանները MediaGoblin-ի, նախքան դրանք փոխանցել վերջին օգտագործչին։ 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 Cloud պաշարներից։
Իմ որոշման ամենա հաճելի մասը այն է, որ դա պահանջում է MediaGoblin-ի կոդում որևէ փոփոխություն: Երկու տողանոց Nginx- ի հրամանը հեշտությամբ ինտեգրում է MediaGoblin-ը և Google Cloud-ը, թեև այդ ծառայությունները միմյանց մասին ոչինչ չեն գիտակցում:
Նշում: այս լուծումը պահանջում է, որ Google-ის ամպային պահպանման ֆայլերը հասանելի լինեն բոլորի համար ընթերցման համար: Անհանդուրժողական հասանելիության ռիսկը նվազեցնելու համար ես օգտագործում եմ պատահական և երկար անունով ուրբաթ (օրինակ,
mediagoblin-39dpduhfz1wstbprmyk5ak29) և ստուգում եմ, որ վերացման քաղաքականությունը չի թույլատրում չարտոնված օգտվողներին ցուցադրել վյուֆ-կենտրոնի բովանդակությունը:
Վերջնական արտադրանքը
Այս պահին ես ունեի լիարժեք, գործունակ լուծում: MediaGoblin-ը երջանիկ էր աշխատում իր սեփական կոնտեյներում Google ամպային հարթակում և այդպիսով, այն չէր պահանջում հաճախակի շտկումներ կամ թարմացումներ: Իմ ամբողջ գործընթացը ավտոմատացված և վերարտադրելի էր, ինչը թույլ էր տալիս պարզապես փոփոխություններ կամ հեռանալ նախորդ տարբերակներից:
Իմ ընտանիքը շատ գոհ էր, թե որքան հեշտ է տեսնել տեսանյութերը: Վերը նշված Nginx-ի հնարքով, տեսանյութերի աշխատանքը դարձավ այնպիսին, ինչպես YouTube-ում:
Դիտման էկրանն ունի հետևյալ տեսքը:

Ընտանիքի վիդեո կատալոգի բովանդակությունը «Լավագույն» պիտակով
Մանրապատկերին սեղմելը ցույց է տալիս այդ էկրանը:

Ազատ Ֆիլմի դիտումը մեդիա սերվերում
Շատ տարիներ աշխատանքի հետո, ինձ անհավատալի հաճելի էր տալ բարեկեցիկներին մեր տեսանյութերը տեսնելու հնարավորություն այնպիսի հարմարավետ ինտերֆեյսով, ինչպես YouTube-ում, ինչպես նախկինում էի ցանկանում:
Բոնուս: ծախսերի նվազեցում մինչև 1 դոլար ամսական
Դուք հազվադեպ եք դիտում տան տեսանյութեր, միայն յուրաքանչյուր մի քանի ամիս մեկ անգամ: Իմ ընտանիքը միասին բացառապես 20 ժամ տրաֆիկ է ստեղծել մեկ տարվա ընթացքում, սակայն սերվերը աշխատանքի մեջ էր 24/7: Ես ամսական վճարում էի $15 սերվերի համար, որը 99.7% ժամանակ աշխատանք չուներ:
2018-ի վերջին Google-ը ներկայացրեց արտադրանքը . Նորագույն առանձնահատկությունն էր Docker կոնտեյներով настолько արագ գործարկելը, որպեսզի կիրառումը կարողանար արձագանքել HTTP հարցումներին: Աւելին, սերվերը կարող էր մնալ սպասման մեջ՝ գործարկվել միայն այն ժամանակ, երբ ինչ-որ մեկը ցանկանում էր մուտք ունենալ: Դժվար ներս նետվող կիրառությունների համար, ինչպիսին է իմը, ծախսերը նվազեցին 15 դոլարից ամսական մինչև մի քանի տասնյակ ցենտ:
Ես այլևս չեմ հիշում, թե ինչու, սակայն Cloud Run-ը չէր աշխատում իմ MediaGoblin պատկերի հետ: Բայց Cloud Run-ի հայտնվելով ես հիշեցի, որ առաջարկում է նման ծառայություն անվճար, և իրենց գործիքները շատ ավելի հարմար են, քան Google-ի:
Անվճար նախագիծային սերվերով միայն մեկ ծախսն է տվյալների պահպանումը: Արժեքային միջին պահեստը Google-ում արժե 2.3 ցենտ/ԳԲ: Վիդեո արխիվը զբաղեցնում է 33 ԳԲ, հետևաբար ես ամսական վճարում եմ ընդամենը 77 ցենտ:

Այս լուծման արժեքը միանգամայն կազմում է $0,77 ամսական
Առաջարկներ նրանց, ովքեր պատրաստվում են փորձել
Եղեք, որ իմ գործընթացը շատ ժամանակ պահանջեց: Բայց ես հույս ունեմ, որ այս հոդվածը կօգնի ձեզ խնայել 80-90% ջանքեր ընտանեկան տեսանյութերի թվայնացման և հրապարակման մեջ: Ընդամենը բաժնում կարող եք գտնել որոնք բացատրում են ողջ գործընթացը, բայց here's ոմանք ընդհանուր խորհուրդներ:
- Թվայնացման և խմբագրման փուլում պահպանեք հնարավորինս շատ մետադատներ:
- Արժեքավոր տեղեկությունները հաճախ նշված են վիդեոալբոմների վրա:
- Գրանցեք, թե որ տեսանյութը մոնտաժված է ինչպես ալբոմից և ինչ հերթով:
- Գրանցեք նկարահանման ամսաթիվը, որը կարող է նշված լինել տեսանյութում:
- Գնացեք պրոֆեսիոնալ թվայնացման ծառայության հետ:
- Դուք պետք է չափազանց կանցնել նրանց դարձման որակի համեմատ:
- Բայց հեռու մնացեք EverPresent ընկերությունից (գրեք ինձ, եթե անհրաժեշտ են մանրամասներ):
- Եթե ինքներդ եք թվայնացնում, գնել HDD:
- Անսեղմված ստանդարտ տեսանյութը 100-200 ՄԲ է մեկ րոպեում:
- Ես ամեն ինչը պահում էի իմ (10 TB):
- Գրանցեք մետադատները տարածված ձևաչափով, որը կապված չէ որոշակի ծրագրի հետ:
- Տեսանյութերի նկարագրություններ, ժամանակի կոդեր, ամսաթվերը և այլն:
- Եթե մետադատները պահում եք որոշակի ծրագրի ձևաչափով (կամ, ինչը ավելի վատ է, ոչինչ չեք պահում), ապա չեք կարող վերականգնել աշխատանքը, եթե որոշեք օգտագործել այլ լուծում:
- Հեգնանքի ընթացքում շատ օգտակար մետադատներ եք տեսնում տեսանյութի մեջ: Դուք դրանք կկորցնեք, եթե չպահեք:
- Ինչ է պատահում տեսանյութում?
- Ով է այնտեղ նկարահանված?
- Երբ է դա նկարահանված?
- Նշեք ձեր սիրած տեսանյութերը:
- Աληա, մեծամասնությունը ընտանեկան տեսանյութերից բավական շատ ձանձրալի է:
- Ես “լավագույն” պիտակը ծրագրում եմ իմ սիրելի տեսանյութերի համար եւ դիտում եմ դրանք, երբ ուզում եմ հետաքրքիր տեսանյութեր դիտել:
- Ինչ հնարավորին վաղ կազմակերպեք ամբողջական լուծում, որպեսզի գործընթացը սկսվի անմիջապես սկզբից մինչև վերջ:
- Ես առաջինը փորձեցի թվայնացնել բոլոր ալբոմները, ապա խմբագրված բոլոր ալբոմները և այլն:
- Չեմ կարելի, որ ես սկսեցի մեկ ալբոմից և բոլոր աշխատանքը դրա շուրջ իրականացրեցի: Այդ ժամանակ կնկատեի, որ ինչ լուծումներ և որ փուլերում ազդում են վերջնական արդյունքի վրա:
- Ապակծառատեք վերամշակումը:
- Յուրաքանչյուր անգամ, երբ չեք խմբագրում կամ վերամշակում տեսանյութը, դուք վատացնում եք դրա որակը:
- Թվայնացրեք ս_raw կադրերը առավելագույն որակով, ապա վերամշակեք յուրաքանչյուր տեսանյութ միայն մեկ անգամ այն ձևաչափով, որը բրաուզերները բնականաբար ընթանում են:
- Օգտագործեք հնարավոր ամենանշանակավոր լուծումը՝ տեսանյութերի հրապարակման համար:
- Անցյալում MediaGoblin-ն ինձ թվում է չափազանց բարդ գործիք՝ բավականին պարզ անջատված վիդեոէջքերի կայքի ստեղծման համար:
- Եթե ես սկսեի էլի, կօգտագործեի մասնագիտացված կայքերի միացնող կայք, ինչպիսին է , կամ .
- Պրոդյուցացիայի մասը:
- Տեսանյութերի մոնտաժը հետաքրքիր միջոց է միավորելու մի քանի տեսանյութի լավագույն պահերը։
- Մոնտաժի մեջ ամենակարևորը երաժշտությունն է։ Օրինակ, Սլո Սնոու թեման The National-ից, սա իմ անձնական բացահայտումն է։
Ընտանիք: habr.com
