Sendu myndböndin þín á YouTube allan sólarhringinn

Undanfarið hef ég, sem áhugamál, verið að taka upp fyrirlestra hjá sálfræðingi sem ég þekki. Ég breyti myndefninu og birti það á vefsíðunni minni. Fyrir mánuði síðan fékk ég þá hugmynd að skipuleggja 24/7 útsendingu á þessum fyrirlestrum á YouTube. Eins konar þema „sjónvarpsrás“ tileinkuð persónulegum vexti.

Ég veit hvernig á að gera venjulega útsendingu. En hvernig á að gera það þannig að það sé útsending af myndbandsskrám? Þannig að það keyrir 24/7, sé sveigjanlegt, eins sjálfstætt og hægt er og sé á sama tíma ekki háð heimilistölvunni minni á nokkurn hátt. Þetta var það sem ég þurfti að komast að.

Sendu myndböndin þín á YouTube allan sólarhringinn

Það tók nokkra daga að finna lausn. Ég kynnti mér margar umræður og ýmsar handbækur án þeirra hefði útsendingin mín einfaldlega ekki virkað. Og nú þegar hrekkurinn hefur heppnast, finnst mér ég þurfa að deila lausninni minni. Svona birtist þessi grein.

Í stuttu máli var lokalausnin sem hér segir: VPS + ffmeg + bash forskrift. Undir niðurskurðinum lýsi ég þeim skrefum sem stigin voru og tala um þær gildrur sem komu í ljós við skipulagningu útsendingarinnar.

Skref 1 – hvaðan kemur útsendingin?

Strax í upphafi þurfti að ákveða hvaðan útsendingin yrði og hvaðan hún yrði. Það fyrsta sem kom upp í hugann var úr heimatölvunni þinni. Safnaðu myndböndum á lagalista og byrjaðu að spila þau í hvaða myndspilara sem er. Taktu síðan skjámyndina og sendu hana á YouTube. En ég hafnaði þessum valmöguleika næstum samstundis vegna þess að... Til að útfæra það þarftu að halda heimilistölvunni stöðugt á, sem þýðir hávaða frá kælum jafnvel á nóttunni og aukna raforkunotkun (+100-150 kWh í hverjum mánuði). Og það kemur í ljós að þú munt ekki geta notað heimatölvuna þína meðan á útsendingunni stendur. allar hreyfingar músarinnar verða sýnilegar í útsendingunni.

Svo fór ég að horfa til hliðar skýjaþjónustu. Ég var að leita að tilbúinni þjónustu þar sem ég gæti hlaðið upp myndböndunum mínum eða til dæmis sett inn hlekki á myndbönd af YouTube og því yrði öllu pakkað í eina stanslausa útsendingu. En ég fann ekkert við hæfi. Kannski leitaði ég ekki vel. Það eina sem passar við virknina er restream.io, þjónusta sem hjálpar til við að senda út samtímis á nokkra palla. Þeir virðast leyfa þér að hlaða upp eigin myndböndum. En þessi þjónusta var búin til í allt öðrum tilgangi og búast þeir við að útsendingin standi aðeins í nokkrar klukkustundir. Ég held að ef í gegnum þessa þjónustu væri hægt að skipuleggja útsendingu allan sólarhringinn, þá myndi það skjóta upp í tugi, eða jafnvel hundruð dollara á mánuði. En ég vildi samt skipuleggja útsendinguna annaðhvort ókeypis eða með lágmarksfjárfestingu.

Það varð ljóst að fyrir útsendinguna var nauðsynlegt eða aðskilið tæki eða jafnvel sér tölva. Ég var að hugsa um eitthvað eins og Raspberri Pi. Og hvað? Hann á ekki kælir. Myndbandið tók ég upp á flash-drifi, tengdi Ethernet snúruna og lét það liggja einhvers staðar á afskekktum stað og útvarpaði því. Valkostur. En ég hafði hvorki stjórnina sjálfa né reynslu af því að vinna með hana, svo ég hafnaði líka þessum valkosti.

