【发布时间】:2014-08-23 13:00:54
【问题描述】:
对不起,我知道 VB6 是几十年前的事了,但我不得不使用 VB6 在服务器 - 客户端模型程序中提供 2 台 PC 之间的实时网络摄像头流。 VB6 代码保持连接,然后我别无选择,只能通过该连接传输所有数据。
我已经为此尝试了数周,无数种方法,但无济于事。 我的努力集中在 3 种主要方法上:
1/ 使用ffmpeg将实时网络摄像头录制为“.avi”文件在硬盘上,将部分文件传输到另一端并播放。但我一直坚持使用可以播放“正在编写”的 avi 文件的媒体播放器。
Windows Media Player 控件告诉我“文件已在使用中...”& VLC 插件甚至无法添加到 VB6 (axvlc.dll)。
2/使用ffmpeg将live webcam保存为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。
有人请给我点灯吗? (欢迎任何第 3 方组件)
【问题讨论】:
-
如果您所做的只是将工作卸载到 ffmpeg 或 VLC,为什么它必须是 VB6? A) 周围没有很多现成的网络摄像头应用程序吗? B) 你考虑过 DirectShow 吗?还有其他旧技术选项(但我曾经使用的一些链接现在与 VB6 一样死了)很难根据您尝试的内容准确判断您在追求什么。最后,如果 #2 有效,为什么不改进它以删除已显示的图像?
-
@Plutonix:这是一个复杂的情况,我必须使用 VB6。但主要原因是我必须使用 VB6 代码创建的 TCP/UDP 连接在两台 PC 之间传输所有数据。而且我从来没有听说过任何可以在两个独立的程序之间共享连接的技术,所以我坚持使用 VB6 和一小组与 VB6 兼容的组件/技术。 #2 不可行的原因是每秒创建/显示/删除 24 个大小约为 100kb 的图像不是一个稳定的解决方案,它对资源的贪婪和 HDD 很快就会碎片化。
-
@Plutonix:我必须通过 VB6 的预安装连接传输所有数据这一事实消除了几乎所有与 VB6 不兼容的即用型解决方案
标签: vb6 ffmpeg streaming webcam