Transmetime 24 orëshe të videove të tij në YouTube

kohë e fundit si hobi regjistroj në video ligjeratat e një psikologu që njoh. Materialin e xhiruar e redaktoj dhe e publikoj në faqen time. Një muaj më parë u kapa me idenë për të organizuar një transmetim të përhershëm të këtyre ligjeratave në YouTube në mënyrë 24/7. Një lloj "kanali tematik", i dedikuar rritjes personale.

E di se si të bëj një transmetim të zakonshëm. Por si të bëj që kjo të jetë një transmetim i video-dosjeve? Që të jetë 24/7, fleksibël, sa më autonom dhe që të mos varet fare nga kompjuteri im shtëpiak. Kjo ishte ajo që doja të zbuloja.

Transmetime 24 orëshe të videove të tij në YouTube

Më mori disa ditë për të gjetur një zgjidhje. Studova shumë forume dhe manuale të ndryshme që pa të cilat transmitimi im thjesht nuk do të kishte funksionuar. Dhe tani, kur aventura ka arritur sukses, ndiej nevojën për të ndarë zgjidhjen time. Kështu lindi ky artikull.

Nëse flasim shkurt, zgjidhja përfundimtare doli të ishte kështu: VPS + ffmpeg + skript bash.Poshtë, përshkruaj hapat e ndjekur dhe ndajnë "shkëmbinjtë" që u shpërfaqën gjatë organizimit të transmetimit.

Hapi 1 – nga do të vijë transmetimi?

Në fillim duhej të vendosja nga do të bëhej transmetimi, ku do të ishte burimi i tij. E para që më erdhi në mendje ishte nga kompjuteri shtëpiak.Të mbledh video në një playlist dhe të filloj të luaj ato në një lojtar video. Pastaj të kap imazhin nga ekrani dhe ta transmetoj atë në YouTube. Por e hodha menjëherë këtë mundësi sepse për ta realizuar duhej të mbahej kompjuteri shtëpiak gjithmonë i ndezur, dhe kjo do të thoshte zhurma nga ventilatorët edhe natën dhe rritja e konsumit të energjisë elektrike (+100-150 kWh çdo muaj). Pra, nuk do të mund të përdorja kompjuterin shtëpiak gjatë transmetimit sepse çdo lëvizje e miut do të ishte e dukshme në transmetim.

Pastaj fillova të shikoj në drejtimin e shërbimeve cloud.Kërkova një shërbim të gatshëm, ku mund të ngarkoja videot e mia ose, për shembull, të fus linke nga videot në YouTube dhe që kjo të paketonte gjithçka në një transmetim nonstop. Por nuk gjetëm asgjë të përshtatshme. Ndoshta kërkova keq. E vetmja diçka që ishte ± e përshtatshme për funksionalitetin ishte restream.io, një shërbim që ndihmon në transmetimin e përbashkët në disa platforma. Ata duket se lejojnë ngarkimin e videove. Por ky shërbim ishte krijuar për qëllime krejt të tjera dhe ata presin që transmetimi të zgjasë vetëm disa orë. Mendoj se nëse përmes këtij shërbimi do të ishte e mundur organizimi i një transmetimi të përhershëm, do të kushtonte dhjetëra, ndoshta edhe qindra dollarë në muaj. Por dëshiroja që të organizohej transmetimi ose falas, ose me investime financiare minimale.

Ishte e qartë se për transmetimin nevojitej ose një pajisje e veçantë apo madje edhe një kompjuter të veçantë. Mendova për diçka si Raspberri Pi. Pse jo? Ai nuk ka ventilator. Regjistrova videon në një USB, e futa kabllon Ethernet dhe e la të qetë diku në një vend të fshehur, duke realizuar transmetimin. Një mundësi. Por nuk kisha as bordin as eksperiencën e punës me të, kështu që e hoqa këtë mundësi po ashtu.

Në fund, natën e natyrshme, pashë një diskutim ku flisnin për krijimin e një serveri për transmetim. Kjo nuk ishte krejt ajo që po kërkoja, por e kuptova idenë – mund të përdorim një server! Në atë diskutim sugjerohej të përdoret kombinimi VPS + nginx + OBS. U bë e qartë se ky kombinim mund të më përfshihet edhe mua. Vetëm se më shqetësonte se kurrë nuk kisha administruar servera dhe më dukej se një server i dedikuar ishte i komplikuar dhe i shtrenjtë. Vendosa të verifikoja sa do të kushtonte të merrja me qira një server në konfigurimin minimal dhe u befasova për mirë.

Transmetime 24 orëshe të videove të tij në YouTube

Çmimet janë të shënuara në rubla bjellorus dhe janë thjesht fara. Për të kuptuar, 8 rubla bjellorus janë rreth 3.5 dollarë ose 240 rubla ruse. Për muajin e përdorimit të një kompjuteri të plotë, i cili është i ndezur 24/7 dhe ka qasje të shpejtë në Internet. Për çudi, ky zbulim ishte shumë i këndshëm për mua dhe disa ditë e kalova jashtëzakonisht i kënaqur si një fëmijë që ka zbuluar raketat kozmike 🙂

Për më tepër, unë përdora ofertën e faqes së parë që më dha Google për pyetjen "qira VPS". Ndoshta ka ndonjë zgjidhje më të përballueshme, por kjo çmim më përkoi dhe nuk kërkova më tej.

Kur krijoni një server, mund të zgjidhni sistemin operativ nën të cilin do të punojë. Në çdo një nga sistemet e listuara mund të organizoni transmetim dhe zgjedhja duhet të bazohet në preferencat dhe mundësitë tuaja financiare (për serverin me Windows kërkohet një pagesë shtesë). Unë zgjodha CentOS. Thjesht sepse kisha një përvojë të vogël me të më parë.

Transmetime 24 orëshe të videove të tij në YouTube

Hapi 2 – konfigurimi i serverit

Gj thingi i parë që duhet bërë pas krijimit të serverit është të lidhemi me të përmes SSH. Në fillim përdorja PuTTy, por më pas fillova të përdorja aplikacionin Secure Shell App, i cili hapet në Google Chrome. Më dukej më i përshtatshëm.

Pastaj e ndryshova emrin e hostit, konfigurimin e sinkronizimit të kohës në server, përmirësova sistemin, merrem me iptables… dhe bëra shumë gjëra të tjera, por jo sepse ishte e domosdoshme. Thjesht më interesonte të konfigurja serverin dhe më dukej se po ia dilja mbanë. Më pelqen kur ia dal 🙂

Ja këtu janë hapat që duhet të bëhen:

  1. Të lidhni depozitat EPEL.
  2. Të ngremë një server FTP (unë zgjodha vsftp).
  3. Të instalojmë ffmpeg.

Nuk do të përmend detaje të komandave, kjo udhëzim është më shumë konceptual, për të përcjellë planin e përgjithshëm të veprimit. Nëse hasni ndonjë vështirësi në ndonjë nga hapat, mund të zgjidhni shpejt atë me një kërkesë në motorin e kërkimit si "CentOS lidhe EPEL" ose "CentOS instalim FTP serveri". Dhe në lidhjet e para do të mund të gjeni udhëzime të detajuara hap pas hapi.

Pra, siç kam thënë më parë, më nevojitej një kombinim VPS + nginx + OBS. VPS – gati. Por për pjesët e tjera filluan të lindnin pyetje. OBS – kjo është një program për transmetime, Open Broadcaster Software. Dhe ai punon vetëm me rrjedha, domethënë, merr imazhin nga një webcam dhe e transmeton. Ose regjistrimin e ekranit. Ose një transmetim që ka filluar tashmë e drejton në një faqe tjetër. Por unë nuk kam një rrjedhë, kam vetëm një grup videosh që duhen bërë si një rrjedhë.

Kështu fillova të hetoj në këtë drejtim dhe u ndesha me ffmpeg. FFmpeg – është një grumbull librash me burim të hapur që lejojnë regjistrimin, konvertimin dhe transmetimin e audio dhe video digjitale në formate të ndryshme.

