Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

У последње време, из хобија, снимам предавања једног познатог психолога. Уређујем снимак и објављујем га на својој веб страници. Пре месец дана сам добио идеју да организујем 24/7 пренос ових предавања на Јутјубу. Нека врста тематског „ТВ канала“ посвећеног личном развоју.

Знам да направим редовну емисију. Али како то учинити тако да буде емитовање видео датотека? Тако да ради 24/7, флексибилан је, што је могуће аутономнији, а да притом ни на који начин не зависи од мог кућног рачунара. Ово сам морао да сазнам.

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

Требало је неколико дана да се пронађе решење. Проучио сам многе форуме и разне приручнике без којих моје емитовање једноставно не би функционисало. И сада када је шала успела, осећам потребу да поделим своје решење. Овако се појавио овај чланак.

Укратко, коначно решење је било следеће: ВПС + ффмег + басх скрипта. Испод реза описујем предузете кораке и говорим о замкама које су откривене приликом организовања преноса.

Корак 1 – одакле ће доћи емитовање?

На самом почетку требало је одлучити одакле ће бити емитовање и одакле ће бити његов извор. Прва ствар која ми је пала на памет је била са кућног рачунара. Сакупите видео записе у листу за репродукцију и почните да их пуштате у било ком видео плејеру. Затим снимите слику на екрану и емитујте је на ИоуТубе-у. Али сам скоро одмах одбио ову опцију јер... Да бисте га имплементирали, потребно је да кућни рачунар буде стално укључен, што значи буку из хладњака чак и ноћу и повећану потрошњу електричне енергије (+100-150 кВх сваког месеца). И испоставило се да нећете моћи да користите кућни рачунар током емитовања. сваки покрет миша ће бити видљив у емитовању.

Онда сам почео да гледам у страну услуге у облаку. Тражио сам готову услугу где бих могао да поставим своје видео снимке или, на пример, да убацим линкове ка видео снимцима са Јутјуба и све би то било упаковано у једно нон-стоп емитовање. Али нисам нашао ништа прикладно. Можда нисам добро тражио. Једина ствар која одговара функционалности је рестреам.ио, услуга која помаже истовременом емитовању на неколико платформи. Изгледа да вам омогућавају да отпремате сопствене видео записе. Али овај сервис је направљен за сасвим друге сврхе и очекују да ће емитовање трајати само пар сати. Мислим да ако би преко овог сервиса било могуће организовати даноноћно емитовање, онда би то пуцало на десетине, па чак и стотине долара месечно. Али сам ипак желео да организујем пренос било бесплатно или уз минимална финансијска улагања.

Постало је јасно да је за емитовање неопходно или посебан уређај или чак посебан рачунар. Размишљао сам о нечему попут Распберри Пи. И шта? Он нема хладњак. Видео сам снимио на флеш диск, укључио етернет кабл и пустио да лежи негде на осами и емитовао га. Опција. Али нисам имао ни саму плочу ни искуство у раду са њом, па сам и ову опцију одбио.

Као резултат тога, наишао сам на одређену дискусију у којој су разговарали о стварању сопствени сервер емитује. То није било баш оно што сам тражио, али сам добио главну идеју - можете користити сервер! У тој дискусији је предложено да се користи комбинација ВПС + нгинк + ОБС. Постало је јасно да ова комбинација може и мени да пристане. Једина ствар која ме је збунила је то што никада нисам администрирао сервер и чинило ми се да је имати сопствени наменски сервер збуњујуће и скупо. Одлучио сам да сазнам колико ће коштати изнајмљивање сервера са минималном конфигурацијом и био сам пријатно изненађен.

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

Цене су назначене у белоруским рубљама и то су само мрвице. Да разумемо, 8 белоруских рубаља је око 3.5 долара или 240 руских рубаља. За месец дана коришћења пуноправног рачунара који је укључен 24/7 и има брз приступ Интернету. Из неког разлога, ово откриће ми је постало веома радосно и неколико дана сам ходао около страшно срећан, као дете које је открило свемирске ракете :)

Иначе, искористио сам понуду првог сајта који ми је дао Гугл за упит „ВПС изнајмљивање“. Можда има још јефтинијих решења, али ова цена ми је одговарала и нисам тражио даље.

Приликом креирања сервера можете изабрати оперативни систем под којим ће се покренути. Можете организовати емитовање на било ком од наведених система и направити избор на основу ваших преференција и финансијских могућности (за сервер са Виндовс-ом траже додатну накнаду). Изабрао сам ЦентОС. Једноставно зато што сам раније имао мало искуства са тим.

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

Корак 2 – подешавање сервера

Прва ствар коју требате након креирања сервера је да се повежете на њега преко ССХ-а. Прво сам користио ПуТТи, али сам онда почео да користим апликацију Сецуре Схелл, која ради у Гоогле Цхроме-у. Испоставило се да ми је згодније.

