2017-06-20 8 views
0

Ist es möglich, alternative (Backup-) Streams zu einem HLS-Manifest in Wowza hinzuzufügen, wenn die Java-API zum Generieren der dynamischen Wiedergabeliste (AMLST) verwendet wird.Redundante HLS-Streams in Wowza

Ich habe einen Code wie diesen, wo ich dynamisch die verschiedenen Bitraten hinzufügen, aber ich möchte einen Sicherungsdatenstrom hinzufügen. (Ich habe versucht, ein zweites MediaListSegment hinzuzufügen, aber es scheint nicht zu funktionieren).

package com.wowza.wms.plugin.test.module; 

import com.wowza.wms.medialist.*; 
import com.wowza.wms.module.*; 
import com.wowza.wms.stream.*; 
import com.wowza.wms.application.*; 

public class ModuleAMLSTTestLive extends ModuleBase 
{ 
class MyMediaListProvider implements IMediaListProvider 
{ 
    public MediaList resolveMediaList(IMediaListReader mediaListReader, IMediaStream stream, String streamName) 
    { 
     MediaList mediaList = new MediaList(); 

     MediaListSegment segment = new MediaListSegment(); 
     mediaList.addSegment(segment); 

     MediaListRendition rendition1 = new MediaListRendition(); 
     segment.addRendition(rendition1); 

     rendition1.setName(streamName+"_400"); 
     rendition1.setBitrateAudio(128000); 
     rendition1.setBitrateVideo(400000); 
     rendition1.setWidth(320); 
     rendition1.setHeight(240); 
     rendition1.setAudioCodecId("mp4a.40.2"); 
     rendition1.setVideoCodecId("avc1.66.12"); 

     MediaListRendition rendition2 = new MediaListRendition(); 
     segment.addRendition(rendition2); 

     rendition2.setName(streamName+"_800"); 
     rendition2.setBitrateAudio(128000); 
     rendition2.setBitrateVideo(800000); 
     rendition2.setWidth(640); 
     rendition2.setHeight(480); 
     rendition2.setAudioCodecId("mp4a.40.2"); 
     rendition2.setVideoCodecId("avc1.77.31"); 

     return mediaList; 
    } 
} 

public void onAppStart(IApplicationInstance appInstance) 
{ 
    appInstance.setMediaListProvider(new MyMediaListProvider()); 
} 

}

Antwort

0

obwohl dies nicht in der API unterstützt, fand ich schließlich eine Lösung:

Es ist möglich, Haupt- und Backup-Ströme zu definieren, indem die Ströme durch den absoluten Pfad specifing von der Stream in den URI- oder DOMAIN-Cupertino-Tags.

Probe SMIL:

<body> 
    <switch> 
     <video src="mp4:foo.mp4" system-bitrate="300000"> 
    <param name="videoCodecId" value="avc1.66.30" valuetype="data"/> 
    <param name="audioCodecId" value="mp4a.40.2" valuetype="data"/> 
    <param name="cupertinoTag.URI" value="http://serverwowza1.foo.com:1935/vod/mp4:foo.mp4/chunklist.m3u8" valuetype="data"/> 
     </video> 
     <video src="mp4:foo.mp4" system-bitrate="300000" > 
    <param name="videoCodecId" value="avc1.66.30" valuetype="data"/> 
    <param name="audioCodecId" value="mp4a.40.2" valuetype="data"/> 
    <param name="cupertinoTag.URI" value="http://serverwowza2.foo.com:1935/vod/mp4:sample.mp4/chunklist.m3u8" valuetype="data"/> 
     </video> 
...