本文整理汇总了Java中org.red5.io.flv.impl.FLVWriter类的典型用法代码示例。如果您正苦于以下问题:Java FLVWriter类的具体用法?Java FLVWriter怎么用?Java FLVWriter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
FLVWriter类属于org.red5.io.flv.impl包,在下文中一共展示了FLVWriter类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: start
import org.red5.io.flv.impl.FLVWriter; //导入依赖的package包/类
public void start() throws IOException {
log.debug("start");
if (started.compareAndSet(false, true)) {
try {
lock.acquire();
file = new File(fileName);
// remove previous flv if it exists
if (file.exists()) {
file.delete();
file.createNewFile();
}
writer = new FLVWriter(file, false);
//writer.setAudioCodecId(AudioCodec.SPEEX.getId());
writer.setVideoCodecId(VideoCodec.AVC.getId());
} catch (InterruptedException e) {
log.warn("Exception during start", e);
} finally {
lock.release();
}
} else {
log.debug("Already started");
}
}
开发者ID:mondain,项目名称:h264app,代码行数:24,代码来源:FLVRecorder.java
示例2: write
import org.red5.io.flv.impl.FLVWriter; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
public void write(IMetaData<?, ?> meta) throws IOException {
// Get cue points, FLV reader and writer
IMetaCue[] metaArr = meta.getMetaCue();
FLVReader reader = new FLVReader(file, false);
FLVWriter writer = new FLVWriter(file, false);
ITag tag = null;
// Read first tag
if (reader.hasMoreTags()) {
tag = reader.readTag();
if (tag.getDataType() == IoConstants.TYPE_METADATA) {
if (!reader.hasMoreTags()) {
throw new IOException("File we're writing is metadata only?");
}
}
}
if (tag == null) {
throw new IOException("Tag was null");
}
meta.setDuration(((double) reader.getDuration() / 1000));
meta.setVideoCodecId(reader.getVideoCodecId());
meta.setAudioCodecId(reader.getAudioCodecId());
ITag injectedTag = injectMetaData(meta, tag);
injectedTag.setPreviousTagSize(0);
tag.setPreviousTagSize(injectedTag.getBodySize());
// TODO look into why this fails in the unit test
try {
writer.writeTag(injectedTag);
writer.writeTag(tag);
} catch (Exception e) {
log.warn("Metadata insert failed", e);
return;
}
int cuePointTimeStamp = 0;
int counter = 0;
if (metaArr != null) {
Arrays.sort(metaArr);
cuePointTimeStamp = getTimeInMilliseconds(metaArr[0]);
}
while (reader.hasMoreTags()) {
tag = reader.readTag();
// if there are cuePoints in the array
if (counter < metaArr.length) {
// If the tag has a greater timestamp than the
// cuePointTimeStamp, then inject the tag
while (tag.getTimestamp() > cuePointTimeStamp) {
injectedTag = injectMetaCue(metaArr[counter], tag);
writer.writeTag(injectedTag);
tag.setPreviousTagSize(injectedTag.getBodySize());
// Advance to the next CuePoint
counter++;
if (counter > (metaArr.length - 1)) {
break;
}
cuePointTimeStamp = getTimeInMilliseconds(metaArr[counter]);
}
}
if (tag.getDataType() != IoConstants.TYPE_METADATA) {
writer.writeTag(tag);
}
}
writer.close();
}
开发者ID:Kyunghwa-Yoo,项目名称:StitchRTSP,代码行数:70,代码来源:MetaService.java
示例3: waitForTheStream
import org.red5.io.flv.impl.FLVWriter; //导入依赖的package包/类
protected RecordingMetaData waitForTheStream(long metaId) throws InterruptedException {
RecordingMetaData metaData = metaDataDao.get(metaId);
if (metaData.getStreamStatus() != Status.STOPPED) {
log.debug("### meta Stream not yet written to disk {}", metaId);
long counter = 0;
long maxTimestamp = 0;
while(true) {
log.trace("### Stream not yet written Thread Sleep - {}", metaId);
metaData = metaDataDao.get(metaId);
if (metaData.getStreamStatus() == Status.STOPPED) {
printMetaInfo(metaData, "Stream now written");
log.debug("### Thread continue ... " );
break;
} else {
File metaFlv = getRecordingMetaData(metaData.getRecording().getRoomId(), metaData.getStreamName());
if (metaFlv.exists() && maxTimestamp < metaFlv.lastModified()) {
maxTimestamp = metaFlv.lastModified();
}
File metaSer = getMetaFlvSer(metaData);
if (metaSer.exists() && maxTimestamp < metaSer.lastModified()) {
maxTimestamp = metaSer.lastModified();
}
if (maxTimestamp + TIME_TO_WAIT_FOR_FRAME < System.currentTimeMillis()) {
if (metaSer.exists()) {
log.debug("### long time without any update, trying to repair ... ");
try {
if (FLVWriter.repair(metaSer.getCanonicalPath(), null, null) && !metaSer.exists()) {
log.debug("### Repairing was successful ... ");
} else {
log.debug("### Repairing was NOT successful ... ");
}
} catch (IOException e) {
log.error("### Error while file repairing ... ", e);
}
} else {
log.debug("### long time without any update, closing ... ");
}
metaData.setStreamStatus(Status.STOPPED);
metaDataDao.update(metaData);
break;
}
}
if (++counter % 1000 == 0) {
printMetaInfo(metaData, "Still waiting");
}
Thread.sleep(100L);
}
}
return metaData;
}
开发者ID:apache,项目名称:openmeetings,代码行数:54,代码来源:BaseConverter.java
示例4: write
import org.red5.io.flv.impl.FLVWriter; //导入依赖的package包/类
/**
* {@inheritDoc}
*/
@Override
public void write(IMetaData<?, ?> meta) throws IOException {
// Get cue points, FLV reader and writer
IMetaCue[] metaArr = meta.getMetaCue();
FLVReader reader = new FLVReader(file, false);
FLVWriter writer = new FLVWriter(file, false);
ITag tag = null;
// Read first tag
if (reader.hasMoreTags()) {
tag = reader.readTag();
if (tag.getDataType() == IoConstants.TYPE_METADATA) {
if (!reader.hasMoreTags()) {
throw new IOException("File we're writing is metadata only?");
}
}
}
if (tag == null) {
throw new IOException("Tag was null");
}
meta.setDuration(((double) reader.getDuration() / 1000));
meta.setVideoCodecId(reader.getVideoCodecId());
meta.setAudioCodecId(reader.getAudioCodecId());
ITag injectedTag = injectMetaData(meta, tag);
injectedTag.setPreviousTagSize(0);
tag.setPreviousTagSize(injectedTag.getBodySize());
// TODO look into why this fails in the unit test
try {
writer.writeTag(injectedTag);
writer.writeTag(tag);
} catch (Exception e) {
log.warn("Metadata insert failed", e);
return;
}
int cuePointTimeStamp = 0;
int counter = 0;
if (metaArr != null) {
Arrays.sort(metaArr);
cuePointTimeStamp = getTimeInMilliseconds(metaArr[0]);
}
while (reader.hasMoreTags()) {
tag = reader.readTag();
// if there are cuePoints in the array
if (counter < metaArr.length) {
// If the tag has a greater timestamp than the
// cuePointTimeStamp, then inject the tag
while (tag.getTimestamp() > cuePointTimeStamp) {
injectedTag = injectMetaCue(metaArr[counter], tag);
writer.writeTag(injectedTag);
tag.setPreviousTagSize(injectedTag.getBodySize());
// Advance to the next CuePoint
counter++;
if (counter > (metaArr.length - 1)) {
break;
}
cuePointTimeStamp = getTimeInMilliseconds(metaArr[counter]);
}
}
if (tag.getDataType() != IoConstants.TYPE_METADATA) {
writer.writeTag(tag);
}
}
writer.close();
}
开发者ID:Red5,项目名称:red5-io,代码行数:71,代码来源:MetaService.java
注:本文中的org.red5.io.flv.impl.FLVWriter类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论