1

我正在本地计算机上运行 Video Recorder 应用程序(用 ActionScript 3.0 编写)。它使用安装在远程 Amazon EC2 服务器上的 Red5 服务器进行记录。

要录制,我使用以下设置

  • 宽度、高度和 FPS(用于Camera.setMode()) - 1920 x 1080 和 10
  • 带宽和质量(对于Camera.setQuality()) - 0 和 80
  • 缓冲时间 (for NetStream.setQuality()) - 3600

我可以录制视频直到缓冲区被填满(我一直在监控NetStream.BufferLength

一次,记录停止 - 缓冲区中的数据被发送到服务器。现在,当我尝试使用 ( bufferTime = 1) 播放时,视频不会出现。

我已经ssh进入 EC2 服务器并看到该文件确实在red5/webapps/vod/streams文件夹中创建,但我不确定它的质量或它是否已正确记录。我什至使用基于命令行的电影播放器mplayer​​来尝试播放文件,但它没有播放,因为我猜 Ec2 服务器 Ubuntu 缺少播放插件(虽然不确定。)

但是,当使用 640 x 480 而不是 1920 x 1080 进行低质量录制时,缓冲区不会被填充超过 0.1 或 0.2,并且视频可以流畅地播放。

我的 Internet 上传速度约为 300 kbps。

我如何(如果可能)录制并播放高质量视频?

4

2 回答 2

0

你需要使用

// Ensure that no more than 43690.6(43K/second) is used to send video. camera.setQuality(43690.6,0);

这对我有用。我使用了 Amazon EC2 超大实例。

于 2013-10-23T12:41:04.630 回答
0

您的问题源于这三个同时发生的原因:

  • 录制高质量视频,导致数据必须在本地缓冲
  • Flash Player 仅缓冲视频数据(适用于实时流式传输)
  • Red5 处理录制结束时出现的视频数据的错误机制

Red5一直被很多录音问题所困扰。这篇 HDFVR 文档文章涵盖了 Red5 的各种录制问题以及通过慢速连接录制时处理 FP 缓冲区的机制。

媒体服务器需要通过等待更多视频数据包来解决这个问题,并将它们与音频数据包一起排序,然后再将数据写入磁盘(.flv 文件)。

Red5 0.8 没有这样的机制,因此通过慢速连接录制高质量视频会导致低质量/加扰的视频文件(只是音频,最后是所有视频)。

Red5 0.9 的音频视频录制完全坏了。

Red5 1.0 RC1 有一个新的延迟写入机制——由 Red5/conf/red5-common.xml 控制——等待音频和视频数据并在将数据包写入磁盘之前重新排列它们。queueThreshold 值测量 rtmp 消息/数据包。

Red5 1.0 final、1.0.1 和 1.0.2 的延迟写入机制完全被破坏了。开启它后,通过慢速连接,Red5 正在生成只有 1 或 2 个视频关键帧的 .flv 文件。播放此类 .flv 文件时,视频会从第一秒开始卡住,并且只会继续播放音频。使用 yamdi 提取关键帧数据确认 .flv 文件缺少视频关键帧。

但是,由于HDFVR对 Red5 的代码贡献, Red5 1.0.3 及更高版本修复了慢速连接上的视频录制

于 2015-10-02T15:00:12.433 回答