7

.mp4 ファイルから読み取り、ファイルに書き込まれたバイトをアップロードすることで、記録されている Android 携帯からビデオをアップロードするアプリを作成しようとしています。問題は、私が知る限り、ビデオ録画が終了してビデオ ファイルが閉じられるまで、moov アトムとその他のさまざまなデータがファイルに書き込まれないように見えることです。ビデオファイルを処理し、これらのメタデータをサーバー側に追加する方法はありますか?

  1. 完全なビデオ ファイルがアップロードされました (ただし、最初のパスで書き込まれない moov アトムやその他のデータはありません)。
  2. ビデオの一部 (最初の 10 秒など) のみがアップロードされており、これをアップロードされたビデオのセグメントを含む有効な mp4 ファイルに変換したいと考えています。

http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-systemのようなリンクを見たことがありますが、単に次のように述べるだけで問題を覆い隠しています

したがって、受信したストリームは、記録が終了した後に修正するか、生のビデオ/オーディオ フレームをサーバーで処理する必要があります。

それを行う方法を正確に説明することなく。

4

1 に答える 1

5

お気づきのとおり、このような状況ではMP4形式を使用するのが難しい場合があります。リンクされたブログ投稿は、かなり複雑になる可能性があるため、「修正」について詳しく説明されていないのではないかと思います。mdatボックスの欠落しているサイズフィールドを書き込むことに加えて、ftypボックスとmoovボックスを生成する必要があります。エンドツーエンドのMP4ソリューションが本当に必要な場合は、ISO14496-12およびISO14496-14で、これらのデータ構造の構築方法についてこれまで知りたかった以上のことがわかります。

ただし、はるかに洗練された解決策は、リアルタイム処理に実際に適した形式を使用することです。つまり、Android側では、ビデオストリームをリアルタイム形式にリマックスし、それをサーバーに送信します。サーバー側では、ビデオを処理するための優れた柔軟性があります。ビデオ全体をMP4にリマックスしたり、スライスアンドダイスしたり、10秒のチャンクを作成したりできます。オープンソースのSipdroidプロジェクトには、ライブビデオをRTPにリマックスすることを示すコードが含まれています。(信頼性の高い伝送フォーマット(TCPを介したRTPなど)をお勧めします。原則は同じです。)

于 2012-04-25T17:23:19.160 に答える