Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

Во последно време, како хоби, снимам предавања на психолог што го познавам. Ја уредувам снимката и ја објавувам на мојата веб-страница. Пред еден месец добив идеја да организирам 24/7 пренос на овие предавања на YouTube. Еден вид тематски „ТВ канал“ посветен на личен раст.

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

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

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

Накратко, конечното решение беше следново: VPS + ffmeg + баш скрипта. Под резот, ги опишувам преземените чекори и зборувам за замките што беа откриени при организирањето на преносот.

Чекор 1 - од каде ќе дојде емитувањето?

На самиот почеток требаше да се одлучи од каде ќе биде емитувањето и каде ќе биде неговиот извор. Првото нешто што ми падна на ум беше од вашиот домашен компјутер. Соберете видеа во плејлиста и почнете да ги репродуцирате во кој било видео плеер. Потоа снимете ја сликата на екранот и емитувајте ја на YouTube. Но, речиси веднаш ја одбив оваа опција бидејќи ... За да го имплементирате, треба постојано да го држите вашиот домашен компјутер вклучен, што значи бучава од ладилниците дури и ноќе и зголемена потрошувачка на електрична енергија (+100-150 kWh секој месец). И излегува дека нема да можете да го користите вашиот домашен компјутер за време на емитувањето. секое движење на глувчето ќе биде видливо во емитувањето.

Потоа почнав да гледам на страна облак услуги. Барав готов сервис каде што можам да ги прикачувам моите видеа или, на пример, да вметнувам линкови до видеа од YouTube и сето тоа ќе биде спакувано во едно нон-стоп емитување. Но, не најдов ништо соодветно. Можеби не барав добро. Единственото нешто што одговара на функционалноста е restream.io, услуга која помага истовремено да се емитува на неколку платформи. Се чини дека тие ви дозволуваат да прикачувате свои видеа. Но, овој сервис е создаден за сосема други цели и очекуваат дека емитувањето ќе трае само неколку часа. Мислам дека ако преку овој сервис би можело да се организира деноноќно емитување, тогаш тој би пукал во десетици, па дури и стотици долари месечно. Но, сепак сакав да го организирам емитувањето или бесплатно или со минимална финансиска инвестиција.

Стана јасно дека за емитувањето било потребно или посебен уред или дури и посебен компјутер. Размислував за нешто како Raspberri Pi. И што? Тој нема ладилник. Го снимив видеото на флеш диск, го приклучив кабелот за етернет и го оставив да лежи некаде на затскриено место и го емитував. Опција. Но, јас немав ниту самата табла, ниту искуство со работа со неа, па затоа ја одбив и оваа опција.

Како резултат на тоа, наидов на одредена дискусија каде што разговараа за создавањето сопствен сервер емитувања. Не беше токму она што го барав, но ја добив главната идеја - можете да користите сервер! Во таа дискусија беше предложено да се користи комбинација од VPS + nginx + OBS. Стана јасно дека оваа комбинација може да ми одговара и мене. Единственото нешто што ме збуни беше тоа што никогаш не сум администрирал сервер и ми се чинеше дека да имам свој посветен сервер е збунувачки и скап. Решив да дознаам колку ќе чини да изнајмувам сервер со минимална конфигурација и бев пријатно изненаден.

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

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

Инаку, ја искористив понудата на првиот сајт што ми го даде Google за барањето „VPS rental“. Можеби има уште повеќе буџетски решенија, но оваа цена ми одговараше и не барав понатаму.

Кога креирате сервер, можете да го изберете оперативниот систем под кој ќе работи. Можете да организирате пренос на кој било од наведените системи и да направите избор врз основа на вашите преференции и финансиски можности (за сервер со Windows бараат дополнителен надомест). Го избрав CentOS. Едноставно затоа што претходно имав мало искуство со тоа.

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

Чекор 2 - поставување на серверот

Првото нешто што ви треба по креирањето на серверот е да се поврзете со него преку SSH. Отпрвин користев PuTTy, но потоа почнав да ја користам апликацијата Secure Shell, која работи во Google Chrome. Испадна дека ми е попогодно.

Потоа го сменив името на хостот, поставив синхронизација на времето на серверот, го ажурирав системот, чепкав со iptables... и направив еден куп други работи, но не затоа што беше потребно. Баш ме интересираше да го поставам серверот и ми успеа. Сакам кога ми успева :)

Еве ги чекорите што треба да ги преземете:

  1. Поврзете го складиштето EPEL.
  2. Поставете FTP сервер (избрав vsftp).
  3. Инсталирајте ffmpeg.

Нема да ги дадам наредбите детално; овие упатства се прилично концептуални за да го пренесат генералниот план за акција. Ако имате какви било потешкотии со некој од чекорите, тие може брзо да се решат со користење на барање на пребарувачот како „CentOS поврзете EPEL“ или „CentOS инсталирајте FTP сервер“. И на првите врски можете да најдете детални инструкции чекор-по-чекор.

Значи, како што напишав претходно, ми требаше комбинација од VPS + nginx + OBS. VPS - подготвен. Но, почнаа да се појавуваат прашања за други точки. OBS е програма за емитување, Open Broadcaster Software. И работи само со стримови т.е. на пример, зема слика од веб камера и ја емитува. Или снимање на екранот. Или веќе тековното емитување е пренасочено на друга локација. Но, немам пренос, имам само збир на видео датотеки што треба да се направат во поток.

Почнав да копам во оваа насока и наидов на ffmpeg. FFmpeg е збир на бесплатни библиотеки со отворен код кои ви дозволуваат да снимате, конвертирате и проследувате дигитално аудио и видео во различни формати.

И јас бев многу изненаден колку ffmpeg може да направи. Ако сакате, ќе го извлече звукот од видеото. Ако сакате, ќе отсече фрагмент од видеото без прекодирање. Ако сакате, ќе се конвертира од еден формат во друг. И многу, многу повеќе. До тој степен што можете да наведете датотека на неа, таа ќе ја претвори во поток и ќе ја пренесе на самиот YouTube. Тоа е сè, ланецот е составен. Останува само да се финализираат нијансите.

Чекор 3 - поставување на емитување

Ние создаваме пренос на YouTube. Во оваа фаза ни требаат само врската и клучот за емитување. На скриншот подолу тие се означени со црвено.

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

Понатаму испратите видео датотеки на серверот, кои планираме да ги емитуваме. Всушност, FTP е потребен само за оваа фаза. Ако имате друг пригоден начин за поставување датотеки на серверот, тогаш не мора да поставувате FTP сервер.

Преносот го пренесуваме на YouTube. За да започнете со емитување, треба да извршите ffmpeg со неколку атрибути. Вака изгледа најкратката команда што ја добив:

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

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

-i – покажува која датотека треба да се репродуцира. Важно е командата да се активира од истиот директориум каде што се наоѓа самата видео датотека. Во спротивно, треба да наведете апсолутна врска до датотеката, како /usr/media/lecture1.mp4.

-f – го поставува форматот на излезната датотека. Во мојот случај, излегува дека ffmpeg ја конвертира мојата датотека од mp4 во flv на лет.

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

Ако сте направиле сè правилно, тогаш откако ќе ја извршите оваа команда, YouTube ќе го види пренесениот поток. За да го започнете емитувањето, само треба да кликнете на копчето „Започни емитување“ во самиот YouTube.

Чекор 4 – додадете автономија

Секоја чест! Сега знаете како да започнете емитување од видео датотека. Но, ова не е доволно за XNUMX/XNUMX емитување. Важно е откако првото видео ќе заврши, веднаш да започне следното, а кога ќе се прикажат сите видеа, репродукцијата повторно да започне.

Дојдов до следнава опција: креирајте датотека .sh во која напишав команда за секоја видео датотека и на самиот крај означив команда за повторно извршување на истата скрипта. Резултатот е рекурзија како оваа:

Команда 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 $

Каде start.sh е датотеката во која е напишана оваа скрипта. И оваа датотека мора да се наоѓа во истиот директориум како и видео-датотеките.

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

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

  • Можете рачно да ја префрлите репродукцијата на датотеки. За да го направите ова, треба да го „убиете“ тековниот процес ffmpeg. По ова, репродукцијата на следната датотека од списокот автоматски ќе започне.
  • Може да се додадат нови видеа во емитувањето без да се прекине емитувањето. Само прикачете го видеото на серверот, додајте команда за извршување на оваа датотека во скриптата и зачувајте ја. Тоа е се. Во следниот круг на репродукција, новата датотека ќе се емитува заедно со старите датотеки.

Чекор 5 - приспособете го ffmpeg

Во принцип, можевме да застанеме таму. Но, сакав да го направам преносот малку попријателски за гледачите.

Да речеме, некое лице отиде на пренос, почна да гледа, му се допадна и сакаше да го гледа ова предавање од почеток, но преносот не дозволува премотување назад. За да гледате предавање од почеток, едно лице ќе треба да оди на мојата веб-страница и да добие снимка од предавањето од интерес. Како можеш да кажеш кое предавање го интересира? Веќе има 16 предавања на страницата и има само повеќе од нив секоја недела. Мислам дека ни јас, кој ги снимав и монтирав сите овие предавања, нема да можам по случаен фрагмент да одредам за кое предавање станува збор. Затоа, потребно е секое предавање да биде некако одредено.

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

Се испостави дека ffmpeg може да ми помогне и со ова. Има посебен атрибут -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 се наоѓа во горниот лев агол. Моите координати се избрани на тој начин што текстот е поставен во долниот лев агол со видео резолуција од 1280x720 пиксели.

Изгледа вака:

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

Чекор 6 – одреди го квалитетот на емитувањето

Тоа е тоа, преносот е подготвен. Се емитува FFmpeg, се пуштаат датотеки, моето присуство не е потребно за емитување. Дури и секое предавање е потпишано. Изгледа дека тоа е тоа.

Но, се појави уште една нијанса - ја избрав минималната конфигурација на серверот и таа не го повлече емитувањето. Конфигурација на серверот: 1 јадро (како 2.2 GHz), 1 гигабајт RAM, 25 GB SSD. Имаше доволно RAM меморија, но процесорот беше речиси целосно вчитан на 100% (а понекогаш дури и 102-103% :) Ова доведе до замрзнување на емитувањето на секои неколку секунди. Не е убаво.

Едноставно можете да земете поскапа конфигурација со две јадра, за среќа, со облак технологиите, менувањето на конфигурацијата на серверот се случува со притискање на неколку копчиња. Но, сакав да се вклопам во минималниот капацитет за конфигурација. Почнав да ја проучувам документацијата ffmpeg и да, таму има и поставки кои ви дозволуваат да го регулирате оптоварувањето на системот.

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

Мојот сервер има пристап до канал широк 10 Mbit/s. Оваа ширина е точно. Но, постои ограничување на сообраќајот - 1 ТБ месечно. Затоа, за да се исполнат ограничувањата во сообраќајот, мојот појдовен проток не треба да надминува ~ 300 KB во секунда т.е. Брзината на битови на појдовниот поток не треба да биде поголема од 2,5 Mbit/s. YouTube, инаку, препорачува емитување со оваа бит-стапка.

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

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

Ако користите CRF, можете да ја изберете „тежината“ на појдовната слика, а потоа да користите претходно поставени (-претпоставени) можете да одредите колку силно ќе се вчита процесорот. Овој атрибут ги има следните параметри:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium – стандардна вредност
  • slow
  • slower
  • veryslow

Колку „побрз“ е наведен параметарот, толку поголемо ќе биде оптоварувањето на процесорот.

Прво избрав претходно поставено подесување кое во основа беше премногу тешко за мојот процесор, а потоа пофино го избрав оптоварувањето користејќи CRF. Во мојот случај, претходно поставеното функционираше fast, а за crf се решив на вредноста 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, но YouTube се колне и бара најмалку 3.

Можете да видите каков квалитет се покажа емитувањето тука.

Оптоварувањето на серверот беше како што следува:

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

Емитувајте ги вашите видеа на YouTube XNUMX/XNUMX

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

Со вчитување на дискот можам да кажам дека скоро и да не е вчитан и обичен HDD треба да биде доволен за емитување.

Но, количината на појдовен сообраќај ме загрижува. Излегува дека мојот појдовен поток се движи од 450 до 650 KB во секунда. За еден месец ова ќе биде околу 1,8 терабајти. Можеби ќе треба да купите дополнителен сообраќај или да се префрлите на конфигурација со две јадра бидејќи ... Не би сакал да го намалам квалитетот на сликата.

***

Како резултат на тоа, ќе кажам дека поставувањето на таков пренос од нула трае околу 1-2 часа. Покрај тоа, поставувањето на видеото на серверот ќе потрае поголем дел од времето.

Лансирањето на ваквото емитување не се оправда како маркетиншка алатка. Можеби, ако ги зголемиме прегледите така што алгоритмите на YouTube го земат ова емитување и почнат активно да го прикажуваат во препораките, тогаш нешто ќе успее. Во мојот случај, за 16 дена континуирано емитување е гледано 58 пати.

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

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

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

***

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

Извор: www.habr.com

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