Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Akhir-akhir ieu, salaku hobi, kuring syuting ceramah ti psikolog anu kuring kenal. Kuring ngédit footage jeung nyebarkeun eta dina ramatloka kuring. Sabulan katukang, kuring ngagaduhan ide pikeun ngatur siaran 24/7 tina ceramah ieu dina YouTube. Jenis tematik "saluran TV" dedicated ka tumuwuhna pribadi.

Abdi terang kumaha ngadamel siaran biasa. Tapi kumaha carana sangkan eta mangrupakeun siaran file video? Sangkan ngajalankeun 24/7, fléksibel, sakumaha otonom sabisa, sarta dina waktos anu sareng teu gumantung sagala cara dina komputer imah kuring. Ieu naon kuring kungsi manggihan.

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Butuh sababaraha poé pikeun manggihan solusi. Kuring diajar seueur panglawungan sareng sagala rupa manual tanpa siaran kuring ngan saukur moal jalan. Sareng ayeuna yén prank éta suksés, kuring ngarasa peryogi ngabagi solusi kuring. Ieu kumaha artikel ieu mucunghul.

Pondokna, solusi ahir nyaéta kieu: VPS + ffmeg + skrip bash. Dina potongan, kuring ngajelaskeun léngkah-léngkah anu dilakukeun sareng nyarioskeun masalah anu dipendakan nalika ngatur siaran.

Lengkah 1 - dimana siaran asalna?

Dina awalna, perlu mutuskeun ti mana siaran bakal ti mana sareng sumberna. Hal kahiji anu datang ka pikiran éta tina komputer asal anjeun. Kumpulkeun pidéo kana daptar puter sareng mimitian maén dina pamuter pidéo mana waé. Teras candak gambar layar sareng disiarkeun ka YouTube. Tapi kuring ampir langsung nampik pilihan ieu kusabab ... Pikeun nerapkeun éta, anjeun kedah ngajaga komputer bumi anjeun terus hurung, anu hartosna noise tina coolers bahkan wengi sareng ningkat konsumsi listrik (+100-150 kWh unggal bulan). Sareng tétéla yén anjeun moal tiasa nganggo komputer asal anjeun salami siaran. sagala gerakan beurit bakal katingali dina siaran.

Teras kuring mimiti ningali ka sisi jasa awan. Kuring milarian jasa anu siap-siap dimana kuring tiasa unggah pidéo atanapi, contona, nyelapkeun tautan kana pidéo tina YouTube sareng éta sadayana bakal dibungkus kana hiji siaran non-stop. Tapi kuring henteu mendakan anu cocog. Meureun kuring henteu milarian ogé. Hiji-hijina hal anu cocog sareng fungsionalitas nyaéta restream.io, jasa anu ngabantosan siaran sakaligus ka sababaraha platform. Éta sigana ngamungkinkeun anjeun unggah pidéo anjeun nyalira. Tapi jasa ieu didamel pikeun tujuan anu béda-béda sareng aranjeunna ngarepkeun siaran éta ngan ukur sababaraha jam. Jigana lamun ngaliwatan layanan ieu bakal mungkin pikeun ngatur siaran round-the-jam, mangka bakal némbak kana puluhan, atawa malah ratusan dollar per bulan. Tapi kuring tetep hayang ngatur siaran boh haratis atawa kalayan investasi finansial minimal.

Ieu janten jelas yén pikeun siaran éta perlu atawa alat misah atawa malah hiji komputer misah. Kuring ieu pamikiran nuju hal kawas Raspberri Pi. Jeung naon? Anjeunna teu gaduh cooler. Kuring ngarékam pidéo dina flash drive, dipasang dina kabel Ethernet sareng ngantepkeun tempatna di tempat anu terpencil sareng disiarkeun. Pilihan. Tapi kuring henteu gaduh dewan sorangan atanapi pangalaman damel sareng éta, janten kuring ogé nampik pilihan ieu.

