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