我想要做的是以下程序:
这将是直播。
我只需要第二步的帮助。 我正在使用AForge Framework检索相机图像。
我不想将帧写入文件然后解码它们,我想这会非常慢。
我想在内存中处理编码帧,然后创建要发送的数据包。
我需要使用开源编码器。已经尝试使用此示例后的x264
How does one encode a series of images into H264 using the x264 C API?
但似乎它只能在Linux上运行,或者至少在我尝试使用visual c ++ 2010编译示例时看到50个错误之后的想法。
我必须明确表示我在写这篇文章之前已经做过很多研究(1周阅读),但却无法找到(简单)方法。
我知道有RTMP协议,但视频流总是在一个(/?)时间由一个peroson看到,而RTMP更倾向于流向许多人。此外,我已经使用我制作的adobe flash应用程序流式传输但是太迟了¬¬。
还希望您给我一个关于它是否可以逐个发送帧的建议,或者如果在每个数据包中发送更多帧会更好。
我希望至少有人可以指出(正确?)正确的方向。
我的英语不好也许是等等。 :P
PS:不必在.NET中,只要它适用于Windows,它就可以使用任何语言。
很多很多人都提前感谢。答案 0 :(得分:2)
您可以尝试使用Microsoft的DirectShow技术。有一个opensource x264包装器可以在Monogram下载。
如果您下载过滤器,则需要使用regsvr32将其注册到操作系统。我建议做一些快速测试,看看这种方法是否可行,使用GraphEdit工具将网络摄像头连接到编码器,并查看配置选项。
还希望您给我一个关于它是否可以逐个发送帧的建议,或者如果在每个数据包中发送更多帧会更好。
这实际上取决于所需的延迟:您打包的帧越多,标头开销越少,但由于您必须等待多个帧进行编码才能发送它们,因此延迟越多。对于实时流,延迟应保持最小,并且使用的典型协议是RTP / UDP。这意味着您的最大数据包大小限制为网络的MTU,通常要求IDR帧被分段并以多个数据包发送。
我的建议是不要担心在一个数据包中发送更多帧,直到/除非你有理由。这通常是音频流传输所必需的,因为头部大小(例如IP + UDP + RTP)被认为与音频有效载荷有关。