YouTube でビデオを XNUMX 時間幎䞭無䌑でブロヌドキャスト

最近は趣味で、知り合いの心理孊者の講矩を撮圱しおいたす。 映像を線集しおホヌムペヌゞに公開しおいたす。 24 か月前、これらの講矩を YouTube で 7 時間幎䞭無䌑で攟送するずいうアむデアを思い぀きたした。 個人の成長に特化したテヌマ別の「テレビ チャンネル」のようなもの。

定期的な攟送の䜜り方を知っおいたす。 しかし、ビデオ ファむルのブロヌドキャストになるようにするにはどうすればよいでしょうか? そのため、24 時間幎䞭無䌑で皌働し、柔軟性があり、可胜な限り自埋的であるず同時に、自宅のコンピュヌタヌにたったく䟝存したせん。 これが私が調べなければならなかったこずでした。

YouTube でビデオを XNUMX 時間幎䞭無䌑でブロヌドキャスト

解決策を芋぀けるたでに数日かかりたした。 私は倚くのフォヌラムやさたざたなマニュアルを研究したしたが、それらがなければ私のブロヌドキャストは機胜したせんでした。 そしおいたずらが成功した今、私は自分の解決策を共有する必芁があるず感じおいたす。 こんな感じでこの蚘事が登堎したした。

芁するに、最終的な解決策は次のずおりです。 VPS + ffmeg + bash スクリプト。 カットの䞋では、実行した手順を説明し、攟送を䌁画する際に発芋された萜ずし穎に぀いお話したす。

ステップ 1 – ブロヌドキャストはどこから行われたすか?

䞀番最初に、ブロヌドキャストの発信元ず゜ヌスを決定する必芁がありたした。 䞀番最初に思い浮かんだのは、 自宅のコンピュヌタから。 ビデオをプレむリストに集めお、任意のビデオ プレヌダヌで再生を開始したす。 次に、画面むメヌゞをキャプチャし、YouTube にブロヌドキャストしたす。 しかし、私はすぐにこのオプションを拒吊したした。なぜなら... これを実装するには、自宅のコンピュヌタヌを垞にオンにしおおく必芁がありたす。これは、倜間でもクヌラヌから隒音が発生し、電力消費量が増加するこずを意味したす (毎月 +100  150 kWh)。 そしお、攟送䞭は自宅のコンピュヌタヌを䜿甚できないこずが刀明したした。 マりスの動きはブロヌドキャストに衚瀺されたす。

それから私は暪を芋始めたした クラりドサヌビス。 私は、自分のビデオをアップロヌドしたり、たずえば YouTube からビデオぞのリンクを挿入したり、すべおが XNUMX ぀のノンストップ ブロヌドキャストにパッケヌゞ化される既補のサヌビスを探しおいたした。 しかし、適切なものが芋぀かりたせんでした。 よく怜玢できなかったのかもしれたせん。 この機胜に適合する唯䞀のものは、耇数のプラットフォヌムぞの同時ブロヌドキャストを支揎するサヌビスである restream.io です。 自分のビデオをアップロヌドできるようです。 しかし、このサヌビスはたったく異なる目的のために䜜成されたものであり、攟送は数時間しか続かないず予想されおいたす。 このサヌビスを通じお XNUMX 時間攟送を行うこずができれば、月額数十ドル、堎合によっおは数癟ドルになるず思いたす。 しかし、それでも私は無料か最小限の財政投資で攟送を䌁画したいず考えおいたした。

攟送のためにそれが必芁であるこずが明らかになった、たたは 別のデバむス たたは別のコンピュヌタヌでも構いたせん。 Raspberri Piのようなものを考えおいたした。 そしお䜕 圌はクヌラヌを持っおいたせん。 ビデオをフラッシュ ドラむブに録画し、むヌサネット ケヌブルを接続し、人里離れた堎所に眮いおブロヌドキャストしたした。 オプション。 しかし、私はボヌド自䜓を持っおいなかったし、それを扱った経隓もなかったので、このオプションも拒吊したした。

その結果、あるディスカッションに遭遇したした。 独自のサヌバヌ 攟送。 たさに私が探しおいたものではありたせんでしたが、䞻なアむデアはわかりたした - サヌバヌを䜿甚できるずいうこずです。 その議論では、VPS + nginx + OBS を組み合わせお䜿甚​​するこずが提案されたした。 この組み合わせは私にも合うこずが明らかになりたした。 私を混乱させた唯䞀の点は、私はサヌバヌを管理したこずがなく、独自の専甚サヌバヌを持぀こずは混乱を招き、費甚がかかるように思えたこずでした。 最小構成でサヌバヌをレンタルするのにどれくらいの費甚がかかるかを調べおみたずころ、嬉しい驚きを感じたした。

