2012-11-21 10 views
7

私のクライアントにウェブカメラのデータをストリーミングします。Android:カメラのデータをストリームしてサーバーに書き込む

( 'データ')を聞いてデータが到着しているのがわかります。しかし、私はそれを作成するときに私はそれを表示することはできませんし、おそらくごみのデータやいくつかのヘッダーがありません。 VLCはそれを再生できません。

私の次のステップは、ブラウザにリアルタイムでストリーム可能にすることです。

私は間違っていますか?

net = require('net'); 
fs = require('fs'); 

// Start a TCP Server 
net.createServer(function (socket) {  
    console.log("client connected"); 
    var file = fs.createWriteStream("temp.mp4"); 
    socket.pipe(file, {end: false}); 

    socket.on('end', function(){ 
     console.log("ended"); 
    }); 
}).listen(5000); 

私はそれが本当にビデオ出力をキャプチャしたかどうかを確認するためにテスト:

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER); 
    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
    mediaRecorder.setVideoSize(320, 240); 
    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 

    ParcelFileDescriptor pfd = ParcelFileDescriptor.fromSocket(socket);  
    mediaRecorder.setOutputFile(pfd.getFileDescriptor()); 

    mediaRecorder.setMaxDuration(5000); 
    mediaRecorder.setMaxFileSize(5000000); 
(ソケットが接続されても問題を負いません)

$ mediainfo temp.mp4 

General 
Complete name       : temp.mp4 
Format         : H.263 
Format version       : H.263 
File size        : 126 KiB 

Video 
Format         : H.263 
Width         : pixel0 
Height         : pixel0 
Color space        : YUV 
Chroma subsampling      : 4:2:0 
Bit depth        : 8 bits 
Compression mode       : Lossy 

そして、これはmediaRecorderを設定するための次のAndroidのコードです

答えて

6

Spydroid(ブラウザ/ VLCストリーミング)やAndroid IP Camera(ブラウザストリーミング)など、この問題を解決するオープンソースプロジェクトがいくつかあります。あなたの実装はSpydroidに似ているようですので、コードのいくつかを適応させることができます。

MediaRecorderがソケットに書き込み中のビデオフレームであることが中心的な問題です。ヘッダーを書き込むためにビデオが終了するまで待つ必要がありますが、ファイルの先頭に表示する必要があります。ソケットはシーク可能ではないので、ヘッダーは正しい場所に書き込むことができません。上記のリンクされたプロジェクトは、ストリームをRTSP(Spydroid)にパケット化するか、または一連の静止画像をブラウザ(Android IPカメラ)に「ストリーミング」することによってこの問題を処理します。

+0

私はそれが生ファイルを書いていたことを知らなかった、ありがとう!私は今、主な問題を見る – Mustafa

関連する問題