Í kjölfarið rakst ég á ákveðna umræðu þar sem þeir ræddu sköpunina eigin netþjón útsendingar. Það var ekki nákvæmlega það sem ég var að leita að, en ég fékk aðalhugmyndina - þú getur notað netþjón! Í þeirri umræðu var lagt til að nota blöndu af VPS + nginx + OBS. Það varð ljóst að þessi samsetning gæti hentað mér líka. Það eina sem ruglaði mig var að ég hafði aldrei stjórnað netþjóni og mér fannst það ruglingslegt og dýrt að hafa minn eigin sérstaka netþjón. Ég ákvað að komast að því hvað það myndi kosta að leigja miðlara með lágmarksuppsetningu og kom skemmtilega á óvart.

Sendu myndböndin þín á YouTube allan sólarhringinn

Verð eru tilgreind í hvítrússneskum rúblum og þetta eru bara mola. Til að skilja þá eru 8 hvítrússneskar rúblur um 3.5 dollarar eða 240 rússneskar rúblur. Í mánuð að nota fullgilda tölvu sem er kveikt á 24/7 og hefur hraðan netaðgang. Einhverra hluta vegna varð þessi uppgötvun mér mjög ánægjuleg og í nokkra daga gekk ég hrikalega glaður um, eins og barn sem uppgötvaði geimflaugar :)

Við the vegur, ég nýtti mér tilboðið um fyrstu síðuna sem Google gaf mér fyrir fyrirspurnina „VPS leiga“. Kannski eru til enn fleiri fjárhagslegar lausnir, en þetta verð hentaði mér og ég leitaði ekki lengra.

Þegar þú býrð til netþjón geturðu valið stýrikerfið sem hann mun keyra undir. Þú getur skipulagt útsendingu á hvaða kerfi sem er á listanum og valið út frá óskum þínum og fjárhagslegum getu (fyrir netþjón með Windows biðja þeir um aukagjald). Ég valdi CentOS. Einfaldlega vegna þess að ég hafði litla reynslu af því áður.

Sendu myndböndin þín á YouTube allan sólarhringinn

Skref 2 - uppsetning netþjóns

Það fyrsta sem þú þarft eftir að hafa búið til netþjón er að tengjast honum í gegnum SSH. Í fyrstu notaði ég PuTTy en svo byrjaði ég að nota Secure Shell Appið sem keyrir í Google Chrome. Það reyndist mér þægilegra.

Svo breytti ég hostname, setti upp tímasamstillingu á servernum, uppfærði kerfið, fiktaði í iptables... og gerði fullt af öðru en ekki af því að það væri nauðsynlegt. Ég hafði bara áhuga á að setja upp serverinn og það virkaði fyrir mig. Ég elska það þegar það gengur upp :)

Hér eru skrefin sem þú þarft að taka:

  1. Tengdu EPEL geymsluna.
  2. Settu upp FTP netþjón (ég valdi vsftp).
  3. Settu upp ffmpeg.

Ég mun ekki gefa skipanirnar í smáatriðum; þessar leiðbeiningar eru frekar huglægar til að koma almennri aðgerðaáætlun á framfæri. Ef þú átt í erfiðleikum með eitthvað af skrefunum er hægt að leysa þau fljótt með því að nota leitarvélafyrirspurn eins og „CentOS tengja EPEL“ eða „CentOS setja upp FTP miðlara“. Og á fyrstu krækjunum er hægt að finna nákvæmar skref-fyrir-skref leiðbeiningar.

Svo, eins og ég skrifaði áðan, þurfti ég blöndu af VPS + nginx + OBS. VPS - tilbúið. En spurningar fóru að vakna um önnur atriði. OBS er útsendingarforrit, Open Broadcaster Software. Og það virkar bara með lækum þ.e. til dæmis tekur það mynd úr vefmyndavél og sendir hana út. Eða skjáupptaka. Eða útsending sem þegar er í gangi er send á aðra síðu. En ég er ekki með straum, ég á bara sett af myndbandsskrám sem þarf að gera að straumi.

