我想知道是否有人做过这样的事情。我有一部高清电影(甚至是720p),我想把它发送到Flash客户端。我正在考虑在C ++中使用OpenCV来解码和发送部分。我甚至已经实现了一些,但是数据包大小有问题。
但我的问题不同,有人做过类似的事吗?这是否可以提高性能?我对此有很强的疑虑,因为我认为Flash机器的发送和解码仍然很困难。期待听到更有经验的人的一些意见。
答案 0 :(得分:0)
不是真正的答案,更像是对你的问题的想法:
答案 1 :(得分:0)
基本上有两种网络协议通常用于将视频从服务器发送到闪存客户端,HTTP和RTMP。
HTTP是一个众所周知的标准,很容易实现,因为它是一个纯文本协议,允许Flash Player播放点播视频文件,或执行所谓的pseudo-streaming。
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 Video Specification的第8页所示,但你必须意识到,在高清分辨率下,这将是非常低效的,只是想象一下在25 FPS时,JPEG中1920x1080像素的单个图像远远大于等效的H.264帧。
所以,最后,我的建议是:不解码服务器上的视频,确保它的格式与Flash兼容,并使用记录良好的协议发送原样。