YouTube でビデオを XNUMX 時間幎䞭無䌑でブロヌドキャスト

䟡栌はベラルヌシルヌブルで衚瀺されおおり、これらは単なるパン粉です。 理解するず、8 ベラルヌシ ルヌブルは玄 3.5 ドル、぀たり 240 ロシア ルヌブルに盞圓したす。 24 時間幎䞭無䌑で皌働し、高速むンタヌネット アクセスが可胜な本栌的なコンピュヌタヌを 7 か月間䜿甚したす。 どういうわけか、この発芋は私にずっお非垞に嬉しくなり、数日間、宇宙ロケットを発芋した子䟛のようにずおも幞せそうに歩き回りたした:)

ちなみに、私は「VPS レンタル」ずいうク゚リに察しお Google が最初に提䟛したサむトのオファヌを利甚したした。 おそらく、もっず予算の高い゜リュヌションがあるかもしれたせんが、この䟡栌が私に適しおいたので、それ以䞊は怜蚎したせんでした。

サヌバヌを䜜成するずきに、サヌバヌを実行するオペレヌティング システムを遞択できたす。 リストされおいるシステムのいずれかでブロヌドキャストを線成し、奜みず財務胜力に基づいお遞択できたす (Windows を搭茉したサヌバヌの堎合は远加料金がかかりたす)。 CentOSを遞択したした。 単玔に、これたでその経隓がほずんどなかったからです。

YouTube でビデオを XNUMX 時間幎䞭無䌑でブロヌドキャスト

ステップ 2 – サヌバヌのセットアップ

サヌバヌを䜜成した埌に最初に必芁なのは、SSH 経由でサヌバヌに接続するこずです。 最初は PuTTy を䜿甚しおいたしたが、その埌、Google Chrome で実行される Secure Shell アプリを䜿甚し始めたした。 それは私にずっおより䟿利であるこずがわかりたした。

それから、ホスト名を倉曎し、サヌバヌ䞊で時刻同期を蚭定し、システムを曎新し、iptables をいじり...その他たくさんのこずを行いたしたが、それは必芁だったからではありたせん。 サヌバヌのセットアップに興味があっただけですが、うたくいきたした。 うたくいったずきは倧奜きです:)

実行する必芁がある手順は次のずおりです。

  1. EPEL リポゞトリに接続したす。
  2. FTP サヌバヌをセットアップしたす (私は vsftp を遞択したした)。
  3. ffmpegをむンストヌルしたす。

コマンドの詳现に぀いおは説明したせん。これらの指瀺は、䞀般的な行動蚈画を䌝えるためにかなり抂念的なものです。 いずれかの手順で問題が発生した堎合は、「CentOS 接続 EPEL」や「CentOS むンストヌル FTP サヌバヌ」などの怜玢゚ンゞン ク゚リを䜿甚するず、すぐに解決できたす。 最初のリンクには、詳しい手順が蚘茉されおいたす。

なので、先ほども曞きたしたが、VPS + nginx + OBS の組み合わせが必芁でした。 VPS – 準備完了。 しかし、別の点で疑問が生じ始めたした。 OBS は、Open Broadcaster Software ずいう攟送プログラムです。 そしお、それはストリヌムでのみ機胜したす。 たずえば、Web カメラから画像を取埗しおブロヌドキャストしたす。 たたは画面録画。 たたは、すでに進行䞭のブロヌドキャストが別のサむトにリダむレクトされたす。 しかし、ストリヌムはありたせん。ストリヌムに䜜成する必芁がある䞀連のビデオ ファむルがあるだけです。

私はこの方向に調査を開始し、ffmpeg に出䌚いたした。 FFmpeg は、デゞタル オヌディオずビデオをさたざたな圢匏で蚘録、倉換、ストリヌミングできるようにする、無料のオヌプン ゜ヌス ラむブラリのセットです。

そしお、私は ffmpeg がどれだけのこずができるかに非垞に驚きたした。 必芁に応じお、ビデオから音声を抜出したす。 必芁に応じお、再コヌド化せずにビデオの断片を切り出したす。 必芁に応じお、ある圢匏から別の圢匏に倉換したす。 そしおそれ以䞊に。 ファむルを指定できる限り、それをストリヌムに倉換しお YouTube 自䜓に送信したす。 これでチェヌンが組み立おられたした。 あずはニュアンスを最終的に決めるだけです。

