Red5视频流录制中断

2023-12-11

最后,我创建了一个流视频录像机 Flash 应用程序及其简单的 Red5 后端,但当然 Red5 又跟我开玩笑了。大多数时候,录制的视频都已损坏,如果不随机停止-恢复就无法播放它们,挂出播放器......还有我。它为什么要这样做?

我在网上查了一下,发现了这个问题,但没有解决!我尝试不录制视频,而是将其切换为实时视频并附加 ffmpeg 来完成肮脏的工作,但 ffmpeg 自然无法连接到 red5 输出上的以下错误消息:

执行调用时出错:服务:null 方法:play Num Params:1 0:my_little_stream ... blabla bla

在我尝试集成之前Xuggler我真正不想做的事情我问你,该怎么办,我可以以某种方式附加 ffmpeg 或者 red5 服务器中是否有我应该更改的配置..或任何东西!谢谢!

Edit:我正在使用 Red5 1.0 RC2

Edit#2:我使用 red5 1.0.0rc2 服务器文件从主干源编译了 oflaDemo 应用程序,然后使用一个简单的 Flex 应用程序创建了一个实时流,只是为了尝试 ffmpeg 记录器是否工作。现在它可以连接到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=markup50号线左右

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=markup90号线附近

        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=markup90号线附近

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();

}

所以这是一个粗略的演练。从这个意义上说,你可以继续前进。

The 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 是音频(但您需要验证这一点)。

塞巴斯蒂安

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Red5视频流录制中断 的相关文章

  • Maven 未运行 Spring Boot 测试

    我有一个要测试的 Spring Boot REST API 我可以在 Eclipse 中手动运行测试 无需 Maven 并通过将应用程序作为 JUnit 测试运行 它运行良好并显示结果 但是mvn test正如您将在下面发现的那样 它不起作
  • ClientRequestFactory RestEasy 已弃用...还有其他 RestEasy 替代方案吗?

    我需要使用其他人创建的 RestService 的接口来创建轻松的客户端 这工作很好 除了一件事 当我从rest easy 2 3 5 Final更新到resteasy 3 0 x时 Client RequestFactory类看起来像 D
  • 使用可执行 JAR 时指定 Log4j2 配置文件

    使用可执行 JAR 文件时 我在指定 Log4j2 配置文件位置时遇到问题 如果我将所有 JAR 分开 效果很好 但是当我尝试将它们组合成一个可执行 JAR 文件时 由于某种原因log4j2 xml未从命令行获取文件 我尝试过这两种指定位置
  • 如何使用 Java2D 创建硬件加速图像?

    我正在尝试创建一个快速图像生成器 它可以执行大量 2d 转换和形状渲染 因此我尝试使用 BufferedImage 然后获取 Graphics2D 对象来执行所有绘图 我现在主要关心的是 make 速度非常快 所以我创建一个像这样的 Buf
  • 如何将 (A OR B) AND C 等表达式展开为 A AND C OR A AND B?

    我努力了Javaluator这帮助我评估了这样的表达式 A OR B AND C 但现在我只想扩展表达式 A OR B AND C to A AND C OR A AND B任何人都可以告诉我如何在 Java 任何 API 中执行此操作或任
  • Java RCP/SWT - Eclipse RCP 中的“Android Toast like”对话框

    有谁知道是否存在某些弹出窗口的实现 例如 Android TOAST 通知是以下内容的一部分迈林公共区 https projects eclipse org projects mylyn commons 要集成它们 请添加Mylyn Com
  • 如何统计lucene索引中每个文档的term数?

    我想知道 lucene 索引中每个文档的术语数量 我一直在 API 和互联网上搜索 但没有结果 你能帮助我吗 Lucene 的构建是为了回答相反的问题 即哪些文档包含给定术语 因此 为了获取文档的术语数量 您必须进行一些修改 第一种方法是存
  • 要导入什么才能使用@SuppressFBWarnings?

    要使用 SuppressFBWarnings 需要导入什么 我通过帮助 安装新软件安装了 findbugs 插件 当我输入 import edu 时 我无法按 ctrl space 来获取选项 Example try String t nu
  • 如何在 TestNG 报告中包含 Log4j2 消息

    我希望在所有测试用例的 TestNG 报告中提供 Log4j2 日志记录信息 TestNG 使用一个名为 Reporter java 的特殊记录器类来跟踪日志输出并将其保存在其结果 XML 中 在 log4j 中 可以简单地创建一个路由到
  • 使用 IntelliJ 调试 Java 进程 - 连接到套接字但不连接到目标 VM

    现在已解决 请参阅问题末尾 我正在尝试使用 IntelliJ Community Edition 的调试器来调试 Java 进程 套接字正在侦听 但是当我尝试连接时 调试过程显示以下内容 连接到目标虚拟机 地址 8003 传输 socket
  • java - IBM-IEEE 双精度浮点字节转换

    我需要在 Java 中对字节数组进行 IBM IEEE 浮点转换 我能够使用成功地进行单精度浮点字节的转换http www thecodingforums com threads c code for converting ibm 370
  • 自 Java 7 以来 HttpServer 延迟 1 秒

    我们正在使用内部HttpServer项目中的类 用于通过 HTTP 在客户端和服务器之间交换数据 当我们切换到 Java 7 时 我们意识到结果交付存在延迟 我们可以将问题简化为以下示例 Class EchoServer创建上下文 echo
  • javax.validation 的 @AssertTrue - 它不应该创建错误消息吗?

    我在 Spring MVC 命令 bean 中有以下代码 AssertTrue public boolean isConditionTrue return false private boolean conditionTrue 我的 JSP
  • android 中的 lang.NumberFormatException

    我有以下代码 除了在后台线程中从数据库读取一些值并使用这些值之外什么也不做 我使用 jar 绘制折线图 对于我用于每个数组值的折线图 问题是第三个我传递给绘制 LineChart 的构造函数的参数是 float float viteza S
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • JNA Windows 服务启动类型

    我一直在使用 JNA 并且能够使用下面的代码返回 Windows 服务的状态 即启动或停止 但我不确定如何返回服务的启动类型 我确信 JNA 之外还有其他方法 但如果可能的话我想继续使用 JNA import com sun jna imp
  • AWS Java SDK 中 DynamoDB v2 的迁移详细信息?

    有没有人对新的命名空间进行了更改 com amazonaws services dynamodbv2 以及 AWS Java SDK 1 4 2 及更高版本 中 DynamoDB 的接口 本地二级指数的发布显然需要根据1 4 2 发行说明
  • 如何为信号量中等待的线程提供优先级?

    我使用信号量来限制访问函数的线程数量 我希望接下来要唤醒的线程应该由我将给出的某个优先级选择 而不是默认信号量唤醒它们的方式 我们怎样才能做到这一点 这是实现 class MyMathUtil2 implements Runnable do
  • 来自 Janino 和 Commons-Compiler 的 Spark java.lang.NoSuchMethodError

    我正在构建一个使用 Spark 进行基于随机森林分类的 应用程序 当尝试运行该程序时 我从该行收到异常 StringIndexerModel labelIndexer new StringIndexer setInputCol label
  • 为什么在 this 方法中添加 If 语句会大大降低速度?

    我在中遇到过这个回答另一个问题 https stackoverflow com questions 12233594 faster way to apply alpha to a jpeg in an android app 我试图诊断哪些