Hasilna, kuring datang di sakuliah sawala tangtu dimana aranjeunna ngabahas kreasi server sorangan siaran. Éta henteu persis anu kuring pilari, tapi kuring ngagaduhan ide utama - anjeun tiasa nganggo server! Dina diskusi éta, disarankeun pikeun ngagunakeun kombinasi VPS + nginx + OBS. Janten jelas yén kombinasi ieu ogé cocog sareng kuring. Hiji-hijina hal anu bingung kuring éta Kuring kungsi pernah administered server na eta seemed kuring nu gaduh dedicated server sorangan éta matak ngabingungkeun tur mahal. Kuring mutuskeun pikeun manggihan sabaraha eta bakal ngarugikeun hiji nyéwa server kalawan konfigurasi minimum jeung éta pleasantly reuwas.

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Harga dituduhkeun dina rubles Belarusian sarta ieu ngan crumbs. Pikeun ngarti, 8 rubles Belarusian kira 3.5 dollar atawa 240 rubles Rusia. Pikeun sabulan ngagunakeun komputer full-fledged nu dihurungkeun 24/7 sarta boga aksés Internet gancang. Kanggo sababaraha alesan, panemuan ieu janten gumbira pisan pikeun kuring sareng sababaraha dinten kuring leumpang ngurilingan bagja pisan, sapertos murangkalih anu mendakan rokét angkasa :)

Ku jalan kitu, kuring ngamangpaatkeun tawaran situs munggaran anu Google masihan kuring pikeun pamundut "VPS rental". Panginten aya langkung seueur solusi anggaran, tapi harga ieu cocog sareng kuring sareng kuring henteu ningali deui.

Nalika nyiptakeun server, anjeun tiasa milih sistem operasi anu bakal dijalankeun. Anjeun tiasa ngatur siaran dina salah sahiji sistem anu didaptarkeun sareng ngadamel pilihan dumasar kana kahoyong sareng kamampuan kauangan anjeun (pikeun server sareng Windows aranjeunna naroskeun biaya tambahan). Kuring milih CentOS. Kantun sabab kuring kungsi saeutik pangalaman jeung eta sateuacan.

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Lengkah 2 - setelan server

Hal kahiji anu anjeun peryogikeun saatos nyiptakeun server nyaéta nyambungkeun éta via SSH. Mimitina kuring nganggo PuTTy, tapi kuring mimiti nganggo Aplikasi Shell Secure, anu dijalankeun dina Google Chrome. Tétéla leuwih merenah pikeun kuring.

Saterusna kuring robah hostname nu, Nyetél sinkronisasi waktos on server, diropéa sistem, tinkered kalawan iptables ... sarta ngalakukeun kebat hal séjén, tapi teu sabab perlu. Kuring ngan kabetot dina nyetel server na eta digawé pikeun kuring. Abdi resep nalika éta dianggo :)

Ieu léngkah-léngkah anu anjeun kedah laksanakeun:

  1. Sambungkeun gudang EPEL.
  2. Nyetél hiji server FTP (kuring milih vsftp).
  3. Pasang ffmpeg.

Kuring moal masihan paréntah sacara rinci; parentah ieu rada konsép pikeun nepikeun rencana umum tindakan. Upami anjeun ngagaduhan kasulitan dina léngkah-léngkah éta, éta tiasa gancang direngsekeun ku ngagunakeun pamundut mesin pencari sapertos "CentOS connect EPEL" atanapi "CentOS install FTP server". Sareng dina tautan anu munggaran anjeun tiasa mendakan petunjuk léngkah-léngkah anu lengkep.

Janten, sakumaha anu kuring nyerat sateuacana, kuring peryogi kombinasi VPS + nginx + OBS. VPS - siap. Tapi patarosan mimiti timbul dina titik séjén. OBS nyaéta program siaran, Open Broadcaster Software. Sarta eta ngan jalan kalawan aliran i.e. contona, nyokot gambar tina Webcam sarta disiarkeun. Atawa ngarékam layar. Atawa siaran anu geus lumangsung dialihkeun ka situs séjén. Tapi kuring henteu gaduh aliran, kuring ngan ukur gaduh sakumpulan file pidéo anu kedah dilakukeun janten aliran.

