当前位置: 首页 > 知识库问答 >
问题:

在PHP中获取UDP多播流

楚鸿波
2023-03-14

我正在尝试用PHP接收UDP多播流。receive命令从不获取任何内容,而是一直等待。

我可以使用VLC播放器观看流,以便在我的机器上访问流。非常感谢有关如何使用PHP执行此操作的任何帮助。

这是我的密码。

<?php
error_reporting(E_ALL | E_STRICT);

//创建新套接字

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

//我不确定这个命令。我想我必须设置此选项才能开始接收数据包。

socket_set_option($socket, SOL_SOCKET, MCAST_JOIN_SOURCE_GROUP, array("group"=>"239.194.0.73","interface"=>"eth0","source"=>"239.194.0.73"));
$binded = socket_bind($socket, '127.0.0.1', 6073);

//接收数据

$from = '';
$port = 0;
socket_recvfrom($socket, $buf, 12, MSG_WAITALL, $from, $port);
echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
?>

共有1个答案

谢璞
2023-03-14
$binded = socket_bind($socket, '127.0.0.1', 6073);

应该是

$binded = socket_bind($socket, '0.0.0.0', 6073);

否则,您将只接收来自本地主机的数据包。

 类似资料:
  • 我目前正在开发一个需要解码UDP多播RTSP流的应用程序。目前,我可以通过ffplay查看RTP流 但是,我尝试使用FFMPEG通过(为了简洁起见,删除了错误检查和清理代码)打开UDP流。 这种方法适用于包含原始编码视频流的文件输入,但对于UDP多播RTSP流,它无法通过对执行的任何错误检查。请告知...

  • 问题内容: 我需要使用同一端口收听2个不同的多播组。会从和那里听。两个多播组都使用相同的文件,但我无法控制它。 运行程序时,我在每个程序中都接收到两个多播流,即和上广播的数据包。我怀疑问题是由于通用端口引起的。这是我用来订阅多播的代码: 如何在每个程序中过滤特定的多播组? 问题答案: 如果你改变 至 您可能会获得更大的成功。 (如果您更改程序以使用,则可以使其适应未来。)

  • 如上所述,我使用FFmpeg(命令行)通过UDP传输网络摄像头。在客户端,我使用Java OpenCV,即捕获行<代码>视频捕获。打开(“udp://xx.xx.xx.xx:xx) 。如果我将流作为mpegts(ffmpeg-f mpegts)发送,我可以显示流,但是;如果我把它作为rawvideo(ffmpeg-f rawvideo)发送,我不能。 是否有要设置的参数(如CvType)?

  • 我们所有的例子这一点利用传输方式称为“单播”:“将消息发送给一个网络拥有唯一地址的目的地”,这种模式支持连接和无连接协议。 然而,UDP 提供了额外的传输模式对多个接收者发送消息: 多播:传送给一组主机 广播:传送到网络上的所有主机(或子网) 示例应用程序在本章将说明使用 UDP 广播发送消息,可以接收到所有主机在同一网络。为此我们将使用特殊的“有限广播”或“零”网络地址255.255.255.2

  • 问题内容: 一直试图获取SCOPE_IDENTITY()(最后一个插入到DB中的ID)并将其作为变量存储在我的PHP函数中。 这是我目前拥有的: 我做错了什么? 编辑: 另外…在构造中,我试图在$ this-> post中传递ID($ this-> Id),但它返回0。我可以看到这是由于我只设置了$查询通过后this-> Id,因此返回0,但我不确定如何继续。有什么建议? 问题答案: 首先,您的问

  • 我想在服务器端和客户端使用多播套接字。服务器将发送数据,客户端将接收数据。同时,如果数据丢失,客户端将向服务器发送nack数据包,服务器将收到nack数据包。我应该如何实现这一点,一个多播组和一个套接字端口,两个多播组和两个套接字端口?我希望服务器可以同时发送数据和接收nack,这可能吗? 非常感谢。