2

現在、Android デバイスからライブ ビデオをストリーミングしようとしています。残念ながら、ネットワーク経由で取得したストリームを読み取ることができません。

問題は、ビデオの録画に使用される形式 (ISO メディア、MPEG v4 システム、3GPP) によるものであることがわかりました。

レコーダーを初期化する方法は次のとおりです。

    // Sources
    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

    // HD
    CamcorderProfile highProfile = CamcorderProfile
            .get(CamcorderProfile.QUALITY_HIGH);
    recorder.setProfile(highProfile);
    recorder.setOutputFile(PATH);

ビデオが現在撮影されている場合 (まだ FS に書き込み中)、ファイルの先頭を読み取ったときに得られるものは次のとおりです (そのファイルを で取得しました$ adb pull /sdcard/video) :

MacBook-Romain:result rbochet$ hexdump video-current.mp4 | head -2
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000010 00 00 00 00 00 00 00 00 00 00 00 08 6d 64 61 74

記録が終了すると、ヘッダーは次のようになります。

MacBook-Romain:result rbochet$ hexdump video.mp4 | head -2
0000000 00 00 00 18 66 74 79 70 33 67 70 34 00 00 03 00
0000010 33 67 70 34 33 67 70 36 00 07 56 83 6d 64 61 74

実際のところ、この方法はライブ ストリーミングには最適ではありません。ファイルの長さと大きさがわからないからです…</p>

質問:実際のストリーミングを行うにはどうすればよいですか? 私が見る解決策の1つは小さなチャンクを送信することですが、この解決策は実際にはひどいと思います... SipDroidなどのプログラムがストリーミングできるため、もっと良いものが存在するはずです。彼らのコードを理解できるなら、説明してもらえますか? コードを見ましたが、それほど明確ではありませんでした。

コードはオープン ソースとしてリリースされるので、このトリッキーな状況を解決する方法を探しているすべての人にとって、あなたの助けは楽しいものになるでしょう (SO に同様のスレッドがたくさんあることは知っています)。

基本的なカメラ アプリのコードは次のとおりです: https://github.com/rbochet/Simple-Camera-App

ご協力いただきありがとうございます。

4

0 に答える 0