Онда сам променио име хоста, подесио временску синхронизацију на серверу, ажурирао систем, петљао по иптаблес-има... и урадио гомилу других ствари, али не зато што је било неопходно. Само сам био заинтересован за подешавање сервера и то ми је успело. Волим кад успе :)

Ево корака које треба да предузмете:

  1. Повежите ЕПЕЛ спремиште.
  2. Подесите ФТП сервер (ја сам изабрао всфтп).
  3. Инсталирајте ффмпег.

Нећу детаљно давати команде, ова упутства су прилично концептуална да би пренела општи план акције. Ако имате било каквих потешкоћа са било којим од корака, они се могу брзо решити коришћењем упита претраживача попут „ЦентОС цоннецт ЕПЕЛ“ или „ЦентОС инсталл ФТП сервер“. А на првим везама можете пронаћи детаљна упутства корак по корак.

Дакле, као што сам раније написао, била ми је потребна комбинација ВПС + нгинк + ОБС. ВПС – спреман. Али почела су се постављати питања о другим тачкама. ОБС је програм за емитовање, Опен Броадцастер Софтваре. И ради само са потоцима, тј. на пример, узима слику са веб камере и емитује је. Или снимање екрана. Или је емитовање које је већ у току преусмерено на другу локацију. Али ја немам стрим, имам само скуп видео датотека које треба претворити у стрим.

Почео сам да копам у овом правцу и наишао сам на ффмпег. ФФмпег је скуп бесплатних библиотека отвореног кода које вам омогућавају да снимате, претварате и стримујете дигитални аудио и видео у различитим форматима.

И био сам веома изненађен колико ффмпег може да уради. Ако желите, издвојиће звук из видеа. Ако желите, изрезаће фрагмент видео записа без поновног кодирања. Ако желите, претвориће се из једног формата у други. И много, много више. У мери у којој можете да наведете датотеку у њој, она ће је претворити у стреам и пренети је на сам ИоуТубе. То је то, ланац је састављен. Остаје само да се финализују нијансе.

Корак 3 – подешавање емитовања

Правимо емитовање на Јутјубу. У овој фази нам је потребан само линк и кључ за емитовање. На снимку екрана испод они су означени црвеном бојом.

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

Даље отпремите видео датотеке на сервер, које планирамо да емитујемо. У ствари, ФТП је потребан само за ову фазу. Ако имате још један погодан начин за отпремање датотека на сервер, онда не морате да подешавате ФТП сервер.

Преносимо стрим на ИоуТубе. Да бисте започели емитовање, потребно је да покренете ффмпег са неколико атрибута. Овако изгледа најкраћа команда коју сам добио:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%

Декодирање атрибута-re – означава да се датотека мора конвертовати у ток.

-i – означава коју датотеку треба репродуковати. Важно је да се команда покрене из истог директоријума где се налази и сам видео фајл. У супротном, требало би да наведете апсолутну везу до датотеке, нпр /usr/media/lecture1.mp4.

-f – поставља формат излазне датотеке. У мом случају, испоставило се да ффмпег конвертује мој фајл из мп4 у флв у ходу.

И на крају наводимо податке које смо преузели са Јутјуба на страници подешавања емитовања, тј. адресу на коју треба да пренесете податке и кључ за емитовање, тако да се емитовање приказује посебно на вашем каналу.

Ако сте све урадили исправно, након покретања ове команде, ИоуТубе ће видети пренесени ток. Да бисте започели емитовање, потребно је само да кликнете на дугме „Започни емитовање“ на самом ИоуТубе-у.

Корак 4 – додајте аутономију

Честитам! Сада знате како започети емитовање из видео датотеке. Али ово није довољно за XNUMX/XNUMX емитовање. Важно је да након што се први видео заврши, следећи одмах почне, а када се сви видео снимци прикажу, репродукција почиње поново.

Смислио сам следећу опцију: креирам .сх фајл у који сам написао команду за сваки видео фајл и на самом крају назначио команду за поновно покретање исте скрипте. Резултат је оваква рекурзија:

Команда 1... (запуск трансляции файла lecture1.mp4)
Команда 2... (запуск трансляции файла lecture2.mp4)
Команда 3... (запуск трансляции файла lecture3.mp4)
bash start.sh

И, да, успело је. Задовољан собом, покренуо сам пробно емитовање и отишао у кревет.

Ујутро ме је чекало непријатно изненађење. Испоставило се да је емитовање трајало само пар минута и да се готово одмах завршило када сам искључио рачунар. Истрага је показала да се овако покренуте команде извршавају док је корисник пријављен на сервер. Чим сам прекинуо везу, команде које сам изводио су прекинуте. Да се ​​то не догоди довољно је пред тимом bash додајте команду nohup. Ово ће омогућити покретање процеса без обзира на ваше присуство.

