我需要创建一组动态ffmpeg实例,用于侦听C ++程序中可用的端口。 ffmpeg实例使用标识为ffmpeg -i tcp://ip:port?listen ...
的命令创建,其中端口号应为可用空闲端口。然后在c ++程序中使用execv()
执行ffmpeg命令。
因此,我需要找到一个当前无法使用bind()
port=0
的免费端口。据我了解,bind()
会在尝试检查端口是否可用时绑定端口。
如果有办法在C ++中实现这一点,请告诉我。
感谢。
答案 0 :(得分:3)
您可以首先使用端口为0的 color = vec4(sqrt(M/S));
,这将自动绑定到空闲和未使用的端口。然后,使用bind()
找出您绑定的端口。然后关闭套接字,并执行getsockname()
侦听器,将其指向刚刚关闭的端口。
当然,在关闭套接字和ffmpeg
启动之间,其他任何东西都可以进入并抓住此端口。但无论你如何确定哪个端口可用,这都将成为现实。
通过更多的工作,你可以使这个过程变得更加可靠:继续告诉ffmpeg
绑定到端口0.假设它工作,在创建它的套接字后你可以查看{{1找到它的套接字,然后查看ffmpeg
以确定它绑定到哪个端口。