オンラインコースを記録するスタジオを作成した方法

つまり、Stepicは、各ユーザーが独自のオンラインコースを作成して投稿できるプラットフォームです。 昨年、StapikはCourseraのバイオインフォマティクスアルゴリズムコースで、プログラミングおよびデータ分析タスクをテストするためのエンジンとして使用されました。



しばらくして、ロシアでのオンライン教育の発展を促進する価値があることに気付きました。 これには何が必要ですか? 優れた教師と、ビデオを録画できる優れたスタジオ。 プログラミングが大好きなので、プログラミングに関連する何らかの方法でコースを開始することにしました。これらは、コンピュータサイエンスセンターの教師によるアルゴリズムとデータ構造オペレーティングシステム 、C ++言語です。



そして、しばらくして、私たちはより良いレコーディングスタジオがあればあるほど、私たち全員と教育全般にとってより良いことに気づきました。 そのため、Stepicが現在ビデオコースとその制作に関して行っている小さな開発をすべて、オープンソースに伝え、公開し、公開することにしました。



スタジオと機器



この図は、ビデオ講義を記録するための自動化されたプロセスを示しています。



画像



車輪を再発明するのではなく、そのようなプロジェクトがどのように海外で装備されているかを見ることにしました。 出発点はEMOOC 2014が冬に開催されたスイスEPFLのスタジオで、EPFLのスタジオに関するビデオはこちらでご覧いただけます



