2014-11-10 17 views
2

IIS Smooth Streaming 게시 지점에서 Apple 장치를 지원하도록 연습했지만 문제가 발생했습니다. <video> 태그의 대상 URL은 404 응답을 생성합니다. 다음과 같이부드러운 스트리밍 Apple 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은 다음과 같습니다 내 브라우저에 URL http://10.1.1.22/video.isml/manifest를 입력 할 때, 내가 올바른 XML 파일을 가져

<!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> 

하는 것으로 Silverlight 기반 스트리밍의 경우 (format=m3u8-aapl) 또는 (format=m3u8-aapl).m3u8 (these instructions에 따라)을 추가하면 404가 발생합니다.

편집 : 어떤 성공 몇 가지가 있지만 실패 있는지에 대한 통찰력을 줄 수 있습니다

  • 의 URL http://10.1.1.22/video.isml/manifest(foo=bar) 나에게 실버 라이트에 적합한 /manifest와 동일한 응답을 제공합니다.
  • URL http://10.1.1.22/video.isml/manifest(format=foo)은 404를 제공합니다.
  • URL http://10.1.1.22/video.isml/manifest.m3u8은 400의 잘못된 요청을 제공합니다.
  • URL http://10.1.1.22/video.isml/manifest(foo=bar).m3u8은 저에게 Silverlight 응답을 제공합니다.

그래서 확장 기능이 서버에 아무런 의미가없는 것 같지만 괄호 안의 인수가 없으면 구문 분석 할 수 없습니다. 더 중요한 것은 서버 처리기가 실제로 /manifest(format=m3u8-aapl)에 대해 실행 중이지만 일종의 하위 요청에서 404를 생성한다는 것이 확실합니다. 우리는 URL을 이해하지 못하고 올바른 핸들러를 실행하지 못하는 서버를 배제 할 수 있습니다.

+0

실제로 스트리밍 일부 비디오가 있습니까, IIS_ISURS 부여 (또는 무엇이든 사용자 응용 프로그램 풀은 윈도우/IIS의 버전에에서 실행되는) 폴더를 수정할 수있는 권한 비디오 조각이 유지되는 곳 게시 지점에? 콘텐츠가 생성되기 전에 Apple 자산이 생성되지 않을 수 있습니다. – Sander

+0

예, Silverlight 스트리밍이 정상적으로 작동하며 비디오 스트림을 볼 수 있습니다. – mm201

답변

2

몇 가지 관련 질문을 살펴본 후 this answer : 스트림은 h.264 비디오 및 AAC 오디오를 사용해야합니다.

불행히도 간단하지 않습니다. Expression Encoder 4 무료 버전은 h.264 또는 AAC를 지원하지 않습니다. 그들은 잠겨 있고 유료 기능으로 광고됩니다. 문제는 입니다. Microsoft는 Expression Encoder를 더 이상 판매하지 않겠지 만에도 불구하고 이러한 기능을 무료로 제공하거나 대안을 제공하지 않았습니다. 그들이 제안하는 모든 제 3 자 옵션은 천문학적으로 가격이 책정되며 대기업을 대상으로합니다.

합리적인 가격의 타사 교체를 위해 힘들이지 않고 검색 한 결과, Unreal Media Server이라는 프로그램이 h.264/AAC를 지원하고 Smooth Streaming 게시 지점으로 출력됩니다. (CCCP와 같은 DirectShow 코덱 팩을 설치하는 것도 필요합니다.)

내가 끝내 었다고 생각한 바로 그 순간, 나는 스트림을 시도하면 w3wp.exe 프로세스 충돌이 발생했다는 것을 알게되었습니다. 디버깅 제안에 '예'라고 대답하면 액세스 위반이있는 스택 추적이 mpeg2tssink.dll에 표시됩니다. 다행히도 mpeg2tssink.dll에 대한 첫 번째 (관련있는 유일한) Google 검색 결과는 this question이며 다른 누군가는 똑같은 문제가있었습니다. 수정 된 내용은 IIS_IUSRS 계정에 Smooth Streaming이 비디오 청크를 저장하는 C:\inetpub\media\archives 폴더에 대한 모든 권한을 부여하는 것입니다. 그런 다음 일이 시작되었습니다.짧은 그래서

:

비디오 스트림을 제공하는 컴퓨터에서
  • , CCCP를 설치, 언리얼 미디어 서버 및 언리얼 라이브 서버. 서버에서
  • 은 아마 C:\inetpub\media\archives
+1

FYI Azure Media Services는 Expression Encoder Pro를 대신하는 Microsoft의 것으로, RTMP 라이브 입력을 가져 와서 Smooth/Dash/Hls 스트림으로 출력 할 수 있습니다. 예를 들어, FFmpeg를 사용하여 RTMP를 통해 Azure에 웹캠 이미지를 보내고 Expression Encoder 라이브 스트리밍과 동일한 기능을 수행 할 수 있습니다. – Sander

+0

하지만 전제가 아니라면 어떨까요? – mm201

+0

예, 그렇습니다. – Sander