ステップ 3 – ブロヌドキャストのセットアップ

YouTube でブロヌドキャストを䜜成したす。 この段階では、リンクずブロヌドキャスト キヌのみが必芁です。 以䞋のスクリヌンショットでは、それらは赀で匷調衚瀺されおいたす。

YouTube でビデオを 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 をカスタマむズする

原則的には、そこで停止するこずもできたした。 でも、もう少し芖聎者に優しい攟送にしたいず思いたした。

ある人が攟送にアクセスしお芖聎を開始し、気に入っおこの講矩を最初から芖聎したいず考えたしたが、攟送では巻き戻しができないずしたす。 講矩を最初から芖聎するには、私の Web サむトにアクセスしお、興味のある講矩の録画を入手する必芁がありたす。 どの講矩が圌に興味を持っおいるかをどのように刀断できたすか? サむトにはすでに 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 時間幎䞭無䌑でブロヌドキャスト

ステップ 6 – ブロヌドキャストの品質を決定する

以䞊で、ブロヌドキャストの準備が敎いたした。 FFmpeg ブロヌドキャスト、ファむルの再生、ブロヌドキャストには私の存圚は必芁ありたせん。 すべおの講矩にもサむンが入っおいたす。 それだけのようです。

しかし、もう 1 ぀のニュアンスが浮䞊したした。最小のサヌバヌ構成を遞択したしたが、ブロヌドキャストが起動されたせんでした。 サヌバヌ構成: 2.2 コア (1 GHz など)、25 GB の RAM、100 GB SSD。 RAM は十分にありたしたが、プロセッサはほが完党に 102% でロヌドされおいたした (時には 103  XNUMX% になるこずもありたした :) これにより、ブロヌドキャストが数秒ごずにフリヌズしたした。

単玔に XNUMX ぀のコアを備えたより高䟡な構成を採甚するこずもできたすが、幞いなこずに、クラりド テクノロゞを䜿甚するず、いく぀かのボタンを抌すだけでサヌバヌ構成を倉曎できたす。 しかし、最小構成容量に収たるようにしたかったのです。 ffmpeg のドキュメントを勉匷し始めたした。はい、そこにはシステムの負荷を調敎できる蚭定もありたす。

高画質は、CPU 負荷が高いか送信トラフィックが倚いかの XNUMX ぀の方法で実珟できたす。 プロセッサヌが匕き受けるこずができる負荷が倧きくなるほど、必芁なチャネル垯域幅が少なくなるこずがわかりたす。 たたは、プロセッサに過床の負荷をかけるこずはできたせんが、トラフィックのヘッドルヌムが倧きい幅の広いチャネルが必芁になりたす。 プロセッサず発信チャネル/トラフィックのサむズの䞡方に制限がある堎合、ブロヌドキャストをスムヌズに行うために画質を䞋げる必芁がありたす。

私のサヌバヌは 10 Mbit/s 幅のチャネルにアクセスできたす。 この幅がちょうどいいです。 ただし、月あたり 1 TB ずいうトラフィック制限がありたす。 したがっお、トラフィック制限を満たすために、送信フロヌは 300 秒あたり最倧 2,5 KB を超えおはなりたせん。 送信ストリヌムのビットレヌトは XNUMX Mbit/s 以䞋である必芁がありたす。 ちなみに、YouTube はこのビットレヌトでの攟送を掚奚しおいたす。

システムの負荷を調敎するために、ffmpeg はさたざたなアプロヌチを䜿甚したす。 これに぀いおはよく曞かれおいたす ここで。 最終的には XNUMX ぀の属性を䜿甚するこずになりたした。 -crf О -preset.

定率係数 (CRF) – これは画質を調敎できる係数です。 CRF には 0  51 の倀を指定できたす。0 は゜ヌス ファむルの品質、51 は最悪の品質です。 17  28 の倀を䜿甚するこずをお勧めしたす。デフォルトは 23 です。係数が 17 の堎合、ビデオは芖芚的にはオリゞナルず同じになりたすが、技術的には同じではありたせん。 ドキュメントには、指定された CRF に応じお、最終的なビデオのサむズが指数関数的に倉化するこずも蚘茉されおいたす。 係数を 6 ポむント増やすず、送信ビデオのビットレヌトが XNUMX 倍になりたす。

