2016-09-01 9 views
0

ユーザーは、次の画像の赤い矩形部分に似たタイムラインインターフェイスでビデオを編集できるWebビデオエディタを開発しています。Webベースのビデオ編集のデータモデル

enter image description here

これを達成するために、私は次の図に示すように、編集操作のために使用されるすべてのデータを維持するために、サーバー側のツリー構造のデータモデルがあるはずだと思います。例として、インタフェース画面にタイムラインを取る

enter image description hereVideoGroupサブオブジェクトと一つAudioGroupサブオブジェクトを有するものTimeLine目的があります。 VideoGroupオブジェクトには、2つのTrackオブジェクトのコレクション、つまりVideo 1Video 2があります。 The AudioGroupオブジェクトには、Audio 1という1つのトラックオブジェクトがあります。 Video 1の場合、VideoGroupオブジェクトの最初のTrackオブジェクトは4つのMediaオブジェクトのコレクションを持ち、2番目のTrackオブジェクトVideo 2は6を持ちます。Audio 1の間は、AudioGroupオブジェクトのTrackオブジェクトは1つしかありません。

私のアプリケーションに関しては、バックエンドでは、実際の編集操作を実行するためにアプリケーションでデータモデルが使用されます。フロントエンドでは、インターフェイスの画像に表示されているようなグラフィカルな方法でWebページに表示する必要があります。この目標を達成するために、サーバー側に既にデータモデルがあるので、クライアント側に対応するJavaScriptデータモデルを作成する必要があるのだろうかと思います。そうでない場合、更新されたバージョンをエンドユーザに表示するために、ユーザが編集操作を行うたびに、フロントWebページはバックエンドからデータモデルをリロードする必要があります。そんなに行くのはいいですか?

答えて

0

鳥瞰図、ハイレベルの答え:

は、あなたが単一ページのアプリケーションを構築するような音。まず、アプリケーションは、データ構造のさまざまなモデル/クラスを表すAPIを介して、必要なビデオ/オーディオ/データをロードします。ブラウザでは、このデータをフロントエンドフレームワーク(Angular、React、Emberなど)にロードします。

モデルはサーバー側のデータ構造を反映している可能性がありますが、特定のフロントエンドの問題を処理するバリエーションがある可能性があります。

フロントエンドフレームワークはタイムラインをレンダリングし、ユーザーが行うさまざまな操作を処理します。

セーブアクションを使用するか、定期的に、ユーザーの変更をタイムラインに記録して、 をAPI経由でサーバーに送信(PUT)します。

+0

答えが正しいと分かったら、JavaScriptを使用してフロントエンドに対応するデータモデルを構築することをお勧めします。しかし、私のプロジェクトの時間的制約のため、クライアント側とサーバ側の2つの複雑なデータモデルを構築し、それらを同期させるコードを書くのではなく、サーバー側からモデルをロードする方が簡単だと思うので、私の好きな方法がWebアプリケーションに大きな問題を引き起こすかどうかはわかりませんが、 – Ivan

+0

私はあなたのアプリは、その性質上、多くのユーザーのやりとりを持つと思います。あなたはおそらくフロントエンドのフレームワークがこれらの懸念をとにかく構築したいと思うでしょう。あなたの優先するテクノロジースタックを決めましたか? – sdeburca

+0

技術の面では、ビデオ編集のためにサーバー側にASP.NETとDirectShow.NET APIを使用しています。フロントエンドに関しては、HTML Canvasを使用してタイムラインインターフェイスを表示し、ユーザーイベントを処理してサーバーとデータを交換するための純粋なJavaScriptコードを記述します。私はWeb開発の経験があまりないので、今はもっと良い方法を見つけることができません。 – Ivan

関連する問題