必要な機器のリストが編集されました(ロシアの概算価格が示されています):

  1. 背景用に2ラック(3'000ルーブル)
  2. 4つの光源用の4つのラック(1'500ルーブルずつ)
  3. 背景光ごとに5つの省エネ冷電球を備えた2つのFalconEyes光源(5'500ルーブルずつ)
  4. 講師の照明用の冷電球を備えた2つの光源(DFL-C556)(1個あたり11'000ルーブル)
  5. 白と緑の背景(1'500ルーブルずつ)
  6. ビデオカメラCanon XA25(90'000 rub。)
  7. Libec TH-950DVカメラ用三脚(10000ルーブル)
  8. マイクオーディオテクニカAT2031(8'000ルーブル)、カメラに刺さる
  9. マイクスタンドSamson MB1ミニブームスタンド(2'500摩擦)
  10. マイクマウントAT8410aマイクショックマウント(3'500摩擦)
  11. Wacom Cintiq 24HDインタラクティブペンディスプレイDTK-2400(120'000ルーブル)-スライド上に手で描くことができるモニター
  12. Apple Mac mini:i5、2.5HGz(2012年後半)(〜25'000ルーブル)-ワコムモニターに接続されている教師のコンピューター
  13. PC(サーバー):i7、3 TB HDD、16 GB RAM、Win(〜25'000ルーブル)-サーバーが実行され、ビデオストリームが流れるコンピューター
  14. AJA ROI(35'000 rub。)
  15. BlackMagic DeckLink Duo(18'000 rub。)


合計、およそ:385千ルーブル。



3つを除いて、すべてのポイントを選択しても問題は生じないと思います。 しかし、このキヤノンを選択した理由と、AJA ROIとDeckLinkが必要な理由については、以下で説明します。



AJA ROIとDeckLink Duo



AJA ROIデッキリンクデュオ



スタジオ(スイスのスタジオなど)では、カメラとAJA ROIから出てPC上のDeckLink Duoに接続するBNCワイヤーを使用します。 ある時点で、教師のリクエストに応じて、2つのストリームの記録を開始し、それらをサーバー上のフォルダーにきちんと入れます。 AJA ROIはシグナルスプリッタとして機能し、Mac miniとWacomの間にインストールされ、Mac miniを受信するチャネルを複製してサーバーに転送します。



スタジオの概略図が上に表示されているため、光源の配置方法と配線の配置方法を理解できます。



カメラ



Canon XA25カメラは偶然に選ばれたわけではありません。 実際、このモデルは、SDI出力を備えた同様の価格帯の市場で唯一のものであり、これは非常に重要です。



これはどのようなSDIチャンネルであり、もしそれが非常に良いのであれば、なぜそれについてあまり耳にしないのですか?



SDIは、まだテレビで使用されている画像伝送の標準であり、このチャネルの伝送媒体は、すべてのラジオ店で見られる通常の75Ω同軸ケーブルです。 以上です。 それでは、なぜこのSDIを使用するのでしょうか? リアルタイムでエンコードされた2つのSDIチャンネルがあり、SDIの代わりにHDMIプロトコルを使用している場合は問題ありません。これらのストリームをリアルタイムで処理できる追加の機器が既に必要な場合があります。



また、SDIの利点は、ケーブルの長さに制限が課せられず、確実に固定できることです。



それで、すべてが到着し、すべてが組み立てられました。それを実行して、どんな問題に遭遇するか見てみましょう。



問題



私たちを待っていた最初の不快な驚きは、カメラからのSDIチャンネルの画像形式の制限でした。 既に述べたように、カメラはこの価格帯でアナログインターフェイスを介してHDビデオを配信できる唯一のカメラです。 しかし、軟膏のハエは、1080i形式の画像がSDIを介して送信されることですここでは、1080iと1080pの違いについて読むことができます )。



2番目の問題:信号がありません! 実際には、SDIインターフェイスはフレームレートと解像度に非常に敏感であるため、カメラが1080iおよび50フレーム/秒(これはCanonカメラが提供する形式です)を提供する場合、サーバーは正確に1080iおよび50を持つ必要があります。黒い画面が表示され、問題は設定にないと考えられます。



カメラとサーバーの設定が同じであっても、画像が表示されない場合があります。問題はワイヤ自体にある可能性があります。 この場合、すべての連絡先を確認し、弱いリンクを見つけるだけです。 SDIマウント自体は非常に信頼性が高く、抜け落ちることはありませんが、問題はケーブルの途中にある可能性があります。 私たちはそのような問題に直面し、試行錯誤によって弱点を見つけて排除しました。



さて、すべてがうまくいったら、先に進みましょう。



スタジオ



サーバーで講義を記録する方法は? 簡単な解決策が必要です。 ただし、最も明確なソリューション(BlackMagic DeckLinkキャプチャカードに付属のソフトウェアを使用)は、最も便利な方法とはほど遠いものです。



まず、講師自身が録音を開始できないため、これを行う人が必要です。



第二に、DeckLink Studioはリアルタイムでのエンコードを許可していません。つまり、非圧縮ビデオ= 1分、約1GBを受け取ります...



さて、最後の不便は、異なるユーザーからアプリケーションの2つのコピーを開く必要があることです。 もちろん、これはバットスクリプトを書くことで解決します(サーバーはWindowsです)が、2つの異なるチャネルのレコードを手動でクリックすると、2つの非同期ファイルが得られます。



2つのビデオストリームの同期記録



明らかな解決策は、Macサーバーを使用して、 Movie Recorderをチャンネルあたり1000ドルで購入することです。 これはまさにスイスの同僚たちがやったことです。 しかし、私たちは別の道を取ることにしました。 もちろん、DeckLink SDKを使用してカスタムインターフェイスを実装するためのアイデアがありましたが、それから私たちは今日に本当に役立つ素晴らしいデバイスを手に入れました。 会う:



ATEM Television Studio



ATEM Television Studio。 一般に、このカードの目的:リアルタイムで、異なるカメラからのビデオをエンコードし、オペレーターがそれらを切り替えることができるようにします。 いつものように、提供されるソフトウェアはあまり便利ではありません。 ただし、インターネット上で、コマンドラインインターフェイスを備え、このカードに接続されたチャネルから画像を記録できる既製のソフトウェア( MXLight )が見つかりました。



そのため、カメラから記録を開始できるbatファイルと、このプロセスを停止できる別のbatファイルがあります。



set name=D:\VIDEO\CPP_Course\Week3\Professor\Step4 set TIMESTAMP=%TIME:~0,2%_%TIME:~3,2%_%TIME:~6,2% if exist %name%.TS ( START D:\VIDEO\MXLight\MXLight.exe record-to-file=%name%_%TIMESTAMP%.TS record=on ) else ( START D:\VIDEO\MXLight\MXLight.exe record-to-file=%name%.TS record=on )
      
      





DeckLinkカードのインターフェースを扱うことは残っています。 ソリューションは非常に迅速に見つかりました-ffmpeg for WindowsはDirectShowをサポートし、DeckLinkカードはDirectShowデバイスにすぎません。



そして出来上がり-ここでは、画面の記録を開始するバットファイルです:



 set name=D:\VIDEO\CPP_Course\Week3\ScreenCast\Final_ScreenCast_LAST set EXT=mp4 set TIMESTAMP=%TIME:~0,2%_%TIME:~3,2%_%TIME:~6,2% if exist %name%.%EXT% ( START D:\VIDEO\ffmpeg\bin\ffmpeg.exe -y -video_size 1920x1080 -pixel_format uyvy422 -rtbufsize 702000k -framerate 24 -f dshow -i video="Decklink Video Capture" %name%_%TIMESTAMP%.%EXT% ) else ( START D:\VIDEO\ffmpeg\bin\ffmpeg.exe -y -video_size 1920x1080 -pixel_format uyvy422 -rtbufsize 702000k -framerate 24 -f dshow -i video="Decklink Video Capture" %name%.%EXT% )
      
      





しかし、画面の記録を停止すると、少しいじらなければなりませんでした。事実は、ffmpegを使用して閉じることができないということです。 この場合、キャプチャファイルが破損し、干渉して再生される可能性があります。 ビデオキャプチャモードを正しく完了するには、キーボードからキー押下イベント「q」を送信する必要があります。



したがって、記録を開始し、正しく停止する人が必要です。

気に入らなかったので、実験として単純なNode.jsサーバーを作成することにしました。JSに書いたことがないので、1石で2羽の鳥を殺すことができました。



そこで、epicStudioアプリケーションが誕生しました。このアプリケーションの起動は、講師自身がWacom(Mac mini)で開いているブラウザーから実行します。 gihtab- epicStudioへのリンク。



epicStudio



開始後、教師は講義を行い、スライドを描き始めます。 講義の終わりに、教師は自分で録音を停止し、新しいトピックの録音を開始できます。 結局のところ、サーバーからファイルをダウンロードして、講義を接着することしかできません。



また、このプロセスを最適化しようとしました。 そこで、不要な部分を自動的に切り取り、透かしを適用し、すべてのビデオを同じボリュームにするためのさまざまなツールを作成しました。 次回は簡単に説明すると思いますが、いずれにしても、 このリポジトリにツールを配置すると、そこに表示されます。



最後に、結果のビデオの例:









UPD: 2015年1月に、スタジオの構成を更新しました。より便利で、より良く、...より安くなりました。 より詳細に投稿しますが、構成と機器のリストにすぐに興味がある場合は、 team @ stepic.orgに問い合わせてください 。 また、モスクワで同様のスタジオを組み立てています。これは、 StepicでMOOCをホストする教師に開かれます 。 コースを記録したい場合は、ご連絡ください。



UPD2:続き(2015年4月): habrahabr.ru/company/stepic/blog/255053



All Articles