Kuring mimiti ngagali arah ieu sareng mendakan ffmpeg. FFmpeg mangrupikeun sakumpulan perpustakaan sumber gratis sareng kabuka anu ngamungkinkeun anjeun ngarékam, ngarobih, sareng ngalirkeun data audio sareng video digital dina sababaraha format.

Sareng kuring kaget pisan sabaraha ffmpeg tiasa dilakukeun. Upami anjeun hoyong, éta bakal nimba sora tina pidéo. Upami anjeun hoyong, éta bakal motong kaluar sempalan video tanpa recoding. Upami anjeun hoyong, éta bakal ngarobah tina hiji format ka nu sejen. Sareng seueur, seueur deui. Nepi ka titik nu bisa nangtukeun file ka dinya, éta bakal ngarobah kana stream sarta ngirimkeun ka YouTube sorangan. Tuh, rante dirakit. Kabéh anu tetep nyaéta pikeun finalize nuances.

Lengkah 3 - setelan siaran

Urang nyieun siaran dina YouTube. Dina tahap ieu urang ngan ukur peryogi tautan sareng konci siaran. Dina screenshot handap aranjeunna disorot beureum.

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

saterusna unggah file video ka server, nu urang rencanana disiarkeun. Sabenerna, FTP ngan diperlukeun pikeun tahap ieu. Upami anjeun gaduh cara anu sanés pikeun unggah file ka server, maka anjeun henteu kedah nyetél server FTP.

Urang ngirimkeun aliran ka YouTube. Pikeun ngamimitian siaran, anjeun kedah ngajalankeun ffmpeg sareng sababaraha atribut. Ieu mangrupikeun paréntah anu paling pondok anu kuring kéngingkeun:

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

Decoding atribut-re - nunjukkeun yén file kedah dirobih janten aliran.

-i - nunjukkeun file mana anu kedah dicoo. Penting yén paréntahna diluncurkeun tina diréktori anu sami dimana file pidéo sorangan aya. Upami teu kitu, anjeun kedah netepkeun tautan mutlak kana file, sapertos /usr/media/lecture1.mp4.

-f - nyetél format file kaluaran. Dina hal kuring, tétéla yén ffmpeg ngarobih file kuring tina mp4 ka flv dina laleur.

Sareng dina tungtungna kami nunjukkeun data anu kami candak ti YouTube dina halaman setélan siaran, nyaéta. alamat nu Anjeun kudu nransper data, jeung kenop siaran, ku kituna siaran dipintonkeun husus dina saluran Anjeun.

Upami anjeun ngalakukeun sadayana leres, teras saatos ngajalankeun paréntah ieu, YouTube bakal ningali aliran anu dikirimkeun. Pikeun ngamimitian siaran, anjeun ngan kedah klik tombol "Start Broadcast" dina YouTube sorangan.

Lengkah 4 - tambahkeun otonomi

Wilujeng! Ayeuna anjeun terang kumaha ngamimitian siaran tina file pidéo. Tapi ieu henteu cekap pikeun siaran 24/7. Penting yén saatos pidéo anu munggaran réngsé diputer, pidéo salajengna langsung dimimitian, sareng nalika sadaya pidéo ditingalikeun, playback dimimitian deui.

Kuring datang nepi ka pilihan di handap ieu: nyieun file .sh nu kuring nulis paréntah pikeun tiap file video na di tungtung pisan dituduhkeun paréntah pikeun ngajalankeun skrip sarua deui. Hasilna nyaéta rekursi sapertos kieu:

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

Jeung, enya, éta digawé. Puas ku sorangan, kuring ngaluncurkeun siaran tés sareng angkat ka ranjang.

