*でも、packetReceived() 関数には何を入れればよいのでしょうか? *
これを別の回答に追加して、正しく強調表示します。
パケットをディスクに書き込むには、次のものが必要です。1) パケット、2) パケットを ITag に変換する、3) ITagWriter のインスタンスを取得する
1) パケット データ
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/listener/StreamVideoListener.java?view=50
行付近のマークアップ
public void packetReceived(IBroadcastStream broadcastStream,
IStreamPacket streampacket) {
}
streampacket => ディスクに書き込みたいパケット。
2) パケットを ITag に変換して書き込む
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/listener/async/StreamVideoWriter.java?view=
行 90ff 付近のマークアップ
IoBuffer data = streampacket.getData().asReadOnlyBuffer();
if (data.limit() == 0) {
return;
}
if (startTimeStamp == -1) {
// That will be not bigger then long value
startTimeStamp = streampacket.getTimestamp();
}
timeStamp -= startTimeStamp;
ITag tag = new Tag();
tag.setDataType(streampacket.getDataType());
// log.debug("data.limit() :: "+data.limit());
tag.setBodySize(data.limit());
tag.setTimestamp(timeStamp);
tag.setBody(data);
writer.writeTag(tag);
3) Writer のインスタンスの取得
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/listener/async/BaseStreamWriter.java?view=
行 90ff 付近のマークアップ
protected ITagWriter writer = null;
private void init() throws IOException {
file = new File(OmFileHelper.getStreamsSubDir(this.scope.getName()), this.streamName + ".flv");
IStreamableFileFactory factory = (IStreamableFileFactory) ScopeUtils
.getScopeService(this.scope, IStreamableFileFactory.class,
StreamableFileFactory.class);
if (!this.file.isFile()) {
// Maybe the (previously existing) file has been deleted
this.file.createNewFile();
} else if (!file.canWrite()) {
throw new IOException("The file is read-only");
}
IStreamableFileService service = factory.getService(this.file);
IStreamableFile flv = service.getStreamableFile(this.file);
this.writer = flv.getWriter();
}
したがって、これは大まかな手順です。そういう意味では、次に進むことができます。
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/flvrecord/listener/async/BaseStreamWriter.java?view=markup _
クラスには、パケットを収集するための Queue も含まれています。
IStreamPacket.getType == 9 はビデオで、8 はオーディオだと思います (ただし、確認する必要があります)。
セバスチャン