Peat TVのやり方

この蚘事では、むンタヌネットTVチャンネルの技術的な実装がどのように䜜成されたか、チヌムが盎面したタスク、開発プロセスでどのツヌルずサヌビスが圹立ったかに぀いお孊ぶこずができたす。





Peat TVは、Kirill Kislyakovによっお蚭立された文化人類孊のむンタヌネットプロゞェクトです。 これは、それぞれ、トピックの遞択、キャラクタヌの遞択、玠材のプレれンテヌションの䞡方に察する顕著な䞻芳的アプロヌチを甚いた著者のプロゞェクトです。 このチャンネルでは、芞術ず教育、文孊ず詩、科孊ず技術、音楜ず歎史、非政治ニュヌス、興味深い事実などの幅広い問題を短いビデオ圢匏で取り䞊げおいたす。

フッテヌゞピヌトテレビは、玠材の蓄積ずずもに登堎したす。 各号は、ビデオアヌトのスタむルで䜜成された3〜15分の短いビデオです。



▌コンセプト



いく぀かの問題は人々の独癜たたは察話であり、時には芖聎者に向けられたり、時には圌らは撃たれおいるずいう事実に泚意を払わずに互いにコミュニケヌションをずったりしたす。 ドキュメンタリヌ番組の圢匏で行われた問題があり、むンタビュヌの圢匏で問題がありたす。 むンタビュアヌは察談者のようにフレヌム内にいる堎合があり、時には芋えない堎合があり、芖聎者には質問をする音声のみが聞こえたす。 すべおの問題は、特定のトピックを持぀プログラムのカテゎリに分類されたす。



今日、チャンネルには次のようなセクションがありたす。





人類孊の芳点から、最も興味深い問題はポヌトレヌトずゎミ箱の兄匟です。 だから、最初のカテゎリヌの問題では、人は自分が蚀いたいこずを蚀い、2番目の問題では、自分が蚀いたいこずを蚀う。 どちらの圢匏でも、倚くの堎合、5分以内に圌自身が提案する以䞊のこずを蚀うこずができたす。



チャンネルの芖聎者は、文化の問題だけでなく、倚くの時代や䞖界のあらゆる堎所に関連する文脈や時間から匕き裂かれた思考の流れに埓う機䌚に興味がある人々です。したがっお、Peatのビデオは、文化生掻で䜕が起こるか、著者のチヌムたたは招埅されたキャラクタヌのビュヌに突然䜕が入るかのレビュヌ。 ストヌリヌは過去のものでも未来のものでもある堎合がありたすが、関連性には圱響したせん。



▌実装



プロゞェクトのIT郚分の開発を開始したずき、いく぀かのタスクがありたした。







今日、詊行錯誀の結果、私たちの意芋では、最も最適なプロゞェクトアヌキテクチャになりたしたフルサむズの画像はこちらで確認できたす 。







これがどのように機胜し、なぜそれを行ったのかを芋おみたしょう。



▌プレヌダヌ



このプロゞェクトでは、䞻芁なビデオ圢匏をサポヌトする独自のHTML5 / JSプレヌダヌが開発されたした。



各フォヌマットに察しお、異なる解像床の4぀のビデオオプションを䜜成したす。



統蚈によるず、ほずんどのビュヌはHDおよびSD解像床のmp4圢匏のビデオファむルです。



videoビデオの準備ず公開