Коначна минимална верзија скрипте изгледа овако:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%
ffmpeg -re -i lecture2.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%
ffmpeg -re -i lecture3.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%
nohup bash start.sh $

Где је старт.сх датотека у којој је написана ова скрипта. И ова датотека мора да се налази у истом директоријуму као и видео датотеке.

Додавање знака долара на крају омогућава да се процес одвија у позадини тако да можете да наставите да користите конзолу без прекидања емитовања.

Бонуси су укључивали следеће доброте:

  • Можете ручно да промените репродукцију датотеке. Да бисте то урадили, морате „убити“ тренутно покренути ффмпег процес. Након тога, аутоматски ће почети репродукција следеће датотеке са листе.
  • Нови видео снимци се могу додати у емисију без заустављања емитовања. Само отпремите видео на сервер, додајте команду за покретање ове датотеке у скрипти и сачувајте је. То је све. У следећем кругу репродукције, нова датотека ће се емитовати заједно са старим датотекама.

Корак 5 - прилагодите ффмпег

У принципу, ту смо могли стати. Али желео сам да емисију учиним мало пријатељскијом за гледаоце.

Рецимо да је неко отишао на пренос, почео да гледа, допао му се и хтео је да погледа ово предавање од почетка, али пренос не дозвољава премотавање уназад. Да би гледао предавање од почетка, особа ће морати да оде на моју веб страницу и добије снимак предавања од интереса. Како можете рећи које предавање га занима? На сајту има већ 16 предавања и сваке недеље их је све више. Мислим да ни ја, који сам снимао и монтирао сва ова предавања, нећу моћи из случајног фрагмента да одредим о којем је предавању реч. Стога је неопходно да свако предавање буде некако назначено.

Опција додавања титлова изворним видео датотекама у програму за уређивање није ми одговарала. Било је неопходно осигурати да се користе оригинални фајлови. Тако да подршка емитовању захтева од мене што мање покрета тела.

Испоставило се да би ми ффмпег такође могао помоћи у овоме. Има посебан атрибут -vf, што омогућава постављање текста преко видео записа. Да бисте додали текст видео снимку, потребно је да додате следећи фрагмент у команду:

-vf drawtext="fontfile=OpenSans.ttf:text='Лекция 13: Психология эмоций. Как создавать радость?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

Објашњење параметараfontfile= – линк до датотеке фонта. Без тога, наслов неће бити додат видео снимку. Најлакши начин је да ставите датотеку фонта у исти фолдер као и видео. Или ћете морати да наведете пуну путању до датотеке.

text= – заправо, сам текст који треба да се постави на врх видеа.

fontsize= – величина фонта у пикселима.

fontcolor= – боја фонта.

borderw= – дебљина обриса око текста у пикселима (имам бели текст са црним обрисом дебљине 1 пиксел).

bordercolor= – боја обриса.

x= и y= – текстуалне координате. Дот 0;0 налази се у горњем левом углу. Моје координате су одабране на начин да се текст постави у доњи леви угао са видео резолуцијом од 1280к720 пиксела.

изгледа овако:

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

Корак 6 – одредите квалитет емитовања

То је то, емитовање је спремно. ФФмпег емитује, фајлови се репродукују, моје присуство није потребно за емитовање. Чак је свако предавање потписано. Изгледа да је то то.

Али појавила се још једна нијанса - изабрао сам минималну конфигурацију сервера и није покренуо емитовање. Конфигурација сервера: 1 језгро (као 2.2 ГХз), 1 гигабајт РАМ-а, 25 ГБ ССД. Било је довољно РАМ-а, али процесор је био скоро потпуно оптерећен на 100% (а понекад и 102-103% :) То је довело до замрзавања емитовања сваких неколико секунди.Није лепо.

Можете једноставно узети скупљу конфигурацију са два језгра, на срећу, са цлоуд технологијама, промена конфигурације сервера се дешава притиском на неколико тастера. Али желео сам да се уклопим у минимални капацитет конфигурације. Почео сам да проучавам ффмпег документацију и да, ту су и подешавања која вам омогућавају да регулишете оптерећење система.

Висок квалитет слике може се постићи на два начина: или са великим оптерећењем процесора или великим одлазним саобраћајем. Испоставило се да што више оптерећења процесор може да преузме, то ће бити потребно мање пропусног опсега канала. Или не можете превише оптеретити процесор, али ће вам тада бити потребан широк канал са великим простором за саобраћај. Ако постоје ограничења и за процесор и за величину одлазног канала/саобраћаја, онда ћете морати да смањите квалитет слике како би емитовање ишло глатко.

Мој сервер има приступ каналу ширине 10 Мбит/с. Ова ширина је таман. Али постоји ограничење саобраћаја - 1 ТБ месечно. Дакле, да бих испунио ограничења саобраћаја, мој одлазни ток не би требало да прелази ~300 КБ у секунди, тј. Брзина одлазног тока не би требало да буде већа од 2,5 Мбит/с. Јутјуб, иначе, препоручује емитовање са овом брзином преноса.

Да би регулисао оптерећење система, ффмпег користи различите приступе. Добро написано о овоме овде. На крају сам користио два атрибута: -crf и -preset.

Фактор константне стопе (ЦРФ) – ово је коефицијент захваљујући којем можете подесити квалитет слике. ЦРФ може имати вредности од 0 до 51, где је 0 квалитет изворне датотеке, 51 је најгори могући квалитет. Препоручује се коришћење вредности од 17 до 28, подразумевано је 23. Са коефицијентом 17, видео ће бити визуелно идентичан оригиналу, али технички неће бити исти. У документацији се такође наводи да се величина финалног видеа, у зависности од наведеног ЦРФ-а, експоненцијално мења, тј. повећање коефицијента за 6 поена ће удвостручити битрате одлазног видеа.

Ако користите ЦРФ, можете одабрати „тежину“ одлазеће слике, а затим помоћу унапред подешена (-пресет) можете одредити колико ће процесор бити оптерећен. Овај атрибут има следеће параметре:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - задана вриједност
  • slow
  • slower
  • veryslow

Што је параметар „бржи“, то ће бити веће оптерећење процесора.

Прво сам одабрао унапред подешену вредност која је у основи била претешка за мој процесор, а затим сам финије одабрао оптерећење користећи ЦРФ. У мом случају, унапред подешено је радило fast, а за црф сам се определио за вредност 24.

Закључак

То је све. Последња команда за почетак емитовања била је следећа:

ffmpeg -re -i lecture1.mp4 -vf drawtext="fontfile=OpenSans.ttf:text='Лекция 1: Жонглирование картинами мира':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670" -c:v libx264 -preset fast -crf 24 -g 3 -f flv rtmp://a.rtmp.youtube.com/live2/%КЛЮЧ_ТРАНСЛЯЦИИ%

Овде су остале само две неописане тачке:

1) -c:v libx264 – навођење одређеног кодека за рад са изворном датотеком.
2) -g 3 – експлицитно навођење броја кључних кадрова. У овом случају, прецизирано је да сваки трећи оквир треба да буде кључни оквир. Стандардна вредност је 5 или 8, али ИоуТубе псује и тражи најмање 3.

Видите какав је квалитет испао пренос овде.

Оптерећење сервера је било следеће:

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

Емитујте своје видео снимке на ИоуТубе-у XNUMX/XNUMX

На основу података праћења, јасно је да се оптерећење процесора креће од 70% до 95% и током недеље емитовање никада није достигло 100%. То значи да је са овим подешавањима процесор довољан.

Учитавањем диска могу рећи да скоро да није учитан и да би обичан ХДД требао бити довољан за емитовање.

Али количина одлазног саобраћаја ме брине. Испоставило се да се мој одлазни ток креће од 450 до 650 КБ у секунди. За месец дана ово ће бити око 1,8 терабајта. Можда ћете морати да купите додатни саобраћај или да пређете на конфигурацију са два језгра јер... Не бих желео да смањим квалитет слике.

***

Као резултат тога, рећи ћу да постављање таквог емитовања од нуле траје око 1-2 сата. Штавише, отпремање видеа на сервер ће трајати већину времена.

Покретање таквог емитовања није се оправдало као маркетиншко средство. Можда, ако повећамо прегледе тако да ИоуТубе алгоритми покупе ову емисију и почну да је активно приказују у препорукама, онда би нешто испало. У мом случају, за 16 дана непрекидног емитовања гледано је 58 пута.

То је ок. Емисија се складно уклапа на главну страницу мог сајта. То ми је дало прилику да брзо формирам своје мишљење о предавачу и самим предавањима.

И један тренутак. Важно је да емитовање не крши ничија ауторска права, иначе ће бити блокирано. Смирен сам у вези свог емитовања јер... Посебно сам одабрао музичке инсерте са бесплатним коришћењем, а ауторка садржаја седи за оближњим рачунаром и уопште се не противи да ја користим њен садржај :)

Али ако негде током емитовања имате радио који се пушта у позадини, или сте користили своју омиљену нумеру током монтаже, или сте снимили видео секвенцу из популарног музичког видеа, ТВ серије или филма, онда је ваше емитовање у опасности. Такође је важно да емитовање носи барем минимално семантичко оптерећење, у супротном може бити блокирано као нежељена пошта.

***

То је све што имам. Надам се да ће овај приручник некоме добро послужити. Па, ако имате шта да додате, напишете, радо ћу прочитати додатке и појашњења чланка.

Извор: ввв.хабр.цом

Додај коментар