Dhe u habit shumë sa shumë mund të bëjë ffmpeg. Dëshiron – nxjerr zërin nga video. Dëshiron – prish një fragment video pa e rikoduar. Dëshiron – ta konvertojë nga një format në një tjetër. Dhe shumë e shumë gjëra të tjera. Deri në atë pikë sa mund t'i japësh një skedar, ai e transformon atë në një rrjedhë dhe vetë e transmeton në YouTube. Tani, zinxhiri është ndërtuar. Ka mbetur vetëm të përfundoj detajet.

Hapi 3 – konfigurimi i transmetimit

Krijojmë një transmetim në YouTube. Në këtë hap na nevojitet vetëm lidhja dhe çelësi i transmetimit. Në ekranin e mëposhtëm ata janë theksuar me të kuqe.

Transmetime 24 orëshe të videove të tij në YouTube

Më pas ngarkojmë skedarët video në server, të cilët planifikojmë të transmetojmë. Pjesërisht, FTP është i nevojshëm vetëm për këtë fazë. Nëse keni ndonjë mënyrë tjetër të përshtatshme për ngarkim skedarësh në server, atëherë nuk është e nevojshme të ngrehim serverin FTP.

Transmetojmë rrjedhën në YouTube. Për të filluar transmetimin, duhet të startoni ffmpeg me disa atribute. Këtu është si duket komanda më e shkurtër që kam arritur:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%ÇELSI_TRANSMETIMIT%

Shpjegimi i atributeve-re – tregon se skedari duhet të konvertohet në një rrjedhë.

-i – tregon se cili skedar duhet të luhet. Është e rëndësishme që komanda të ekzekutohet nga e njëjta katalog ku ndodhet skedari video. Në të kundërt, duhet të përcaktoni lidhjen absolute te skedari, siç është /usr/media/lecture1.mp4.

-f – përcakton formatin e skedarit të dalë. Në rastin tim, kjo do të thotë që ffmpeg "në flakë" konverton skedarin tim nga mp4 në flv.

Dhe në fund tregojmë të dhënat që morëm në YouTube në faqen e konfigurimit të transmetimit, dmth. adresën në të cilën duhet të dërgojmë të dhënat, dhe çelësi i transmetimit, për që transmetimi të shfaqet pikërisht në kanalin tuaj.

Nëse keni bërë gjithçka siç duhet, atëherë pasi të aktivizoni këtë komandë, YouTube do të shohë rrjedhën e transmetuar. Për të nisur transmetimin, ju mbetet vetëm të klikoni butonin "Nis transmetimin" në vetë YouTube.

Hapi 4 – shtojmë autonominë

Urime! Tani e dini se si të filloni një transmetim nga një skedar video. Por kjo nuk është e mjaftueshme për një transmetim 24-orësh. Është e rëndësishme që pas përfundimit të luajtjes së videos së parë, të nisë menjëherë videoja tjetër, dhe kur të shfaqen të gjitha videot, të fillojë fillimisht nga e para.

Kam menduar për një variant të tillë: të krijoj një skedar .sh, në të cilin shkruaj një komandë për çdo skedar video dhe në fund të tregoj një komandë për të nisur përsëri këtë skript. Kështu u krijua një lloj rekurence:

Komanda 1... (nisja e transmetimit të skedarit lecture1.mp4)
Komanda 2... (nisja e transmetimit të skedarit lecture2.mp4)
Komanda 3... (nisja e transmetimit të skedarit lecture3.mp4)
bash start.sh

Po, po, kjo funksionoi. Unë, i kënaqur me veten, nisa një transmetim provues dhe shkuam të flija.

Në mëngjes më priste një surprizë e këndshme. Doli se transmetimi ka vazhduar vetëm disa minuta dhe përfundoi pothuajse menjëherë sapo e fikja kompjuterin tim. Hetimi tregoi se komandat e nisura në atë mënyrë ekzekutohen për sa kohë që përdoruesi është i autorizuar në server. Sapo u lidh, ekzekutimi i komandave të mia u ndërpre. Për të shmangur këtë, mjafton të shtoni komandën bash për të shkruar komandën nohup. Kjo do t'i mundësojë procesit të hapur të vazhdojë të ekzistojë pavarësisht nga praninë tuaj.

