VB6广播网络摄像头的解决方案
对不起,我知道VB6是几十年前的,但我处于一种情况,我不得不使用VB6在服务器 - 客户端模型程序中提供2台PC上的实时摄像头流。 Vb6代码保存连接,然后我别无选择,只能通过该连接传输所有数据。
我为此尝试了数周,不可数数的方法,但无处可去。 我的努力集中在三个主要方法上:
1 /使用ffmpeg将现场摄像头录制为硬盘上的“.avi”文件,将文件的部分传送到另一端并播放它。 但我用一个可以播放“正在写入”avi文件的媒体播放器。
Windows媒体播放器控件告诉我“文件已在使用中......”VLC插件甚至不能添加到VB6(axvlc.dll)。
2 /使用ffmpeg将现场摄像头保存为avi文件,将该文件的每一位传送到另一端,然后在另一端从AVI中提取24幅图像以连续显示在图片框中。 这种方法是可以的,只是我的硬盘在眨眼的时候充满了图像,而且我的程序在挂起之前变得非常慢。
3 /使用ffmpeg将现场摄像头流式传输到rtp端口,如下所示:
ffmpeg -f dshow -i video="Lenovo EasyCamera" -vcodec mpeg2video -pix_fmt yuv422p -f rtp -an rtp://224.1.2.3:8191
我已经成功地观看了VLC中的流,但是VLC(axvlc.dll)拒绝被整合到古老的VB6中。 更重要的是,我不知道如何使用VB6将rtp流重定向/重新路由到其他PC。
任何人请点亮我? (欢迎任何第三方组件)
经过一番研究,似乎微软使用rtsp,它是rtp协议的一种变体。 幸运的是ffmpeg支持这种格式的多路复用和解复用。 https://www.ffmpeg.org/ffmpeg-protocols.html#rtsp。 您可能需要调整概述的参数。
如果服务器必须是vb6前端,则可以从命令行启动作为后端的ffmpeg。 这是一种常用的方法,我在这里找到了一个示例:https://www.ehow.com/how_6038708_use-ffmpeg-visual-basic-6.html以供参考。
下一个阶段是在Visual Basic 6中播放这些流的功能。您可以添加一个Windows Media Player控件,并将其属性WindowsMediaPlayer1.URL设置为{一个列表,其中的url以字符串的形式添加到它中}。
一个版本的控件的ID为{6BF52A50-394A-11D3-B153-00C04F79FAA6},DLL是wmp.dll。 确保控件将autoStart&invokeURLs设置为true。
值得一提的其他一些事情是尝试使用符合WMP的编解码器并包含诸如Windows媒体视频。
链接地址: http://www.djcxy.com/p/21475.html