我想知道是否有人做过这样的事情。我有一部高清电影(甚至是 720p 电影),我想将它发送到 Flash 客户端。我正在考虑在 C++ 中使用 OpenCV 进行解码和发送部分。我什至已经实现了其中的一些,但是有错误的数据包大小的问题。
但我的问题是不同的,有没有人做过类似的事情?这能给性能提升带来机会吗?我对此有强烈的怀疑,因为我认为Flash机器的发送和解码仍然会很困难。期待听到更多有经验的朋友的意见。
我想知道是否有人做过这样的事情。我有一部高清电影(甚至是 720p 电影),我想将它发送到 Flash 客户端。我正在考虑在 C++ 中使用 OpenCV 进行解码和发送部分。我什至已经实现了其中的一些,但是有错误的数据包大小的问题。
但我的问题是不同的,有没有人做过类似的事情?这能给性能提升带来机会吗?我对此有强烈的怀疑,因为我认为Flash机器的发送和解码仍然会很困难。期待听到更多有经验的朋友的意见。
不是真正的答案,更像是对您的问题的想法:
基本上有两种网络协议通常用于将视频从服务器发送到 Flash 客户端,即 HTTP 和 RTMP。
HTTP 是一个众所周知的标准,很容易实现,因为它是一个纯文本协议,它允许 Flash Player 播放点播视频文件,或执行所谓的伪流。
RTMP 是 Adobe 创建的专有协议,允许实时流式传输和视频点播,还可以传输结构化二进制数据(AMF 格式)以充当远程过程调用协议。虽然现在记录在案,但实现起来比 HTTP 复杂得多,但是有一个实现该协议的开源库 librtmp,位于http://rtmpdump.mplayerhq.hu/。
请注意,我在客户端成功地使用了 librtmp,让 C 程序充当 Flash 客户端,在 FMS 服务器上发布视频。我没有在服务器端使用它的经验,我什至不知道它是否可能。
在您的情况下,我当然建议使用 HTTP。
现在还有一个问题需要克服,要正确识别视频帧,它们必须嵌入到 Flash 播放器可以读取的容器中。
Flash 目前支持两种容器格式,FLV 和 F4V,后者是 MPEG-4 容器格式的子集。
此外,视频流必须可由 Flash 读取,因此必须正确编码为客户端支持的格式,例如 H.264、Sorensen 或 VP6。
可以直接将 GIF、JPEG 或 PNG 图像作为帧发送,如官方Flash 视频规范的第 8 页所示,但您必须意识到,在高清分辨率下,这将是极其低效的,想象一下在 25 FPS 下, JPEG 格式的 1920x1080 像素的单个图像比等效的 H.264 帧大得多。
所以,最后,我的建议是:不要在服务器上解码视频,确保它的格式与 Flash 兼容,并使用有据可查的协议按原样发送。