udpxy的作用是将组播的数据流变成TCP协议的单播流,避免了在数据链路层广播,在无线网络中尤为需要。同时电视也不支持udp格式的视频流。
udpxy在官方的软件源中,直接安装即可
udpxy没有独立的配置文件,修改参数直接在启动脚本中完成
udpxy手册页 udpxy - UDP到HTTP多播流量中继守护程序。
概要
udpxy [-vTS] [-a <listenaddr>] [-m <mcast_ifc_addr>] [-c <clients>] [-l <logfile>] [-B <sizeK>] [-R <msgs>] [-H <sec>] [-n <nice_incr>] [-M <sec>] -p <port>
描述
udpxy是UDP到HTTP多播流量中继守护程序:它将UDP流量从给定的多播订阅转发到请求的HTTP客户端。
udpxy监听(在专用地址/端口上)客户端发出的HTTP请求。客户请求的结构应为:
http://{ address }:{ port }/{ cmd }/{ mgroup_address }[ SEP ]{ mgroup_port }
[SEP]
:|%|〜| + | - | ^
{cmd},在
UDP | RTP
其中地址和端口与udpxy 的侦听地址/端口组合匹配,mgroup_address:mgroup_port标识要预订的多播组/通道。
UDP
# udp命令将对已知类型的有效负载(例如MPEG-TS和MPEG-TS上的RTP)进行udpxy探测;
RTP
# rtp命令使udpxy假定RTP超过MPEG-TS有效载荷,从而跳过探测器。
udpxy将为每个新的中继请求启动一个单独的客户端进程(在活动客户端的指定限制内)。客户端进程将(从UDP套接字)接收的所有网络流量从指定的多播组中继/转发到请求的HTTP连接。
udpxy还支持一些管理请求:
状态
http:// address:port / status /发回带有守护程序状态和客户端统计信息的HTML页面。
重新开始
http:// address:port / restart /关闭所有活动连接并重启。
例子
http://192.168.0.12:5056/udp/224.0.2.26:24012
http://192.168.0.12:5056/rtp/224.0.2.26:24012
http://192.168.0.15:5056/rtp/224.0.2.26^24055
http://192.168.0.15:5056/status/
选项
udpxy接受以下选项:
-v
# 启用详细输出[default = disabled ]。
-S
# 启用客户端统计信息[default = disabled ]。
-T
# 不要作为守护进程运行[default = daemon if root ]。
-a <listenaddr>
# 要侦听的IPv4地址/接口[default = 0.0.0.0 ]。
-m <mcast_ifc_addr>
# (组播)源的IPv4地址/接口[默认= 0.0.0.0 ]。
-c <clients>
# 要接受的最大客户端数[default = 3,max = 5000 ]。
-l <logfile>
# 将输出记录到文件[default = stderr ]。
-B <sizeK>
# 入站(多播)数据的缓冲区大小(65536,32Kb,1Mb)[默认= 2048字节 ]。
-R <msgs>
# 要缓冲的最大消息数(-1 = 全部)[default = 1 ]。
-H <sec>
# 在缓冲区中保存数据的最长时间(以秒为单位)(- 1 = 无限制)[默认值= 1 ]。
-n <nice_incr>
# 好的值增量[default = 0 ]。
-M <sec>
# 每M秒更新一次多播订阅(如果为0则跳过)[default = 0 ]。
-p <port>
# 端口。
有效载荷类型和处理 udpxy 通过中继数据包中的MPEG-TS有效载荷识别MPEG-TS和RTP ; 如果udpxy遇到RTP有效载荷,它会自动将其“转换”为MPEG-TS(通过剥离RTP头),以便不识别RTP的媒体播放器仍然可以播放该流。
到目前为止,没有为其他有效负载类型执行转换。
录制Mpeg流量 udpxy包括将捕获的流量记录为原始MPEG-TS流到文件中的功能。此功能通过udpxrec启用:与udpxy链接在一起的捆绑应用程序(作为一个可执行文件)。
udpxrec通过符号链接(名为udpxrec)调用udpxy可执行文件(即不重命名 udpxy可执行文件)。
udpxrec创建封装MPEG-TS段的MPEG文件; 某些媒体播放器不会播放此类文件; 为了使它们可播放,必须将流转码为MPEG-PS; vlc'知道'如何进行这样的转码,这是一个命令行示例:
vlc input-ts.mpg --sout =“#std {access = file,mux = ps,dst = out-ps.mpg}”
由此产生的MPEG-PS文件可以由大多数媒体播放器播放。
环境
udpxy利用以下环境变量来补充其命令行选项; 变量被考虑用于大多数人不需要经常更改的选项(或者从命令行使用简单不方便)。
注意:如果存在与功能环境变量相交的命令行开关,则交换机始终具有更高的优先级。
UDPXY_RCV_TMOUT
# 入站数据流(多播)的超时(秒),默认= 5 ;
UDPXY_DHOLD_TMOUT
# 在发送/刷新到客户端之前保持缓冲数据的超时(秒),默认值= 1 ;
UDPXY_SREAD_TMOUT
# 从监听socked(处理HTTP请求)读取超时(秒),默认= 1 ;
UDPXY_SWRITE_TMOUT
# 写入侦听socked(处理HTTP请求)的超时(秒),默认值= 1 ;
UDPXY_SSEL_TMOUT
# 在服务器循环中选择(2)的超时(秒)(如果使用pselect(2)则未使用),默认值= 30 ;
UDPXY_LQ_BACKLOG
# 侦听器套接字的backlog大小,默认值= 16 ;
UDPXY_SRV_RLWMARK
# 接收(m-cast)套接字上的低watermaek,默认= 0(未设置);
UDPXY_SSOCKBUF_NOSYNC
# 不同步入站(UDP)套接字的缓冲区大小(由-B设置的值),默认= 1(同步);
UDPXY_DSOCKBUF_NOSYNC
# 不同步出站(TCP)套接字的缓冲区大小(由-B设置的值),默认= 1(同步);
UDPXY_TCP_NODELAY
# 在新接受的套接字上禁用Nagle算法(更快的频道切换),默认= 1 ;
UDPXY_HTTP200_FTR_FILE
# 将给定文本文件的内容追加到HTTP 200响应中,default = none ;
UDPXY_HTTP200_FTR_LN
# 将文本(行)附加到HTTP 200响应,默认= 无 ;
UDPXY_ALLOW_PAUSES
# 如果在写入(2)上被阻塞,则继续读取数据直到缓冲区(-B <sizeK>)已满,默认= 禁用 ;
UDPXY_PAUSE_MSEC
# 在写入时阻塞时仅允许N毫秒读取数据(2)。
UDPXY_CONTENT_TYPE
# 在HTTP响应中指定自定义Content-Type。