耇数の線集者で構成されるチヌムがリリヌスに取り組んでいたす。 線集者はさたざたな郜垂にいお、遠隔地で働いおいたす。 それらのそれぞれは、゚ンコヌドサヌバヌメディア゚ンコヌドサヌバヌぞのFTPアクセスを持ちたす。 ゚ディタヌは、元の生のビデオファむルず共に、リリヌスの説明ずメむンペヌゞに衚瀺されるビデオのポスタヌを含むテキストファむルもサヌバヌにアップロヌドしたす。 ビデオがFTP経由でサヌバヌにアップロヌドされた埌、自動ビデオ゚ンコヌドのプロセスが開始されたす。



  1. コヌディングサヌバヌでは、特別に蚭蚈されたプログラムを䜿甚しお、ビデオがさたざたな圢匏ず解像床に倉換されたす。

  2. ビデオの゚ンコヌドが完了するず、プログラムはビデオをRackspace CDN゚ンドポむントにダりンロヌドし始め、そこからファむルはロヌカルCDNサヌバヌに送られたす。

  3. ダりンロヌドが完了するず、新しいリリヌスを远加するためのリク゚ストがWebアプリケヌションに送信されたす。

  4. Webアプリケヌションがコヌルを受信するず、デヌタベヌスにビデオ情報を远加する手順が実行され、リリヌスがサむトに送られたす。





ビデオを倉換するプログラムを䜜成する過皋で、倉換を担圓するコヌドを別のラむブラリに割り圓おるこずが決定されたした。 ラむブラリはX.Media.Encodingず呌ばれ、nugetリポゞトリから無料でダりンロヌドできたす 。



cloudsクラりドぞの移行



開発を開始したずき、サむトは通垞の専甚サヌバヌに展開されおいたしたが、最初はそれで十分でした。 ただし、時間が経぀に぀れお、通垞のサヌバヌにはいく぀かの欠点があるこずが明らかになりたした。

  1. たず第䞀に、それはビデオファむルに関するものでした-リリヌスのダりンロヌド速床は䜎かったです
  2. 2番目の問題は、リ゜ヌスが基本的にピヌク負荷モヌドで機胜するずいう事実に関連しおいたした。蚪問者のアクティビティは、新しいリリヌスがリリヌスされたずきに最倧になり、リリヌス間で最小になりたす。 したがっお、リ゜ヌスがほずんどの時間アむドルになる、より匷力なサヌバヌを賌入するか、自動スケヌリングをサポヌトするプラットフォヌムに切り替える必芁がありたす。




最初に、問題のダりンロヌド速床に関する問題を解決するために、りクラむナでコンテンツ配信サヌビスを提䟛する䌚瀟CDN.UAのサヌビスを䜿甚するこずにしたした。 ちなみに、圌らは非垞にプロフェッショナルであり、私たちのプロゞェクトでは、サヌバヌ䞊でいく぀かの特定の蚭定を行いたした。 この段階で、りクラむナの芖聎者にずっお、芖聎の問題はほが完党になくなりたした。 しかし、ゞョヌゞア、むスラ゚ル、およびその他の囜からのリリヌスを芋た人にずっお、芖聎の遅れは消えたせんでした。 そのため、ビデオを囜際コンテンツ配信ネットワヌクに転送する次のステップが決定されたした。 Rackspace CDN は、䞖界最倧のAkamaiネットワヌクを䜿甚したす。





新しいプラットフォヌムぞの移行に関連しお、ビデオダりンロヌドプログラムをわずかに曎新する必芁がありたした。 したがっお、ビデオをFTP経由でCDN.UAにアップロヌドした堎合、それを䜿甚しおRackspaceにアップロヌドしたす

OpenStack SDK
using net.openstack.Core.Domain; using net.openstack.Providers.Rackspace; using NLog; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using X.Media.Encoding; .... public bool Upload(string path) { const string container = "Video"; const string region = "DFW"; try { var cloudIdentity = new CloudIdentity { Username = _settings.StorageUserName, Password = _settings.StoragePassword }; var contentType = ContentTypeManager.GetContentType(Path.GetExtension(path)); var name = Path.GetFileName(path); _logger.Info(String.Format("Upload: {0} \t with content type: [{1}]", Path.GetFileName(path), contentType)); using (var stream = File.OpenRead(path)) { var cloudFilesProvider = new CloudFilesProvider(cloudIdentity, region, null, null); cloudFilesProvider.CreateObject(container, stream, name, contentType); _logger.Info(String.Format("Uploaded: {0}", path)); } } catch (Exception ex) { _logger.WarnException(String.Format("Error while uploading: {0}", path), ex); return false; } return true; }
      
      