Ég byrjaði að grafa í þessa átt og rakst á ffmpeg. FFmpeg er sett af ókeypis og opnum bókasöfnum sem gera þér kleift að taka upp, umbreyta og streyma stafrænu hljóði og myndskeiðum á ýmsum sniðum.

Og það kom mér mjög á óvart hversu mikið ffmpeg getur gert. Ef þú vilt, mun það draga hljóðið úr myndbandinu. Ef þú vilt mun það klippa út brot af myndbandinu án þess að endurkóða. Ef þú vilt mun það breyta frá einu sniði í annað. Og miklu, miklu meira. Að því marki að þú getur tilgreint skrá fyrir hana mun hún breyta henni í straum og senda hana á YouTube sjálft. Það er það, keðjan er sett saman. Það eina sem er eftir er að ganga frá blæbrigðum.

Skref 3 - útsendingaruppsetning

Við búum til útsendingu á YouTube. Á þessu stigi þurfum við aðeins tengilinn og útsendingarlykilinn. Á skjámyndinni hér að neðan eru þau auðkennd með rauðu.

Sendu myndböndin þín á YouTube allan sólarhringinn

Nánar hlaða upp myndbandsskrám á netþjóninn, sem við ætlum að senda út. Reyndar er FTP aðeins þörf fyrir þetta stig. Ef þú hefur aðra þægilega leið til að hlaða upp skrám á netþjóninn, þá þarftu ekki að setja upp FTP netþjón.

Við sendum strauminn á YouTube. Til að hefja útsendingar þarftu að keyra ffmpeg með nokkrum eiginleikum. Svona lítur stysta skipunin út sem ég fékk:

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

Eiginleikaafkóðun-re – gefur til kynna að breyta verði skránni í straum.

-i – gefur til kynna hvaða skrá á að spila. Það er mikilvægt að skipunin sé ræst úr sömu möppu þar sem myndbandsskráin sjálf er staðsett. Annars ættir þú að tilgreina algjöran hlekk á skrána, eins og /usr/media/lecture1.mp4.

-f - stillir úttaksskráarsniðið. Í mínu tilfelli kemur í ljós að ffmpeg breytir skránni minni úr mp4 í flv á flugu.

Og í lokin tilgreinum við gögnin sem við tókum af YouTube á útsendingarstillingasíðunni, þ.e. heimilisfangið sem þú þarft að flytja gögn á og útsendingarlykillinn, þannig að útsendingin birtist sérstaklega á rásinni þinni.

Ef þú gerðir allt rétt, þá mun YouTube sjá sendann straum eftir að hafa keyrt þessa skipun. Til að hefja útsendinguna þarftu bara að smella á „Start Broadcast“ hnappinn á YouTube sjálfu.

Skref 4 – bæta við sjálfræði

Til hamingju! Nú veistu hvernig á að hefja útsendingar frá myndbandsskrá. En þetta er ekki nóg fyrir XNUMX/XNUMX útsendingar. Mikilvægt er að eftir að fyrsta myndbandið hefur lokið spilun hefjist það næsta strax og þegar öll myndböndin eru sýnd hefst spilun aftur.

Ég kom upp með eftirfarandi valmöguleika: búa til .sh skrá þar sem ég skrifaði skipun fyrir hverja myndbandsskrá og í lokin gaf ég til kynna skipun um að keyra sama handritið aftur. Niðurstaðan er endurkoma eins og þessi:

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

Og já, það virkaði. Ánægður með sjálfan mig hóf ég prufuútsendingu og fór að sofa.

