2

チュートリアルに従って、IIS Smooth Streaming 公開ポイントが Apple デバイスをサポートするようにしましたが、問題が発生しました<video>。タグのターゲット URL が 404 応答を生成します。

私のismlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
  <head>
    <meta name="title" content="" />
    <meta name="module" content="liveSmoothStreaming" />
    <meta name="sourceType" content="Push" />
    <meta name="publishing" content="Fragments;Streams;Archives" />
    <meta name="estimatedTime" content="36000" />
    <meta name="lookaheadChunks" content="2" />
    <meta name="manifestWindowLength" content="0" />
    <meta name="startOnFirstRequest" content="True" />
    <meta name="archiveSegmentLength" content="0" />
    <meta name="formats" content="m3u8-aapl" />
    <meta name="m3u8-aapl-segmentlength" content="10" />
    <meta name="m3u8-aapl-maxbitrate" content="1600000" />
    <meta name="m3u8-aapl-allowcaching" content="False" />
    <meta name="m3u8-aapl-backwardcompatible" content="False" />
    <meta name="m3u8-aapl-enableencryption" content="False" />
    <meta name="filters" content="" />
  </head>
  <body>
  </body>
</smil>

私が使用しているhtmlは次のとおりです。

<!doctype html>

<html>
<head>
    <title>Apple streaming IIS test</title>
</head>
<body>
    <h1>Live Stream</h1>

    <video width="640"
           height="360"
           src="http://10.1.1.22/video.isml/manifest(format=m3u8-aapl).m3u8"
           autoplay="true"
           controls="true">
        Live
    </video>
</body>
</html>

ブラウザーにURLhttp://10.1.1.22/video.isml/manifestを入力すると、Silverlight ベースのストリーミング用の正しい XML ファイルが取得されますが、(format=m3u8-aapl)または(format=m3u8-aapl).m3u8(これらの手順に従って) を追加すると 404 が発生することに注意してください。

編集:私は成功しなかったいくつかのことを試しましたが、何が失敗しているのかについての洞察を与えるかもしれません:

  • URLは、Silverlight に適しhttp://10.1.1.22/video.isml/manifest(foo=bar)た とまったく同じ応答を返します。/manifest
  • URLhttp://10.1.1.22/video.isml/manifest(format=foo)は 404 を返します。
  • URLhttp://10.1.1.22/video.isml/manifest.m3u8は 400 の不正な要求を返します。
  • URLhttp://10.1.1.22/video.isml/manifest(foo=bar).m3u8から Silverlight の応答が得られます。

そのため、拡張子はサーバーにとって何の意味もないようですが、括弧で囲まれた引数が存在しない場合は解析できません。さらに重要なことは、サーバー ハンドラーが実際に実行されている/manifest(format=m3u8-aapl)が、何らかのサブ要求で 404 を生成していることは明らかです。サーバーが URL を認識せず、正しいハンドラーを実行できない可能性を除外できます。

4

1 に答える 1

2

関連する質問をいくつか調べた後、次の回答に出会いました。ストリームは、h.264 ビデオと AAC オーディオを使用する必要があります。

残念ながら、それほど単純ではありません。Expression Encoder 4 の無料版は、h.264 または AAC をサポートしていません。それらはロックダウンされ、有料機能として宣伝されています。問題は、Microsoft が Expression Encoder の販売をこれ以上拒否しているにもかかわらず、これらの機能を無料にしたり、代替手段を提供したりしていないことです。彼らが提案するすべてのサードパーティのオプションは、天文学的な価格であり、大企業向けです.

手頃な価格のサードパーティの代替品を入念に探した結果、h.264/AAC をサポートし、Smooth Streaming パブリッシング ポイントに出力するUnreal Media Serverというプログラムに出会いました。(CCCP などの DirectShow コーデック パックのインストールも必要です。)

終わったと思ったちょうどその時、ストリーミングしようとするとw3wp.exeプロセスがクラッシュすることに気がつきました。デバッグの申し出に「はい」と答えたところ、アクセス違反のあるスタック トレースが表示されましたmpeg2tssink.dll。幸いなことに、最初の (そして唯一の関連する) Google 検索結果は、他の誰かがまったく同じ問題を抱えていたmpeg2tssink.dllこの質問でした。修正は、Smooth Streaming がビデオ チャンクを保存IIS_IUSRSするフォルダーのフル コントロールをアカウントに許可することでした。C:\inetpub\media\archivesその後、物事はうまくいき始めました。

要するに:

  • ビデオ ストリームを提供するコンピュータに、CCCP、Unreal Media Server、および Unreal Live Server をインストールします。
  • サーバーIIS_IUSRS上で、おそらくビデオ フラグメントが保持されているフォルダーを変更する権限を付与します (または、お使いのバージョンの Windows/IIS でアプリケーション プールが実行されているユーザー)。C:\inetpub\media\archives
于 2014-11-12T21:37:27.673 に答える