Versioni minimal përfundimtar i skriptit duket kështu:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%ÇELSI_TRANSMETIMI%
ffmpeg -re -i lecture2.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%ÇELSI_TRANSMETIMI%
ffmpeg -re -i lecture3.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%ÇELSI_TRANSMETIMI%
nohup bash start.sh $

Ku start.sh është skedari që përmban këtë skript. Ky skedar duhet të jetë në të njëjtin katalog me skedarët e videos.

Shtimi i shenjës së dollarit në fund lejon që procesi të startojë në mënyrë të sfondit, kështu që mund të vazhdoni të përdorni konsolën pa ndërprerë transmetimin.

Nga bonuset dolën disa përfitime:

  • Mund të kaloni manualisht mes skedarëve të videos. Për këtë, duhet të "vrasni" procesin aktual të ffmpeg. Pas kësaj, do të fillojë automatikisht luajtja e skedarit të ardhshëm nga lista.
  • Skedarë të rinj mund të shtohen në transmetim pa ndaluar transmetimin. Thjesht ngarkoni videon në server, shtoni komandën për të nisur këtë skedar në skript, ruani. Dhe gjithë. Në ciklin e ardhshëm të luajtjes, skedari i ri do të transmetohet së bashku me skedarët e vjetër.

Hapi 5 - përshtatni ffmpeg

Në këtë pikë, në parim mund të isha ndalur. Por më pëlqeu të bëja transmetimin pak më miqësor për shikuesit.

Supozoni se një person hyri në transmetim, filloi të shikonte, i pëlqeu dhe donte të shihte këtë ligjëratë nga fillimi, por transmetimi nuk parashikon avancimin. Për të parë ligjëratën nga fillimi, personi duhet të kalojë në faqen time dhe të marrë regjistrimin e ligjëratës që e intereson. E si mund të kuptojmë se cila ligjëratë e intereson? Në faqen e internetit tashmë ka 16 ligjërata dhe çdo javë bëhen edhe më shumë. Mendoj se edhe unë, që kam regjistruar dhe montuar të gjitha këto ligjërata, nuk do të mund të përcaktoj cila është kjo ligjëratë nga një fragment rastësor. Prandaj, duhet të bëhet që çdo ligjëratë të jetë e ndarë ndryshe.

Një mundësi për të shtuar mbishkrime në skedarët origjinalë të videos me programin e montimit nuk më kënaqte. Duhej të isha siguruar që të përdorësh skedarët origjinalë. Në mënyrë që mbështetja e transmetimit të kërkonte nga unë sa më pak lëvizje.

Doli se edhe në këtë mund të më ndihmojë ffmpeg. Ai ka një atribut të veçantë -vf, i cili lejon të shtoni tekst mbi videon. Për të shtuar tekst në video, duhet të shtoni fragmentin e mëposhtëm në komandë:

-vf drawtext="fontfile=OpenSans.ttf:text='Ligjërata 13: Psikologjia e emocioneve. Si të krijoni gëzim?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

Shpjegimi i parametravefontfile= – lidhja për skedarin e shkrimit. Pa këtë, mbishkrimi në video nuk shtohet. Më e lehtë është të vendosni skedarin e shkrimit në të njëjtën papkë me videon. Ose do të duhet të tregoni rrugën e plotë për skedarin.

text= – vetë teksti që duhet të vendoset mbi videon.

fontsize= – madhësia e shkrimit në piksel.

fontcolor= – ngjyra e shkrimit.

borderw= – trashësia e konturit rreth tekstit në piksel (unë kam tekst të bardhë me kontur të zi me trashësi 1 piksel).

bordercolor= – ngjyra e konturit.

x= dhe y= – koordinatat e tekstit. Pika 0;0 gjenet në këndin e majtë të sipërm. Unë kam koordinatat të vendosura në një mënyrë që teksti të vendoset në këndin e majtë të poshtëm për një rezolutë video 1280x720 piksel.

