2

DLNAメディアプレイヤーのサーバー機能を実装しました。

サーバーは DMP(Digital Media Player) のシーク機能をサポートし、XBMC または VLC プレーヤーは正しく動作します。

しかし、Microsoft Media Player でビデオを再生し、後の位置に移動しようとすると、メディア プレーヤーが停止しました。

MS Media Player のネットワーク パケットを解析し、MS Media Player の DMS(Digital Media Server) と同じヘッダーを作成しようとしました。

しかし、私はまだ失敗しました。

見逃した重要なタグ情報はありますか?

応答に関する私の応答コードは次のとおりです。

NetworkStream ns = new NetworkStream(mClient.Client);
try
{

    StreamWriter sw = new StreamWriter(ns);
    if (rangeBegin >= 1)
    {
        sw.WriteLine("HTTP/1.1 {0}", HttpStatus.Http206);
    }
    else
    {
        sw.WriteLine("HTTP/1.1 {0}", HttpStatus.Http200);
    }


    long k=total_size - rangeBegin;
    sw.WriteLine("Content-Length: {0}",k );
    sw.WriteLine("Content-Type: " + ContentType);
    try
    {
        String st = HttpRequest.IfUnmodifiedSince;
        sw.WriteLine("LAST-MODIFIED: " + st);
    }
    catch (Exception e)
    {
        Log(TAG, "Exception:" + e.Message);
    }

    sw.WriteLine("Server: PegaServer");
    sw.WriteLine("Accept-Ranges: bytes");
    //sw.WriteLine("ContentFeatures.DLNA.ORG: DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=01500000000000000000000000000000");
    sw.WriteLine("contentFeatures.dlna.org: DLNA.ORG_PN=AVC_MP4_HP_HD_AAC;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000");
    sw.WriteLine("CONTENT-RANGE: bytes " + getContentRange());
    sw.WriteLine("transferMode.dlna.org: Streaming");
    String date = DateTime.Now.ToString("r");
    sw.WriteLine("Date: " + date);

    sw.WriteLine("Pragma: no-cache");
    sw.WriteLine("Expires:  0");
    sw.WriteLine("Cache-Control:    no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform, private");
    sw.WriteLine("Connection: close");

メディア シーク リクエストについて誰か提案してもらえますか?

4

0 に答える 0