栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Red5视频流录制中断

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Red5视频流录制中断

但是我应该在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=markup
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=markup
90ff Line附近

        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=markup
90ff Line附近

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

类还包含一个队列来收集数据包。

IStreamPacket.getType == 9是视频,我认为8是音频(但您需要验证)。

塞巴斯蒂安



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/464158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号