Kjo duket kështu:

Transmetime 24 orëshe të videove të tij në YouTube

Hapi 6 – përcaktojmë cilësinë e transmetimit

Gjithçka, transmetimi është gati. FFmpeg transmeton, skedarët janë duke u luajtur, prania ime për transmetim nuk është e nevojshme. Edhe çdo ligjëratë është e shënuar. Duket gjithçka.

Por doli një tjetër nuancë – unë zgjodha konfigurimin minimal të serverit dhe ai nuk e mbante transmetimin. Konfigurimi i serverit: 1 bërthamë (dukët 2.2 GHz), 1 gigabajt RAM, SSD me 25 GB. RAM ishte e mjaftueshme, por procesori pothuajse po ngarkohej në 100% (dhe ndonjëherë edhe 102-103% 🙂 Kjo çoi në faktin që transmetimi ngec shumë herë çdo disa sekonda. Nuk duket mirë.

Mund t'kishte marrë një konfigurim më të shtrenjtë me dy bërthama, mirë që me teknologjitë cloud, ndërrimi i konfiguracionit të serverit bëhet me klikime të pakta. Por doja të isha brenda kapaciteteve të konfiguracionit minimal. Fillova të studioj dokumentacionin e ffmpeg dhe po, atje gjithashtu ka cilësime që lejojnë rregullimin e ngarkesës në sistem.

Cilësia e lartë e imazhit mund të arrihet në dy mënyra: ose me një ngarkesë të lartë në procesor, ose me një trafik të madh në dalje. Kështu, sa më shumë ngarkesë të mund të përballojë procesori, aq më pak do të nevojitet kapaciteti i kanalit. Ose mund të mos e ngarkosh shumë procesorin, por atëherë do të nevojitej një kanal i gjerë me kapacitet të madh për trafik. Nëse ka kufizime si në procesor ashtu edhe në madhësinë e kanalit të daljes/trafikut, do të duhet të ulet cilësia e imazhit për të siguruar një transmetim pa ndërprerje.

Serveri im ka akses në një kanal me gjerësi 10 Mbit/s. Kjo është një gjerësi mjaft e madhe. Por ka një kufizim në trafik – 1 TB në muaj. Prandaj, që të përputhem me kufizimet e trafikut, rrjedha ime e daljes nuk duhet të kalojë ~300 Kb në sekondë, dmth, bitrate i rrjedhës së daljes duhet të jetë jo më shumë se 2.5 Mbit/s. YouTube, për rastin, rekomandon pikërisht të bëhet transmetimi në një bitrate të tillë.

Për rregullimin e ngarkesës në sistem, ffmpeg përdor qasje të ndryshme. Kjo është shkruar mirë. këtu. Unë përfundimisht përdora dy atribute: -crf dhe -preset.

Constant Rate Factor (CRF) – është koeficienti që lejon të rregullohet cilësia e imazhit. CRF mund të ketë vlera nga 0 në 51, ku 0 është cilësia e skedhës origjinale, 51 është cilësia më e keqe e mundshme. Rekomandohet të përdoren vlera nga 17 në 28, me variantin e parazgjedhur 23. Me një koeficient 17, videoja do të jetë vizualisht identike me origjinalin, por teknikisht nuk do të ishte. Po ashtu, në dokumentacion është e evidentuar se madhësia e videos përfundimtare ndryshon në varësi të CRF që është caktuar në mënyrë eksponenciale, dmth rritja e koeficientit me 6 pikë do të dyfishojë bitrate-in e videos në dalje.

Nëse me anë të CRF mund të përcaktohet "peshë" e imazhit në dalje, me anë të preseteve (-preset) mund të përcaktohet sa shumë do të ngarkohet procesori. Parametrat e këtij atributi janë si mëposhtë:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium – vlera e parazgjedhur
  • slow
  • slower
  • veryslow

Sa më "të shpejtë" të jetë parametri i caktuar, aq më e lartë do të jetë ngarkesa mbi procesorin.

Fillimisht zgjodha një preset që ishte në përgjithësi "i përballueshëm" për procesorin tim, pastaj përshtata më shumë ngarkesën me anë të CRF. Në rastin tim, arrita në preset fast, dhe për crf u ndala në vlerën 24.

Përfundimi

Në këtë pikë, komanda për të filluar transmetimin përfundimisht rezultoi si e tillë:

ffmpeg -re -i lecture1.mp4 -vf drawtext="fontfile=OpenSans.ttf:text='Lezione 1: Xhonglimi i imazheve të botës':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/%KLIÇIMI_I_TRANSMETIMIT%

Këtu kanë mbetur vetëm dy pika të paartikuluara:

1) -c:v libx264 – specifikimi i kodekut konkret për punën me skedën origjinale.
2) -g 3 – përcaktimi i qartë i numrit të çelësave. Në këtë rast, është përcaktuar se çdo i tretë kadër duhet të jetë çelës. Vlera standarde është ose 5 ose 8, por YouTube ankesohet, kërkon të paktën 3.