Isuk-isuk, kejutan anu teu pikaresepeun ngantosan kuring. Tétéla siaran éta ngan ukur sababaraha menit sareng réngsé ampir langsung nalika kuring mareuman komputer. Panaliti nunjukkeun yén paréntah anu diluncurkeun ku cara ieu dilaksanakeun nalika pangguna otorisasi dina server. Pas kuring dipegatkeun, paréntah anu kuring jalankeun diganggu. Pikeun nyegah ieu kajadian, éta cukup di hareup tim bash tambahkeun paréntah nohup. Ieu bakal ngidinan prosés ngajalankeun pikeun ngajalankeun paduli ayana anjeun.

Versi minimal ahir naskah sapertos kieu:

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 $

Dimana start.sh nyaéta file dimana naskah ieu ditulis. Sareng file ieu kedah aya dina diréktori anu sami sareng file video.

Nambahkeun tanda dollar dina tungtungna ngamungkinkeun prosés pikeun ngajalankeun di tukang jadi Anjeun bisa neruskeun migunakeun konsol nu tanpa interrupting siaran.

Bonus kalebet barang-barang di handap ieu:

  • Anjeun tiasa sacara manual pindah playback file. Jang ngalampahkeun ieu, anjeun kudu "maéhan" prosés ffmpeg ayeuna ngajalankeun. Saatos ieu, playback file salajengna tina daptar bakal otomatis dimimitian.
  • Video anyar bisa ditambahkeun kana siaran tanpa eureun siaran. Ngan unggah pidio ka server, tambahkeun paréntah pikeun ngajalankeun file ieu dina naskah, teras simpen. Éta hungkul. Dina babak playback salajengna, file anyar bakal disiarkeun sareng file anu lami.

Lengkah 5 - ngaropéa ffmpeg

Sacara prinsip, urang bisa geus dieureunkeun di dinya. Tapi kuring hayang nyieun siaran saeutik leuwih ramah pikeun pemirsa.

Hayu urang nyebutkeun hiji jalma indit ka siaran, mimitian nonton, resep jeung hayang lalajo ceramah ieu ti mimiti, tapi siaran teu ngidinan rewinding. Pikeun lalajo ceramah ti mimiti, hiji jalma bakal perlu buka ramatloka kuring sarta meunang rékaman tina ceramah dipikaresep. Kumaha anjeun tiasa ngawartosan kuliah mana anu dipikaresep ku anjeunna? Geus aya 16 ceramah dina situs sareng ngan ukur langkung seueur unggal minggu. Jigana malah kuring, anu syuting jeung ngédit sakabéh ceramah ieu, moal bisa nangtukeun ti sempalan acak nu ceramah éta. Ku alatan éta, unggal ceramah kudu kumaha bae ditunjuk.

Pilihan pikeun nambahkeun captions kana file video sumber dina program ngedit teu cocog kuring. Ieu diperlukeun pikeun mastikeun yén file aslina anu dipaké. Sangkan ngarojong siaran merlukeun gerakan awak saeutik-gancang ti kuring.

Tétéla yén ffmpeg tiasa ngabantosan abdi ogé. Cai mibanda atribut husus -vf, anu ngamungkinkeun téks disimpen dina pidéo. Pikeun nambihan téks kana pidéo, anjeun kedah nambihan sempalan ieu kana paréntah:

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

Katerangan parameterfontfile= - link kana file font. Tanpa ieu, caption moal ditambahkeun kana video. Cara panggampangna nyaéta nempatkeun file font dina polder anu sami sareng pidéo. Atawa anjeun bakal kudu nangtukeun jalur pinuh ka file.

text= - sabenerna, téks sorangan nu kudu ditempatkeun dina luhureun video.

fontsize= - ukuran font dina piksel.

fontcolor= - warna font.

borderw= - ketebalan outline sabudeureun téks dina piksel (Kuring boga téks bodas kalayan outline hideung 1 piksel kandel).

bordercolor= - warna outline.

