45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк

Биринчи бөлүктө эски үй-бүлөлүк видеолорду санариптештирүү жана аларды өзүнчө көрүнүштөргө бөлүү үчүн татаал тапшырма сүрөттөлөт. Бардык клиптерди иштеп чыккандан кийин, мен аларды онлайн режиминде көрүүнү YouTubeдагыдай ыңгайлуу уюштургум келди. Булар жеке үй-бүлөлүк эскерүүлөр болгондуктан, аларды YouTube сайтына жайгаштыруу мүмкүн эмес. Бизге ыңгайлуу дагы, коопсуз дагы жеке хостинг керек.

3-кадам. Жарыялоо

ClipBucket, ачык булактуу YouTube клону, аны өз сервериңизге орното аласыз

Биринчиден мен аракет кылдым ClipBucket, ал өзүн сервериңизге орното турган ачык булактуу YouTube клону деп атайт.

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк

Таң калыштуусу, ClipBucketтин орнотуу көрсөтмөлөрү жок. Рахмат тышкы башкаруу я орнотуу процессин автоматташтырды жардамы менен Ansible, сервер конфигурациясын башкаруу куралы.

Кыйынчылыктын бир бөлүгү ClipBucket орнотуу скрипттери толугу менен бузулган. Ошол кезде И googleде иштеген жана келишимдин шарттарына ылайык, YouTube'дун ачык булак клонуна салым кошууга укугу жок болчу, бирок И мүчүлүштүк тууралуу отчет жарыяладыандан керектүү оңдоолорду киргизүү оңой эле. Айлар өттү, бирок алар дагы эле көйгөй эмне экенин түшүнүшкөн жок. Тескерисинче, бардыгын кошуп коюшту көп ар бир чыгарылышта мүчүлүштүктөр.

ClipBucket консалтинг моделинде иштеген - алар кодун бекер чыгарышкан жана жайылтууга жардам үчүн акы алышкан. Акырындык менен мага акы төлөнүүчү колдоодон акча тапкан компания кардарлардын продуктуну өздөрү орнотушуна анча кызыкдар эмес экенин түшүндүм.

MediaGoblin, заманбап альтернатива

ClipBucket менен бир нече ай нааразы болгондон кийин, мен жеткиликтүү варианттарды карап чыгып, таптым медиа гоблин.

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
медиа гоблин өз алдынча медиа бөлүшүү платформа болуп саналат

MediaGoblin көптөгөн жакшылыктарга ээ. Жагымсыз PHPдеги ClipBucketтен айырмаланып, MediaGoblin Python тилинде жазылган, бул тилде менде код жазууда көп тажрыйбам бар. же буйрук сабынын интерфейси, бул видео жүктөөлөрдү автоматташтырууну жеңилдетет. Баарынан маанилүүсү, MediaGoblin келет Докер сүрөтү, бул орнотууда ар кандай көйгөйлөрдү жок кылат.

ютуб каалаган жерде иштей турган тиркеме үчүн өз алдынча чөйрөнү түзүүчү технология. Мен Докерди колдонуп жатам менин көптөгөн долбоорлорум.

MediaGoblinди редокеризациялоонун таң калыштуу кыйынчылыгы

Мен MediaGoblin докер сүрөтүн жайгаштыруу анча деле маанилүү эмес деп ойлогом. Ооба, такыр эле андай болгон жок.

Даяр сүрөт эки керектүү функцияга ээ эмес:

  • тастыктоо
    • MediaGoblin демейки боюнча коомдук медиа порталды түзөт жана мага сырттан келгендердин кирүү мүмкүнчүлүгүн чектөөнүн жолу керек болчу.
  • Transcoding
    • Видеону жүктөп берген сайын, MediaGoblin аны оптималдуу агым үчүн кайра коддогонго аракет кылат. Эгер видео алгач агымга даяр болсо, транскоддоо сапатты начарлатат.
    • MediaGoblin камсыз кылат конфигурация параметрлери аркылуу транскодду өчүрүү, бирок аны учурдагы Docker сүрөтүндө жасоо мүмкүн эмес.

Мейли, көйгөй жок. Docker сүрөтү менен келет ачык булак, Ошентип сен жасай аласын аны өзүңүз калыбына келтириңиз.

Тилекке каршы, Docker сүрөтү мындан ары агымдан курулбайт MediaGoblin репозиторий. Мен аны акыркы ийгиликтүү куруунун версиясы менен синхрондоштурууга аракет кылдым, бирок ал да иштеген жок. Мен дал ушундай кодду колдонсом да, MediaGoblin тышкы көз карандылыгы өзгөрүп, түзүлүштү бузуп салды. Ондогон сааттан кийин мен 10-15 мүнөттүк MediaGoblin куруу процессин кайра-кайра иштетип, акыры иштедим.

Ошол эле окуя бир нече айдан кийин болгон. Жалпысынан, акыркы эки жылдын ичинде, MediaGoblin көз карандылык чынжыры менин түзүлүшүмдү бир нече жолу сындырды жана акыркы жолу бул макаланы жазып жатканда болду. Мен пост жазып бүттүм MediaGoblin өз айры c катуу коддолгон көз карандылыктар жана ачык көрсөтүлгөн китепкана версиялары. Башкача айтканда, MediaGoblin кандайдыр бир версия менен иштейт деген шектүү дооматтын ордуна сельдерей >= 3.0, мен версияга белгилүү бир көз карандылыкты орноттум сельдерей 4.2.1, анткени мен MediaGoblinди ушул версия менен сынап көрдүм. Бул продукт керек окшойт кайра жаралуу механизмибирок мен жасай элекмин.

Эмнеси болсо да, көп сааттык күрөштөн кийин, мен акыры MediaGoblinди Докер сүрөтүндө куруп, конфигурациялай алдым. Бул мурунтан эле оңой эле керексиз коддоону өткөрүп жибериңиз и аныктыгын текшерүү үчүн Nginx орнотуу.

4-кадам. Хостинг

MediaGoblin менин жергиликтүү машинамда Dockerди иштетип жаткандыктан, кийинки кадам үй-бүлө видеону көрө алышы үчүн булут серверине жайгаштыруу болду.

MediaGoblin жана видео сактоо көйгөйү

Docker сүрөтүн алып, аны жалпыга ачык URL дарегине жайгаштырган көптөгөн платформалар бар. Колдонмонун өзүнөн тышкары 33 ГБ видео файлдарды жайгаштыруу керек болчу. Аларды докер сүрөтүнө катуу коддоо мүмкүн болчу, бирок ал түйшүктүү жана көрксүз болуп чыкты. Конфигурациянын бир линиясын өзгөртүү 33 ГБ маалыматты кайра жайгаштырууну талап кылат.

Мен ClipBucket колдонгондо, мен маселени чечтим gcsfuse - операциялык тутумга Google Cloud булут сактагычына каталогдорду файл тутумуна кадимки жол катары жүктөөгө мүмкүндүк берүүчү утилита. Мен видео файлдарды Google Булутуна жайгаштырдым жана аларды ClipBucket ичинде жергиликтүү файлдар катары көрсөтүү үчүн gcsfuse колдондум.

Айырмасы, ClipBucket чыныгы виртуалдык машинада, ал эми MediaGoblin Docker контейнеринде иштеген. Бул жерде, булут сактагычтан файлдарды орнотуу бир топ кыйын болуп чыкты. Мен бардык көйгөйлөрдү чечүү үчүн ондогон сааттарды жумшап, ал жөнүндө жаздым бүт блог посту.

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
MediaGoblinдин Google Cloud сактагычы менен алгачкы интеграциясы, аны I 2018-жылы айтылган

Бардык компоненттерди тууралоодон бир нече жума өткөндөн кийин, баары иштеди. MediaGoblin кодуна эч кандай өзгөртүүлөрдү киргизбестен, мен аны Google булут сактагычына медиа файлдарын окуу жана жазуу үчүн алдап жатам.

Бир гана көйгөй MediaGoblin уятсыз жай иштей баштады. Видеонун эскиздерин башкы бетке жүктөө үчүн 20 секунд талап кылынды. Эгер сиз видеону көрүп жатканда алдыга секирип өтсөңүз, MediaGoblin ойнотууну улантуудан мурун чексиз 10 секунд тынды.

Негизги көйгөй видеолор жана сүрөттөр колдонуучуга узун, тегерек жол менен өтүп кеткен. Алар Google булут сактагычынан gcsfuse аркылуу MediaGoblin, Nginxке өтүшү керек болчу - андан кийин гана алар колдонуучунун браузерине киришти. Негизги кыйынчылык gcsfuse болду, ал тез иштөө үчүн оптималдаштырылбаган. Иштеп чыгуучулар долбоордун башкы бетинде коммуналдык чоң кечигүү жөнүндө эскертет:

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
эскертүү начар аткаруу жөнүндө gcsfuse документтеринде