Cilësia e transmetimit mund të shikohet këtu.

Ngarkesa mbi server rezultoi si e tillë:

Transmetime 24 orëshe të videove të tij në YouTube

Transmetime 24 orëshe të videove të tij në YouTube

Nga të dhënat e monitorimit, duket se ngarkesa mbi procesor varion nga 70% në 95% dhe për një javë transmetimi nuk arriti asnjëherë në 100%. Kështu, me këto параметра , procesori është mjaft i mjaftueshëm.

Sa për ngarkesën mbi disk, mund të them që ai është pothuajse i pakrahasueshëm dhe për transmetim do të ishte e mjaftueshme dhe një HDD i zakonshëm.

Por, sasia e trafikut në dalje më shqetëson. Del se rrjedha ime e daljes varion nga 450 në 650 Kbyte në sekondë. Për një muaj, kjo do të përbënte rreth 1.8 terabyte. Ndoshta do të ketë nevojë të blej trafik ose ende të kaloj në një konfigurim me dy bërthama, pasi nuk do të doja ta ulesha cilësinë e imazhit.

***

Si përfundim, mund të them se konfigurimi i një transmetimi të tillë nga fillimi zgjat rreth 1-2 orë. Kryesisht, pjesa më e madhe e kohës do të merret nga ngarkimi i videos në server.

Si një mjet marketingu, një nisje e tillë transmisioni nuk e arriti qëllimin e vet. Ndoshta, nëse do të stimuloja shikimet që algoritmet e YouTube të kapnin këtë transmetim dhe të fillonin ta tregonin atë në rekomandime, mund të kishte diçka që do të rezultonte. Në rastin tim, për 16 ditë transmetim të pandërprerë, ajo u pa 58 herë.

Mirë, transmetimi u integrua harmonikisht në faqen kryesore të sitit tim. E gjitha rezultoi si një mundësi për të formuar një opinion të shpejtë mbi ligjëruesin dhe vetë ligjëratat.

Dhe një moment tjetër. Është e rëndësishme që transmetimi të mos shkelë të drejtat e autorit të askujt, përndryshe do të bllokohet. Unë jam i qetë për transmetimin tim, pasi pjesët muzikore i kam zgjedhur me qëllim për përdorim të lirë, dhe autori i përmbajtjes është ulur në kompjuterin pranë dhe është mjaft dakord që të përdor përmbajtjen e tij 🙂

Por nëse në transmetimin tuaj luan ndonjëherë radio në sfond, ose nëse gjatë montimit keni përdorur një këngë të preferuar, ose keni marrë një video nga një klip muzikor popullor, serial ose film – atëherë transmetimi juaj është në rrezik. Po ashtu, është e rëndësishme që transmetimi të ketë të paktën një ngarkesë minimale kuptimore, përndryshe mund të bllokohet si spam.

***

Këtu përfundoj. Shpresoj që ky manual t'u vijë në ndihmë dikujt. Dhe nëse keni diçka për të shtuar – shkruani, do të jem i lumtur të lexoj shtesa dhe sqarime për artikullin.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster