1

Javaで記述されたサーバーからWebブラウザクライアントにビデオファイルを送信したい。ソケット接続は正常に機能し、テキストの送信に問題はありません。ソケットサーバーを作成するために使用しているライブラリは、このhttps://github.com/TooTallNate/Java-WebSocketです。

これはファイルを送信するためのコードです

public void sendFile(WebSocket conn,String path)
{
 try
   {    
     File file = new File(path);
     byte[] data = new byte[(int)file.length()];
     DataInputStream stream = new DataInputStream(new FileInputStream(file));
     stream.readFully(data);
     stream.close();
     conn.send(data);
     ..snip catch statements..

これがファイルをキャッチするための私のjavascriptコードです

function connect()
{
 conn = new WebSocket('ws://localhost:8887');
 conn.onopen = function(){alert("Connection Open");};
 conn.onmessage = function(evt){if(evt.data instanceof Blob){readFile(evt);}else{alert(evt.data);}};
 conn.onclose = function(){alert('connection closed');};
}
function readFile(file_data)
{
 var video = document.getElementById('area');
 video.src = window.URL.createObjectURL(file_data.data);
}

..skip to html element for playing the file..

<video id='area' controls="controls"></video>

ブラウザでファイルを受信して​​再生できるようにしたい。

webmビデオファイルをfireoxに送信しようとしたときに発生するエラーは次のとおりです。「application/octet-stream」のHTTP「Content-Type」はサポートされていません。メディアリソースblob:794345a5-4b6d-4585-b92b-3acb51612a6cのロードに失敗しました。

WebSocketからビデオファイルを受信して​​再生することは可能ですか?私は何か間違ったものを実装していますか?

4

1 に答える 1

1

ビデオ要素には適切なコンテンツ タイプが必要です。ws Blob には一般的なコンテンツ タイプが付属しており、(私には) サーバー側またはクライアント側で設定する方法がないように思われます。
幸いなことに、Blob にはslice(start, end, contentType)メソッドがあります。

var rightBlob = originalBlob.slice(0, originalBlob.size, 'video/webm')
于 2012-07-04T04:02:06.390 に答える