Идеалында, браузер бардык ортоңку катмарларды айланып өтүп, файлдарды түз Google Булуттан тартып алышы керек. MediaGoblin код базасына терең кирбестен жана Google Cloud интеграциясынын татаал логикасын кошпостон муну кантип кылсам болот?

nginxтеги sub_filter трюк

Бактыга жараша мен жеңил чечим таптым немного чиркин. Мен 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>

Азыр баары каалагандай иштеп жатат:

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
Nginx MediaGoblin жоопторун кайра жазат, ошондуктан кардарлар медиа файлдарын түздөн-түз Google булут сактагычынан сурай алышат

Менин чечимимдин эң жакшы жагы - бул MediaGoblin кодуна эч кандай өзгөртүүлөрдү талап кылбайт. Эки саптык Nginx директивасы MediaGoblin менен Google Cloud'ту кынтыксыз бириктирет, бирок эки кызмат бири-бири жөнүндө эч нерсе билбейт.

пикир: Бул чечим Google Cloud Storage'деги файлдардын бардыгы окуй турган болушун талап кылат. Уруксатсыз кирүү коркунучун азайтуу үчүн, мен кокусунан узун чака атын колдоном (мисалы, mediagoblin-39dpduhfz1wstbprmyk5ak29) жана чаканын кирүүнү башкаруу саясаты уруксатсыз колдонуучуларга каталогдун мазмунун көрсөтүүгө жол бербестигин текшериңиз.

Акыркы продукт

Бул учурда менде толук, жумушчу чечим бар болчу. MediaGoblin Google Булут Платформасында өз контейнеринде бактылуу иштеген, андыктан аны тез-тез жаңыртуу же жаңыртуу зарыл болгон эмес. Менин процессимдеги бардыгы автоматташтырылган жана кайталанчу, бул жөнөкөй түзөтүүлөргө же мурунку версияларга артка кайтарууга мүмкүндүк берди.

Менин үй-бүлөмө видеолорду көрүү канчалык оңой экени абдан жакты. Жогоруда сүрөттөлгөн Nginx хакынын жардамы менен видео менен иштөө YouTubeдагыдай тез болуп калды.

Көрүү экраны мындай көрүнөт:

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
"Мыкты" теги боюнча үй-бүлөлүк видеолор каталогунун мазмуну

Эскизди бассаңыз, төмөнкү экран пайда болот:

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
Медиа серверде жеке клипти көрүү

Көп жылдар бою иштегенден кийин, мен туугандарыма видеолорубузду YouTube'дагыдай ыңгайлуу интерфейсте көрүү мүмкүнчүлүгүн бергениме абдан кубанычтамын.

Бонус: Айына 1 доллардан азыраак чыгымды азайтуу

Үй видеолорун сейрек, бир нече айда гана көрөсүз. Менин үй-бүлөм жылына 20 саатка жакын трафикти түзүштү, бирок сервер 15/99,7 иштеп турду. Убакыттын XNUMX% төмөндөгөн сервер үчүн ай сайын XNUMX доллар төлөп турдум.

2018-жылдын аягында Google бир продукт чыгарды Cloud Run. Өлтүрүүчү өзгөчөлүк Docker контейнерлерин ушунчалык тез иштеткендиктен, колдонмо HTTP сурамдарына жооп бере алган. Башкача айтканда, сервер күтүү режиминде калышы мүмкүн - жана кимдир бирөө ага баргысы келгенде гана иштей баштайт. Меники сыяктуу сейрек иштетилген колдонмолор үчүн чыгымдар айына 15 доллардан жылына бир нече центке чейин өстү.

Эсимде жок себептерден улам, Cloud Run менин MediaGoblin сүрөтүм менен иштеген жок. Бирок Cloud Run пайда болгондо, мен муну эстедим Жиберүү окшош кызматты бекер сунуштайт жана алардын куралдары Googleдикине караганда алда канча ыңгайлуу.

Акысыз тиркеме сервери менен, бир гана чыгаша маалымат сактоо болуп саналат. Google'дун стандарттык аймактык сактагычы 2,3 цент/ГБ турат. Видео архив 33 ГБ, ошондуктан мен айына 77 цент гана төлөйм.

