質問

MJpegストリームを生成し、VLCにストリーミングして再生しようとしています。

コード:

        public void SendMultiPartData(String contentType, Func<byte[]> getData)
    {
        MemoryStream mem = null;
        response.StatusCode = 200;
        for ( byte[] buffer = getData(); buffer != null && buffer.Length > 0; buffer = getData())
        {
            response.ContentType = "multipart/x-mixed-replace; boundary=--testboundary";
            ASCIIEncoding ae = new ASCIIEncoding();
            byte[] boundary = ae.GetBytes("\r\n--testboundary\r\nContent-Type: " + contentType + "\r\nContent-Length:" + buffer.Length + "\r\n\r\n");
            mem = new MemoryStream(boundary);
            mem.WriteTo(response.OutputStream);
            mem = new MemoryStream(buffer);
            mem.WriteTo(response.OutputStream);
            response.OutputStream.Flush();
        }
        mem.Close();
        listener.Close();
    }

Firefoxでストリームを開こうとしても、問題はありませんが、VLCでは機能しません(VLCは読み続けているようですが、ビデオは表示されません)

VLCからVLCへのストリーミングをスニッフィングしてきましたが、HTTPヘッダーとして「application / octet-stream」を使用しているようです。 multipart / x-mixed-replaceの代わりに

任意のアイデア?

事前に、 ホセ

役に立ちましたか?

解決

ホセ、 私はまったく同じ問題を抱えていました。 Firefoxはストリームを再生しますが、VLCは再生しません。 VLCソースコードのデバッグを含め、これを理解するために非常に多くの方法を試しましたが、どこにも行きませんでした。 btw My(REST)URLは http:// server:port / livevideo / xyz のようになります 次に、 http:// server:port / livevideo / xyz.mjpeg を試してみるべきだと思いました そして、VLCがビデオを再生し始めたと思います! VLCがmjpegストリームであることがわかるには、コンテンツタイプよりも少しヒントが必要になると思います。 これがお役に立てば幸いです。

シンディ

他のヒント

これを試しましたか:

Response.Buffer = false;
Response.BufferOutput = false;

またはそれらのバリエーション?

Firefoxでストリームを再生することはできません(Chromeでは問題なく再生できます)。 VLCの場合、バッファーを0ミリ秒に設定し(高度なオープンオプションの下)、そこからは動作するように見えましたが、データレートはそれを殺しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top