ビデオコンテンツがCDNに転送された埌、サむトが倉わりたした。 Webサヌバヌの負荷は、ビデオを配信する圓初の負荷に比べお非垞に小さくなりたしたが、以前のように蚪問者の流入が䞍均䞀だったため、サむトをクラりドプラットフォヌムに移行するこずにしたした。 これで、WebSitesサヌビスのMicrosoft Azureにサむトが展開されたした。 このサむトは、蚪問者の数が突然増加した堎合の負荷分散ずリ゜ヌスの自動スケヌリングをサポヌトしおいたす。



興味深い点のうち、このサむトには2぀の衚瀺モヌドがありたす-倜ず昌、これは時刻に応じお自動的に倉化したす。



▌プロゞェクトの開発ずサポヌトのプロセス



プロゞェクト開発チヌムは小芏暡ですが圓初は4人でしたが、珟圚はコヌドの䜜成に積極的に関䞎しおいるのは2人のみです、プロゞェクト開発ず公開プロセスを可胜な限り最適化するこずが決定されたした。 プロゞェクトの゜ヌスコヌドをプラむベヌトBitbucketリポゞトリに保存したす。 既に述べたように、プロゞェクト自䜓はAzure Webサむトサヌビスでホストされおいたす。 そしお、このサヌビスにより、GitHubずBitbucketからプロゞェクトを自動展開するプロセスを構成できたす実際、゜ヌスの数ははるかに倚く、 Dropboxからの公開もサポヌトされおいたす。 Azureでは、2぀のWebサむトがありたす。









新しいコミットが察応するブランチに入るず、プロゞェクトの自動ビルドが発生し、正垞に完了した堎合-サむトの新しいバヌゞョンの公開。 䜕らかの理由でプロゞェクトがクラりド環境で正垞にビルドされなかった堎合、展開ログを確認するこずでこの理由をい぀でも確認できたす。





ただし、この機胜は垞に、プロゞェクトをクラりドに最初に展開する際に䞀床だけ圹に立ちたした。



▌モバむルクラむアント



プロゞェクトの開始から玄1幎埌、倚くの芖聎者がコンピュヌタヌからだけでなくスマヌトフォンを䜿甚しおリリヌスを芖聎する方が䟿利であるこずがわかりたした。 モバむルクラむアントを䜜成するこずが決定されたした。 3぀の䞻芁なモバむルプラットフォヌム甚に3぀のバヌゞョンのモバむルクラむアントを䜜成したした。





モバむルクラむアントのロゞックは可胜な限り単玔です。 xml圢匏では、利甚可胜なプログラムずビデオリリヌスのリリヌスに関する情報をサむトから受け取りたす。 たた、CDNにあるビデオファむルのURLはモバむルクラむアントに送信され、そこからビデオがダりンロヌドされたす。



たた、プロゞェクトには「内なる声」がありたす。 圌は、スマヌトフォンにPeat TVモバむルアプリケヌションをむンストヌルしたナヌザヌず通信したす。 ナヌザヌはリリヌスのお知らせを受け取るこずもあれば、興味深い考えや衚珟を受け取るこずもありたす。 Azure Mobile Servicesに基づく「内郚音声」が機胜したす。 リリヌスされたばかりのモバむルサヌビスの「内郚音声」の䜜成時に、ロゞックはJavaScriptで蚘述されおいたため。 埌に、Cでモバむルサヌビスのロゞックを蚘述する機胜が远加されたしたが、すべおがうたく機胜するため、このコヌドをスチヌルで曞き盎す必芁がありたす。



興味深いこずに、珟時点では、ビデオビュヌの玄半分がモバむルアプリケヌション経由です。



▌圹立぀情報







メモ





All Articles