45 видеокассетаны санариптештирүү боюнча менин сегиз жылдык аракетим. 2 бөлүк
Бул чечим айына $0,77 гана турат

Аракет кылам дегендерге кеңештер

Албетте, процесс мага көп убакытты талап кылды. Бирок бул макала үйдөгү видеону санариптештирүү жана жарыялоо аракеттеринин 80-90% үнөмдөөгө жардам берет деп үмүттөнөм. Өзүнчө бөлүмдө таба аласыз деталдуу кадам кадам жол бардык процесс, бирок бул жерде кээ бир жалпы кеңештер бар:

  • Санариптештирүү жана түзөтүү баскычында мүмкүн болушунча көбүрөөк метадайындарды сактаңыз.
    • Баалуу маалымат көбүнчө видео кассеталык этикеткаларга жазылат.
    • Кайсы клип кайсы кассетадан жана кандай тартипте алынганын жазыңыз.
    • Видеодо көрсөтүлүшү мүмкүн болгон съемка күнүн жазыңыз.
  • Кесипкөй санариптештирүү кызматтары үчүн төлөөнү карап көрүңүз.
    • Сен кыласың өтө санариптештирүү сапаты боюнча аларга дал келүү кыйын жана кымбат.
    • Бирок EverPresent деген компаниядан алыс болуңуз (эгер сизге көбүрөөк маалымат керек болсо мага кабарлаңыз).
  • Эгер сиз санариптештирүүнү өзүңүз жасасаңыз, HDD сатып алыңыз.
    • Кысылбаган стандарттык аныктама видео мүнөтүнө 100-200 МБ алат.
    • Мен баарын өзүмдө сактадым Бпантихо DS412 + (10 ТБ).
  • Белгилүү бир тиркеме менен байланышпаган кээ бир жалпы форматта метаберилиштерди жазыңыз.
    • Клиптин сүрөттөмөлөрү, убакыт коддору, даталар ж.б.
    • Эгер сиз метадайындарды колдонмонун спецификалык форматында сактасаңыз (же андан да жаманы, такыр сактабаңыз), башка чечимди колдонууну чечсеңиз, ишти кайра жасай албайсыз.
    • Түзөтүү учурунда видеодо көптөгөн пайдалуу метадайындарды көрөсүз. Аларды сактап калбасаңыз, жоготосуз.
      • Видеодо эмне болуп жатат?
      • Ал жерде ким катталган?
      • Качан жазылган?
  • Сүйүктүү видеолоруңузду белгилеңиз.
    • Чынын айтсам, үйдөгү видео мазмундун көбү кызыксыз.
    • Мен сүйүктүү клиптериме "эң жакшы" деген белгини коюп, күлкүлүү видеолорду көргүм келгенде ачам.
  • Процесс башынан аягына чейин дароо өтүшү үчүн мүмкүн болушунча эртерээк комплекстүү чечимди уюштуруңуз.
    • Мен адегенде бардык кассеталарды санариптештирүүгө аракет кылдым, андан кийин бардык кассеталарды оңдоого ж.б.у.с.
    • Өкүнүчтүүсү, мен бир кассетадан баштап, бардык ишти аны менен жасабаганым өкүнүчтүү. Анан кандай чечимдер жана кайсы этаптар акыркы жыйынтыкка таасир этээрин түшүнмөкмүн.
  • Кайра коддоону азайтыңыз.
    • Клипти түзөткөн сайын же кайра коддогон сайын анын сапатын начарлатасыз.
    • Чийки кадрларды максималдуу сапатта санариптештириңиз, андан кийин ар бир клипти браузерлер ойной турган форматка так бир жолу транскоддоңуз.
  • Видео клиптерди жайгаштыруу үчүн эң жөнөкөй чечимди колдонуңуз.
    • Артка карап, MediaGoblin видео файлдардын статикалык топтому менен веб-баракчаларды түзүүнүн өтө жөнөкөй сценарийи үчүн өтө татаал курал сыяктуу көрүнөт.
    • Эгерде мен кайра баштасам, мен сыяктуу статикалык сайт генераторун колдонмокмун Уго, спаме же Gridsome.
  • Монтаж жаса.
    • Видеону түзөтүү - бул бир нече видеолордун эң сонун көз ирмемдерин айкалыштыруунун кызыктуу жолу.
    • Монтажда негизги нерсе музыка. Мисалы, тема укмуштуудай Жай кар The National, бул менин жеке ачылышым.

Source: www.habr.com