1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
   | package com.wowza.example.module;
 
import com.wowza.wms.amf.*;
import com.wowza.wms.client.*;
import com.wowza.wms.module.*;
import com.wowza.wms.request.*;
import com.wowza.wms.stream.*;
 
public class ModuleInjectData extends ModuleBase {
 
  public void setCaption (IClient client, RequestFunction function, AMFDataList params)
  {
    String streamname = params.getString(PARAM1);
    String text =  params.getString(PARAM2);
    String language = params.getString(PARAM3);
    String trackid = params.getString(PARAM4);
 
    IMediaStream stream = client.getAppInstance().getStreams().getStream(streamname);
 
    //essential code
    AMFDataMixedArray data = new AMFDataMixedArray();
    data.put("text", new AMFDataItem(text));
    data.put("language", new AMFDataItem(language));
    data.put("trackid", new AMFDataItem(trackid));
    stream.sendDirect("onTextData", data);
    getLogger().info("Caption: " + text);
  }
 
  public void injectMetaData(IClient client, RequestFunction function, AMFDataList params)
  {
    String streamName = params.getString(PARAM1);
    String data =  params.getString(PARAM2);
    IMediaStream stream = client.getAppInstance().getStreams().getStream(streamName);
    if (stream != null)
    {
      AMFDataList amfList = new AMFDataList();
 
      amfList.add(new AMFDataItem("@setDataFrame"));
      amfList.add(new AMFDataItem("onMetaData"));
 
      AMFDataMixedArray metaData = new AMFDataMixedArray();
 
      metaData.put("param1", data);
      metaData.put("param2", new AMFDataItem("data2"));
 
      amfList.add(metaData);
 
      synchronized(stream)
        {
        byte[] dataData = amfList.serialize();
        int size = dataData.length;
              long timecode = Math.max(stream.getAudioTC(), stream.getVideoTC());
              stream.setDataTC(timecode);
              stream.setDataSize(size);
              stream.startDataPacket();
              stream.addDataData(dataData, 0, size);
        }
    }
  }
} | 
Partager