随机推荐

  • Google 地图:放置项目时 IE7 和 IE8 未捕获 mouseup 事件

    我不明白为什么这把小提琴不适用于 IE7 和 IE8 目标是在地图上拖动气球并捕获 mouseup 事件以检索项目已放置的坐标 如果用户没有拖动气球 该事件会在所有浏览器 包括 IE7 和 IE8 上正确触发 但是 如果用户拖动气球 IE7
  • UIActivityController 在设备和模拟器上的行为不同

    我将 ActivityViewController 添加到我的应用程序中 如下所示 传递图像 UIActivityViewController avc UIActivityViewController alloc initWithActiv
  • 编写一个 C# 程序,扫描电子商务网站并从中提取产品图片+价格+描述

    我正在开发一个电子商务搜索引擎 可以让您在很多电子商务网站中搜索产品 我该如何处理这个问题 我需要一个能够扫描网站 解析 HTML 并确定网站中的哪些图像是产品图像 哪些是产品描述 哪些是产品价格的应用程序 很高兴听到任何想法 例如 提前致
  • 使用 Azure AD Graph 客户端 API 更改用户密码的权限问题

    我正在尝试在 ASP Net MVC 中创建一个页面来重置当前用户的密码 我正在使用 Azure Active Directory 进行用户身份验证 为了访问用户的 AD 信息 我使用 C Graph API 客户端 我的代码基于以下位置的
  • 在 eclipse 中创建连接 - ClassNotFoundException: com.mysql.jdbc.Driver

    我没有在代码中执行任何操作 我只是创建了一个 Eclipse 连接 但似乎无法 ping 它 连接属性 该罐子就是我所说的位置 GLASSFISH HOME domains domain1 lib ext 但我得到 java lang Cl
  • “texlive”应该有什么权限?

    多年来我一直使用 MacTeX 它安装在 usr local texlive 并且最近开始使用 Homebrew 来管理一些包 尽管还没有 TeX 由于采用了 Homebrew 我改变了所有的所有者 usr local to Me admi
  • JSF 中有浏览按钮吗?

    我需要这个来实现我创建的基于网络的应用程序的导入功能 我需要获取用户想要导入的文本文件的路径 以便获取文本文件内的数据并将其保存在数据库中 标准 JSF 中没有这样的组件 但是 有几个组件库提供文件选择 PrimeFaces
  • 我在应用德摩根定律时遇到问题...反馈?

    每次我的作业中出现这些问题时 我都会做错 有人能帮助我理解吗 还是老师的钥匙关了 我无法知道 因为我没有得到正确的答案 它只能让我知道我的答案是错误的 Assume x 7 and y 5 应用德摩根定律 选择与以下逻辑表达式等效的逻辑表达
  • 在 pandas 数据帧上使用 cumcount 并有条件增量

    考虑数据框 df pd DataFrame A 1 A 1 B 1 B 0 A 0 A 1 B 1 columns key cond 我想找到每个的累积 运行 计数 从 1 开始 key 只有当组中的前一个值有时我们才会增加cond 1 当
  • C++ GetTextExtentPoint32 没有给出正确的大小[重复]

    这个问题在这里已经有答案了 我正在尝试使用获取文本字符串的大小获取文本范围点32 我多次阅读文档并做了一些研究 据我所知 下面的代码应该给我正确的width and height的文本 vFontFamily Segoe UI font f
  • 如何将GC日志写入命名管道

    我想配置 gc 日志以便它可以写入命名管道 有谁知道是否可能 命名管道是一种文件类型 您可以像任何其他文件一样对其进行写入 Try Xloggc my named pipe 注意 您需要确保正在读取管道 否则可能会导致 JVM 停止
  • 如何判断 win32 c++ 应用程序在 CTRL-ALT-DEL 后是否失去焦点?

    I ve written a win32 App in C a game and I want to be able to know if the application has lost focus due to the user pre
  • 如何用C++在Mac上创建文件夹?

    如何让用户输入文件夹名称并在桌面上创建它 对于 Mac 这就是我到目前为止所拥有的 以及下面的额外代码 include
  • 谷歌地图设置为免费驾驶模式[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我有一个 Android 应用程序 在 xml 文件中添加了 SupportMapFragment 在片段中我将位置设置如下 mMap setMyLocationEnabled true
  • Arm 模板 Web 应用程序发布配置文件

    我正在使用 ARM 模板部署 Web 应用程序 并且需要获取发布配置文件作为输出 有没有办法做到这一点 我看到了这个 天蓝色模板输出发布配置文件内容 但无法让它发挥作用 我尝试了引用和 listKeys 但没有一个属性是发布配置文件 Tha
  • 在没有 UrlScan 的情况下删除/隐藏/禁用 Azure/IIS7 中过多的 HTTP 响应标头

    我需要删除过多的标头 主要是为了通过渗透测试 我花了时间寻找涉及运行 UrlScan 的解决方案 但这些很麻烦 因为每次启动 Azure 实例时都需要安装 UrlScan Azure 必须有一个不涉及从startup cmd 部署安装程序的
  • DataFrame 化的 zipWithIndex

    我正在尝试解决向数据集添加序列号的古老问题 我正在使用 DataFrames 似乎没有相当于的 DataFrameRDD zipWithIndex 另一方面 以下内容或多或少按照我想要的方式工作 val origDF sqlContext
  • 在 .NET 中,“for”或“foreach”哪个循环运行得更快?

    在C VB NET NET中 哪个循环运行得更快 for or foreach 自从我读到for循环比a更快foreach loop a 很久以前我假设它适用于所有集合 通用集合 所有数组等 我在谷歌上搜索并找到了一些文章 但大多数都是不确
  • 有没有办法检查 git 标签是否与相应提交的内容匹配?

    在我工作的公司中 有些项目有project info文件包含程序 库 其他内容的当前版本 实际上 当有人想要标记一个版本时 他必须首先确保project info文件 已版本化 是最新的 并且包含与他要创建的标签名称相同的版本 不用说这很容
  • Red5视频流录制中断

    最后 我创建了一个流视频录像机 Flash 应用程序及其简单的 Red5 后端 但当然 Red5 又跟我开玩笑了 大多数时候 录制的视频都已损坏 如果不随机停止 恢复就无法播放它们 挂出播放器 还有我 它为什么要这样做 我在网上查了一下 发