• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java FLVWriter类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java XPathParseTool类代码示例发布时间:2022-05-22
下一篇:
Java Parameter类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap