0

以下链接描述了如何构建一个 flash 项目,该项目从网络摄像头捕获视频流,编码为 h264 并通过网络连接将其流式传输到媒体服务器:

http://www.adobe.com/devnet/adobe-media-server/articles/encoding-live-video-h264.html

我有限的经验是,这种方法受到可用带宽的限制,即如果项目配置为以超过可用带宽的比特率录制视频,则会丢弃帧并且缺少最终视频。

我想知道闪存中是否有设备可以记录到本地存储或内存缓存,然后在记录完成后将其上传到媒体服务器?这让 Web 应用程序花费额外的时间上传,因为上传与录制是分离的,并且视频比特率和带宽之间没有争用。

4

2 回答 2

2

Actually there is a way. I've built a library encoding videos in web Flash (or AIR) by recompiling C/C++ code. It stores the video into memory as ByteArray and currently works with ogv(Theora/Vorbis codecs). It can also run in "realtime" mode which runs the encoding on another thread so it's capturing and encoding at the same time. You can try a free version anytime and see if it's useful or not...http://rainbowcreatures.com/product_flashywrappers.php. If the video being encoded is relatively short(dozens of seconds) and lower res(640x480, 800x600) the size is max. 5-15 MB.

I've been able to build demos with it to share the video to php, Facebook or store to disk.

于 2014-02-27T14:08:21.490 回答
1

除非您正在运行 AIR 应用程序,否则 Flash 中不存在此类功能。关于本地存储,SharedObject如果我没记错的话,基于 Web 的应用程序只有 . 你很幸运能在那个空间录制一帧视频。

您可以尝试直接保存到内存中(即,将其保留为ByteArray),但根据所使用的操作系统、浏览器和插件,您的应用程序可能会因过度使用内存而被迫关闭。即使没有,这也将是一个糟糕的选择,因为其中可能有一个具有 512MB RAM 的系统,而您正试图在其中保存一个 300MB 的文件。你会在不眨眼的情况下减慢那个系统(甚至更好的系统)。

如果您使用的是 AIR,您可以将视频保存到内存中,然后每隔几秒,使用File和将其保存到磁盘FileStream。唯一的限制是保存它的驱动器的大小。然后,您可以在录制结束时或用户满意时上传。

于 2013-10-25T18:20:11.167 回答