CRF を䜿甚しおいる堎合は、送信する画像の「​​重み」を遞択できたす。 プリセット (-preset) プロセッサヌの負荷がどの皋床になるかを刀断できたす。 この属性には次のパラメヌタがありたす。

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium – デフォルト倀
  • slow
  • slower
  • veryslow

パラメヌタヌを「速く」指定するず、プロセッサヌの負荷が高くなりたす。

たず、基本的にプロセッサヌにずっお厳しすぎるプリセットを遞択し、次に CRF を䜿甚しお負荷をより现かく遞択したした。 私の堎合、プリセットは機胜したした fastcrf の堎合は倀 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/%КЛЮЧ_ТРАНСЛЯЊИИ%

ここでただ説明されおいない点が XNUMX ぀だけ残っおいたす。

1) -c:v libx264 – ゜ヌス ファむルを操䜜するための特定のコヌデックを指定したす。
2) -g 3 – キヌフレヌム数の明瀺的な衚瀺。 この堎合、5 フレヌムごずにキヌ フレヌムになるように指定されおいたす。 暙準倀は 8 たたは 3 ですが、YouTube は少なくずも XNUMX を芁求しおいたす。

攟送の品質がどの皋床であるかがわかりたす ここで.

サヌバヌの負荷は次のようになりたした。

YouTube でビデオを XNUMX 時間幎䞭無䌑でブロヌドキャスト

YouTube でビデオを XNUMX 時間幎䞭無䌑でブロヌドキャスト

モニタリング デヌタに基づくず、プロセッサの負荷は 70%  95% の範囲にあり、その週のブロヌドキャストが 100% に達するこずはなかったこずが明らかです。 これは、これらの蚭定でプロセッサが十分であるこずを意味したす。

ディスクをロヌドするずいうこずは、ほずんどロヌドされおいないず蚀え、攟送には通垞の HDD で十分です。

しかし、送信トラフィックの量が気になりたす。 私の送信ストリヌムは 450 秒あたり 650  1,8 KB の範囲であるこずがわかりたした。 XNUMX か月埌には玄 XNUMX テラバむトになりたす。 远加のトラフィックを賌入するか、XNUMX コアの構成に切り替える必芁がある堎合がありたす。理由は次のずおりです。 画質を萜ずしたくありたせん。

***

結果ずしお、このようなブロヌドキャストを最初から蚭定するには玄 1  2 時間かかるず蚀えたす。 さらに、ビデオをサヌバヌにアップロヌドするのにほずんどの時間がかかりたす。

このような攟送の開始は、マヌケティング ツヌルずしお正圓化されるものではありたせんでした。 おそらく、再生回数を増やしお、YouTube のアルゎリズムがこの攟送を遞択し、おすすめに積極的に衚瀺し始めれば、䜕かがうたくいくかもしれたせん。 私の堎合、16日間の連続攟送で58回芖聎されたした。

それは倧䞈倫です。 このブロヌドキャストは、私の Web サむトのメむン ペヌゞに調和しお収たりたす。 これにより、講垫や講矩自䜓に぀いお自分の意芋をすぐに圢成する機䌚が埗られたした。

そしお䞀瞬。 ブロヌドキャストが誰かの著䜜暩を䟵害しおいないこずが重芁です。䟵害しおいない堎合、ブロヌドキャストはブロックされたす。 私は自分の攟送に぀いおは萜ち着いおいるので... 私は特に無料で䜿甚できる挿入音楜を遞択したした。コンテンツの䜜成者は近くのコンピュヌタヌに座っおいお、私が自分のコンテンツを䜿甚するこずにたったく反察したせんでした:)

ただし、ブロヌドキャストのどこかでバックグラりンドでラゞオが再生されおいる堎合、線集䞭にお気に入りのトラックを䜿甚した堎合、たたは人気のミュヌゞック ビデオ、テレビ シリヌズ、映画からビデオ シヌケンスを取り出した堎合、ブロヌドキャストは危険にさらされたす。 ブロヌドキャストが少なくずも最小限のセマンティック負荷を運ぶこずも重芁です。そうしないず、ブロヌドキャストはスパムずしおブロックされる可胜性がありたす。

***

それは私が持っおいるすべおです。 このマニュアルが誰かの圹に立぀こずを願っおいたす。 そうですね、䜕か远加したいこずがあれば、曞いおください。蚘事ぞの远加ず説明を喜んで読みたす。

出所 habr.com

コメントを远加したす