24

ビデオをキャプチャし、ローカル ソケットを使用して Mp4/3gp 形式で SD カードに保存しようとしています。バイトごとに SD カードに書き込むことはできますが、ビデオ ファイルは再生できません。多くの例を試しました。

https://github.com/fyhertz/spydroid-ipcamera

https://github.com/mconf/sipdroid

などなど。これはファイルのヘッダーの問題である可能性があると示唆している人がいることに気付きました。これらの「mdat」データもヘッダーからスキップしようとしました:

private void skipHeader() throws IOException {
    // Skip all atoms preceding mdat atom
    byte[] buffer = new byte[3];
    while (true) {
        while (mReceiver.getInputStream().read() != 'm');
        mReceiver.getInputStream().read(buffer,0,3);
        if (buffer[0] == 'd' && buffer[1] == 'a' && buffer[2] == 't') break;
    }
}

最終的には何もうまくいきませんでした。これらのビデオ ファイルを Local Socket を使用して再生できるようにするために、さらに何をする必要がありますか?

4

1 に答える 1

4

あなたの説明から、実装することを念頭に置いているのはスクリーンレコーダーです。もちろん、あなたの意図は、システムがあなたのソフトウェアが提供するテクノロジーの一部としてそれを実装することです。

ここに画像の説明を入力

そのような場合、最善のアプローチは、既存のものを改善し、コードに新しい機能または新しいパフォーマンスを組み込み、あなたが見つけてソフトウェアの一部として含めた元のソースにクレジットを与えることです-予想どおり. これが、コードの再利用、配布、改善を可能にするオープン ソースの利点です。

ここに画像の説明を入力

Github にはたくさんのプロジェクトがあります...ご存知のように、素晴らしいものもあれば素晴らしいものもあります。特定のケースでは、ストリーミング録画システムがビデオをキャプチャできるようにする既存のコードを使用し、デバイスをルート化する必要なくそれを書き込むことをお勧めします。これは、最終ユーザーが新しく購入したデバイスのみの保証を無効にすることに関心がないためです。ソフトウェアを実行します。

ここに画像の説明を入力

また、さまざまな画面サイズで Android で毎秒 20 画面をキャプチャできる良好な速度を達成し、明確な解像度と低い CPU 使用率を実現することも重要です。これらすべての特性により、ソリューションが安定し、堅固に見えます。

ここに画像の説明を入力

時間と多くの頭痛の種を節約できる最善のアプローチは、プロジェクトの一部として「sji-android-screen-capture」コードを組み込むことだと思います。ターゲット デバイスが Android 4.2 ~ 4.4 の場合、これらの Android バージョンをサポートしているため、問題ありません。詳細情報とソース コード自体は、 Github リポジトリで入手できます。または、Android ScreenCapture Sample を使用して、デバイスの画面をリアルタイムでキャプチャすることもできます。

于 2015-06-02T15:33:27.957 に答える