x= и y= - koordinat téks. Titik 0;0 perenahna di belah kénca juru luhur. Koordinat kuring dipilih ku cara anu téks disimpen di belah kénca juru handap kalayan resolusi pidéo 1280x720 piksel.

Sigana mah kieu:

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Lengkah 6 - nangtukeun kualitas siaran

Sakitu wae, siaran tos siap. Siaran FFmpeg, file diputer, ayana mah teu diperlukeun pikeun siaran. Malah unggal ceramah ditandatanganan. Sigana mah kitu.

Tapi hiji deui nuansa surfaced - Kuring milih konfigurasi server minimum jeung teu narik nepi siaran. Konfigurasi server: 1 inti (siga 2.2 GHz), 1 gigabyte RAM, 25 GB SSD. Aya cukup RAM, tapi processor ieu ampir sakabéhna dimuat dina 100% (sarta di kali malah 102-103% :) Ieu ngarah ka katirisan siaran unggal sababaraha detik. Teu nice.

Anjeun ngan saukur tiasa nyandak konfigurasi anu langkung mahal sareng dua inti, untungna, kalayan téknologi awan, ngarobih konfigurasi server lumangsung ku mencét sababaraha tombol. Tapi kuring hayang pas dina kapasitas konfigurasi minimum. Kuring mimiti diajar dokuméntasi ffmpeg sareng enya, aya ogé setélan anu ngamungkinkeun anjeun ngatur beban dina sistem.

Kualitas gambar anu luhur tiasa dihontal ku dua cara: beban CPU anu luhur atanapi lalu lintas kaluar anu luhur. Tétéla yén beuki beban processor bisa nyandak on, nu kirang rubakpita channel bakal diperlukeun. Atanapi anjeun henteu tiasa ngamuat prosésor teuing, tapi teras anjeun peryogi saluran anu lega kalayan headroom lalu lintas anu ageung. Upami aya larangan dina prosésor sareng ukuran saluran kaluar / lalu lintas, maka anjeun kedah ngirangan kualitas gambar supados siaranna lancar.

server kuring boga aksés ka 10 Mbit / s channel lega. Lebar ieu pas. Tapi aya wates lalulintas - 1 TB per bulan. Ku alatan éta, dina raraga minuhan larangan lalulintas, aliran kaluar kuring teu kudu ngaleuwihan ~300 KB per detik i.e. Laju bit aliran kaluar teu kudu leuwih ti 2,5 Mbit/s. YouTube, ku jalan kitu, nyarankeun nyiarkeun dina bitrate ieu.

Pikeun ngatur beban dina sistem, ffmpeg ngagunakeun pendekatan anu béda. Saé ditulis ngeunaan ieu di dieu. Kuring tungtungna nganggo dua atribut: -crf и -preset.

Faktor Laju Konstan (CRF) - Ieu mangrupikeun koefisien anu anjeun tiasa nyaluyukeun kualitas gambar. CRF tiasa gaduh nilai tina 0 dugi ka 51, dimana 0 mangrupikeun kualitas file sumber, 51 mangrupikeun kualitas anu paling awon. Disarankeun ngagunakeun nilai ti 17 nepi ka 28, standarna nyaéta 23. Kalayan koefisien 17, pidéo bakal sacara visual idéntik sareng aslina, tapi sacara téknisna moal sami. Dokuméntasi ogé nyatakeun yén ukuran pidéo ahir, gumantung kana CRF anu ditangtukeun, robih sacara éksponénsial, nyaéta. ningkatkeun koefisien ku 6 titik bakal ganda bitrate tina video kaluar.

Upami nganggo CRF anjeun tiasa milih "beurat" gambar anu kaluar, teras nganggo prasetél (-prasetél) Anjeun bisa nangtukeun sabaraha beurat processor bakal dimuat. Atribut ieu ngagaduhan parameter di handap ieu:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - nilai standar
  • slow
  • slower
  • veryslow

The "gancang" parameter dieusian, nu leuwih luhur beban dina processor bakal.

Kuring mimiti milih hiji prasetél anu dasarna teuing tangguh pikeun processor kuring, lajeng leuwih finely dipilih beban maké CRF. Dina kasus kuring, prasetél damel fast, sareng pikeun crf kuring netepkeun nilai 24.

kacindekan

Éta hungkul. Paréntah ahir pikeun ngamimitian siaran nyaéta kieu:

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

Aya ngan dua titik undescribed ditinggalkeun di dieu:

1) -c:v libx264 - nangtukeun codec khusus pikeun damel sareng file sumber.
2) -g 3 - indikasi eksplisit tina jumlah pigura konci. Dina hal ieu, éta dieusian yén unggal pigura katilu kudu pigura konci. Nilai standar boh 5 atanapi 8, tapi YouTube sumpah sareng naroskeun sahenteuna 3.

Anjeun tiasa ningali naon kualitas siaran tétéla di dieu.

Beban dina server nyaéta kieu:

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Siarkeun pidéo anjeun dina YouTube XNUMX/XNUMX

Dumasar data ngawaskeun, jelas yén beban prosésor berkisar antara 70% dugi ka 95% sareng salami saminggu siaran henteu kantos ngahontal 100%. Ieu ngandung harti yén kalawan setélan ieu processor cukup.

Ku ngamuat disk, abdi tiasa nyebatkeun yén éta ampir henteu dimuat sareng HDD biasa kedah cekap pikeun siaran.

Tapi jumlah lalulintas kaluar worries kuring. Tétéla yén aliran kaluar kuring rentang ti 450 nepi ka 650 KB per detik. Dina sabulan ieu bakal ngeunaan 1,8 terabytes. Anjeun panginten kedah mésér lalu lintas tambahan atanapi ngalih ka konfigurasi sareng dua inti sabab... Abdi henteu hoyong ngirangan kualitas gambar.

***

Hasilna, kuring bakal nyebatkeun yén nyetél siaran sapertos ti mimiti peryogi sakitar 1-2 jam. Sumawona, unggah pidéo ka pangladén bakal seueur waktos.

Peluncuran siaran sapertos kitu henteu menerkeun dirina salaku alat pamasaran. Panginten, upami urang ningkatkeun pandangan supados algoritma YouTube nyandak siaran ieu sareng ngawitan aktip nunjukkeun éta dina rekomendasi, maka aya anu bakal jalan. Dina kasus kuring, dina 16 poé siaran kontinyu ieu diawaskeun 58 kali.

Teu nanaon. Siaran éta cocog sacara harmonis dina halaman utama halaman wéb kuring. Ieu masihan kuring kasempetan pikeun gancang ngabentuk pamadegan sorangan ngeunaan dosen jeung ceramah sorangan.

Sareng hiji waktos. Penting yén siaran éta henteu ngalanggar hak cipta saha waé, upami henteu éta bakal diblokir. Kuring tenang ngeunaan siaran kuring sabab ... Kuring sacara khusus milih sisipan musik kalayan panggunaan gratis, sareng panulis eusina linggih di komputer caket dieu sareng henteu pisan ngalawan kuring nganggo eusina :)

Tapi upami anjeun gaduh radio anu diputer di latar tempat dina siaran anjeun, atanapi anjeun nganggo lagu karesep anjeun nalika ngédit, atanapi nyandak sekuen pidéo tina pidéo musik, séri TV atanapi pilem anu populer, siaran anjeun résiko. Éta ogé penting yén siaran mawa sahenteuna beban semantik minimal, disebutkeun eta bisa jadi diblokir salaku spam.

***

Sakitu anu abdi gaduh. Kuring miharep manual ieu bakal ngawula ka batur ogé. Nya, upami anjeun gaduh anu badé nambihan, nyerat, kuring bakal resep maca tambihan sareng klarifikasi kana tulisan éta.

sumber: www.habr.com

Tambahkeun komentar