Um morguninn beið mín óþægileg undrun. Í ljós kom að útsendingin tók aðeins nokkrar mínútur og endaði nánast samstundis þegar ég slökkti á tölvunni minni. Rannsóknin sýndi að skipanir sem ræstar eru á þennan hátt eru framkvæmdar á meðan notandinn er skráður inn á netþjóninn. Um leið og ég aftengdi voru skipanirnar sem ég var að keyra truflaðar. Til að koma í veg fyrir að þetta gerist er nóg fyrir framan liðið bash bæta skipuninni við nohup. Þetta mun leyfa hlaupandi ferli að keyra óháð viðveru þinni.

Loka lágmarksútgáfan af handritinu lítur svona út:

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 $

Þar sem start.sh er skráin sem þetta handrit er skrifað í. Og þessi skrá verður að vera staðsett í sömu möppu og myndbandsskrárnar.

Að bæta við dollaramerki í lokin gerir ferlið kleift að keyra í bakgrunni svo þú getir haldið áfram að nota stjórnborðið án þess að trufla útsendinguna.

Bónusarnir innihéldu eftirfarandi góðgæti:

  • Þú getur handvirkt skipt um spilun skráa. Til að gera þetta þarftu að „drepa“ ffmpeg ferlinu sem er í gangi. Eftir þetta byrjar spilun næstu skráar af listanum sjálfkrafa.
  • Hægt er að bæta nýjum myndböndum við útsendinguna án þess að stöðva útsendinguna. Hladdu bara myndbandinu inn á netþjóninn, bættu við skipun til að keyra þessa skrá í handritinu og vistaðu það. Það er allt og sumt. Í næstu umferð spilunar verður nýja skráin send út ásamt gömlu skránum.

Skref 5 - aðlaga ffmpeg

Í grundvallaratriðum hefðum við getað stoppað þar. En ég vildi gera útsendinguna aðeins vingjarnlegri fyrir áhorfendur.

Segjum að maður hafi farið á útsendinguna, byrjað að horfa, líkað við og langað til að horfa á þennan fyrirlestur frá upphafi en útsendingin leyfir ekki spóla til baka. Til að horfa á fyrirlestur frá upphafi þarf maður að fara inn á heimasíðuna mína og fá upptöku af fyrirlestrinum sem ég hef áhuga á. Hvernig geturðu sagt hvaða fyrirlestur vekur áhuga hans? Nú þegar eru 16 fyrirlestrar á síðunni og þeir eru bara fleiri í hverri viku. Ég held að jafnvel ég, sem kvikmyndaði og klippti alla þessa fyrirlestra, muni ekki geta ákveðið út frá tilviljunarkenndu broti hvaða fyrirlestur það er. Þess vegna er nauðsynlegt að hver fyrirlestur sé einhvern veginn útnefndur.

Möguleikinn á að bæta texta við frummyndaskrárnar í klippiforritinu hentaði mér ekki. Það var nauðsynlegt að tryggja að upprunalegu skrárnar væru notaðar. Þannig að stuðningur við útsendinguna krefst eins lítilla líkamshreyfinga og hægt er af mér.

Það kom í ljós að ffmpeg gæti hjálpað mér með þetta líka. Það hefur sérstakan eiginleika -vf, sem gerir kleift að setja texta yfir myndskeið. Til að bæta texta við myndband þarftu að bæta eftirfarandi broti við skipunina:

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

Útskýring á breytumfontfile= - hlekkur á leturgerðina. Án þessa verður textanum ekki bætt við myndbandið. Auðveldasta leiðin er að setja leturgerðina í sömu möppu og myndbandið. Eða þú þarft að tilgreina alla slóðina að skránni.

text= – reyndar textinn sjálfur sem þarf að setja ofan á myndbandið.

fontsize= - leturstærð í pixlum.

fontcolor= - leturlitur.

borderw= – þykkt útlínunnar í kringum textann í pixlum (ég er með hvítan texta með svörtum útlínum 1 pixla þykka).

bordercolor= - útlínur litur.

x= и y= – textahnit. Punktur 0;0 er staðsett í efra vinstra horninu. Hnitin mín eru valin þannig að textinn er settur neðst í vinstra hornið með myndbandsupplausn 1280x720 dílar.

Það lítur svona út:

Sendu myndböndin þín á YouTube allan sólarhringinn

Skref 6 - ákvarða gæði útsendingarinnar

Þá er útsendingin tilbúin. FFmpeg útsendingar, skrár eru spilaðar, viðvera mín er ekki nauðsynleg fyrir útsendingar. Jafnvel hver fyrirlestur er undirritaður. Líttu út eins og það sé það.

En enn eitt blæbrigðið kom upp á yfirborðið - ég valdi lágmarksstillingu netþjónsins og hún dró ekki útsendinguna upp. Stilling netþjóns: 1 kjarni (eins og 2.2 GHz), 1 gígabæti af vinnsluminni, 25 GB SSD. Það var nóg vinnsluminni en örgjörvinn var næstum alveg hlaðinn 100% (og stundum jafnvel 102-103% :) Þetta leiddi til þess að útsendingin frjósi á nokkurra sekúndna fresti. Ekki sniðugt.

Þú gætir einfaldlega tekið dýrari uppsetningu með tveimur kjarna, sem betur fer, með skýjatækni, breyting á uppsetningu netþjónsins á sér stað með því að ýta á nokkra hnappa. En ég vildi passa inn í lágmarks stillingargetu. Ég byrjaði að kynna mér ffmpeg skjölin og já, það eru líka stillingar þar sem gera þér kleift að stjórna álaginu á kerfið.

Háum myndgæðum er hægt að ná á tvo vegu: annaðhvort mikið CPU álag eða mikil útsending. Það kemur í ljós að því meira álag sem örgjörvinn getur tekið á sig, því minni rásarbandbreidd þarf. Eða þú getur ekki hlaðið örgjörvann of mikið, en þá þarftu breitt rás með miklu umferðarrými. Ef það eru takmarkanir á bæði örgjörva og stærð útrásar/umferðar, þá verður að draga úr myndgæðum svo útsendingin gangi snurðulaust fyrir sig.

Miðlarinn minn hefur aðgang að 10 Mbit/s breiðri rás. Þessi breidd er alveg rétt. En það er takmörk fyrir umferð - 1 TB á mánuði. Þess vegna, til að mæta umferðartakmörkunum, ætti útstreymi mitt ekki að fara yfir ~300 KB á sekúndu, þ.e. Bitahraði útstreymis ætti ekki að vera meira en 2,5 Mbit/s. YouTube, við the vegur, mælir með útsendingu á þessum bitahraða.

Til að stjórna álaginu á kerfið notar ffmpeg mismunandi aðferðir. Vel skrifað um þetta hér. Ég endaði með því að nota tvo eiginleika: -crf и -preset.

Constant Rate Factor (CRF) – þetta er stuðull sem þú getur stillt gæði myndarinnar fyrir. CRF getur haft gildi frá 0 til 51, þar sem 0 er gæði frumskrárinnar, 51 eru verstu mögulegu gæðin. Mælt er með því að nota gildi frá 17 til 28, sjálfgefið er 23. Með stuðlinum 17 verður myndbandið sjónrænt eins og upprunalega, en tæknilega séð verður það ekki það sama. Í gögnunum kemur einnig fram að stærð lokamyndbandsins, eftir tilgreindum CRF, breytist veldisvísis, þ.e. að auka stuðulinn um 6 punkta mun tvöfalda bitahraða útsendingar myndbandsins.

Ef þú notar CRF geturðu valið „þyngd“ myndarinnar sem er á útleið og síðan notað forstillingar (-forstillingar) þú getur ákvarðað hversu mikið örgjörvinn verður hlaðinn. Þessi eiginleiki hefur eftirfarandi færibreytur:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - sjálfgefið gildi
  • slow
  • slower
  • veryslow

Því „hraðar“ sem færibreytan er tilgreind, því meira verður álagið á örgjörvann.

Ég valdi fyrst forstillingu sem var í grundvallaratriðum of erfiður fyrir örgjörvann minn og valdi síðan álagið með CRF betur. Í mínu tilviki virkaði forstillingin fast, og fyrir crf settist ég á gildið 24.

Ályktun

Það er allt og sumt. Lokaskipunin til að hefja útsendinguna var þessi:

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/%КЛЮЧ_ТРАНСЛЯЦИИ%

Það eru aðeins tveir ólýstir punktar eftir hér:

1) -c:v libx264 – að tilgreina ákveðinn merkjamál til að vinna með frumskrána.
2) -g 3 – skýr vísbending um fjölda lykilramma. Í þessu tilviki er tilgreint að þriðji hver rammi ætti að vera lykilrammi. Staðlað gildi er annað hvort 5 eða 8, en YouTube blótar og biður um að minnsta kosti 3.

Sjá má hvaða gæði útsendingin reyndist vera hér.

Álagið á þjóninum var sem hér segir:

Sendu myndböndin þín á YouTube allan sólarhringinn

Sendu myndböndin þín á YouTube allan sólarhringinn

Miðað við eftirlitsgögnin er ljóst að álag örgjörva er á bilinu 70% til 95% og í vikunni náði útsendingin aldrei 100%. Þetta þýðir að með þessum stillingum er örgjörvinn nóg.

Með því að hlaða disknum get ég sagt að hann sé nánast ekki hlaðinn og venjulegur HDD ætti að duga fyrir útsendingar.

En magnið af útflutningi veldur mér áhyggjum. Það kemur í ljós að útstreymi minn er á bilinu 450 til 650 KB á sekúndu. Eftir mánuð verður þetta um 1,8 terabæt. Þú gætir þurft að kaupa auka umferð eða skipta yfir í stillingar með tveimur kjarna vegna þess að... Ég myndi ekki vilja draga úr gæðum myndarinnar.

***

Þar af leiðandi mun ég segja að uppsetning slíkrar útsendingar frá grunni tekur um 1-2 klukkustundir. Þar að auki mun upphleðsla myndbandsins á netþjóninn taka mestan tíma.

Uppsetning slíkrar útsendingar réttlætti sig ekki sem markaðstæki. Kannski, ef við aukum áhorf þannig að YouTube reiknirit nái þessari útsendingu og byrji að sýna hana virkan í tilmælum, þá myndi eitthvað ganga upp. Í mínu tilfelli var horft á hana 16 sinnum á 58 dögum samfelldrar útsendingar.

Það er í lagi. Útsendingin passar inn á aðalsíðu vefsíðunnar minnar. Þetta gaf mér tækifæri til að mynda mér fljótt eigin skoðun á fyrirlesaranum og fyrirlestrum sjálfum.

Og eitt augnablik. Mikilvægt er að útsendingin brjóti ekki í bága við höfundarrétt neins, annars verður henni lokað. Ég er rólegur yfir útsendingunni minni vegna þess að... Ég valdi tónlistarinnskot sérstaklega með ókeypis notkun og höfundur efnisins situr við nálæga tölvu og er alls ekki á móti því að ég noti efnið hennar :)

En ef þú ert með útvarp í bakgrunni einhvers staðar í útsendingunni þinni, eða þú notaðir uppáhaldslagið þitt við klippingu, eða tókst myndskeið úr vinsælu tónlistarmyndbandi, sjónvarpsþáttaröð eða kvikmynd, þá er útsendingin þín í hættu. Það er líka mikilvægt að útsendingin beri að minnsta kosti lágmarks merkingarfræðilegt álag, annars gæti það verið lokað sem ruslpóstur.

***

Það er allt sem ég á. Ég vona að þessi handbók muni þjóna einhverjum vel. Jæja, ef þú hefur eitthvað að bæta við, skrifaðu, ég mun vera fús til að lesa viðbætur og skýringar við greinina.

Heimild: www.habr.com

Bæta við athugasemd