Find out RTSP container IP instead of using host.docker.internal

master
pabloFuente 2025-05-23 11:48:46 +02:00
parent 442b99771a
commit fe3e99e4e1
1 changed files with 24 additions and 15 deletions

View File

@ -36,6 +36,9 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.containers.wait.strategy.WaitStrategy; import org.testcontainers.containers.wait.strategy.WaitStrategy;
import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.DockerImageName;
import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.model.ContainerNetwork;
import io.livekit.server.IngressServiceClient; import io.livekit.server.IngressServiceClient;
import io.livekit.server.RoomServiceClient; import io.livekit.server.RoomServiceClient;
import io.openvidu.test.browsers.BrowserUser; import io.openvidu.test.browsers.BrowserUser;
@ -185,11 +188,11 @@ public class OpenViduTestE2e {
GenericContainer<?> rtspServerContainer = new GenericContainer<>(DockerImageName.parse(RTSP_SERVER_IMAGE)) GenericContainer<?> rtspServerContainer = new GenericContainer<>(DockerImageName.parse(RTSP_SERVER_IMAGE))
.withCreateContainerCmdModifier(cmd -> cmd.withName("rtsp-" + Math.random() * 100000)) .withCreateContainerCmdModifier(cmd -> cmd.withName("rtsp-" + Math.random() * 100000))
.withEnv(Map.of("MTX_LOGLEVEL", "info", "MTX_PROTOCOLS", "tcp", "MTX_RTSPADDRESS", ":8554", "MTX_HLS", .withEnv(Map.of("MTX_LOGLEVEL", "info", "MTX_PROTOCOLS", "tcp", "MTX_RTSPADDRESS", ":" + RTSP_SRT_PORT,
"no", "MTX_RTSP", "yes", "MTX_WEBRTC", "yes", "MTX_SRT", "no", "MTX_RTMP", "no", "MTX_API", "MTX_HLS", "no", "MTX_RTSP", "yes", "MTX_WEBRTC", "yes", "MTX_SRT", "no", "MTX_RTMP", "no",
"no")) "MTX_API", "no"))
.withExposedPorts(8889, 8554).waitingFor(Wait.forHttp("/").forPort(8889).forStatusCode(404)); .withExposedPorts(8889, RTSP_SRT_PORT).waitingFor(Wait.forHttp("/").forPort(8889).forStatusCode(404));
rtspServerContainer.setPortBindings(Arrays.asList("8554:8554")); rtspServerContainer.setPortBindings(Arrays.asList(RTSP_SRT_PORT + ":" + RTSP_SRT_PORT));
rtspServerContainer.start(); rtspServerContainer.start();
containers.add(rtspServerContainer); containers.add(rtspServerContainer);
@ -226,7 +229,13 @@ public class OpenViduTestE2e {
waitUntilLog(rtspServerContainer, regex, 15); waitUntilLog(rtspServerContainer, regex, 15);
} }
return "rtsp://host.docker.internal:" + RTSP_SRT_PORT + "/" + RTSP_PATH; String containerIp = "host.docker.internal";
InspectContainerResponse containerInfo = rtspServerContainer.getCurrentContainerInfo();
if (containerInfo != null) {
ContainerNetwork network = containerInfo.getNetworkSettings().getNetworks().values().iterator().next();
containerIp = network.getIpAddress();
}
return "rtsp://" + containerIp + ":" + RTSP_SRT_PORT + "/" + RTSP_PATH;
} }
/** /**
@ -296,17 +305,17 @@ public class OpenViduTestE2e {
private String getFileUrl(boolean withVideo, boolean withAudio, boolean lossless) throws Exception { private String getFileUrl(boolean withVideo, boolean withAudio, boolean lossless) throws Exception {
String fileUrl; String fileUrl;
if (withAudio && withVideo) { if (withAudio && withVideo) {
fileUrl = lossless ? fileUrl = lossless
"https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_fastdecode.mkv" : ? "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_fastdecode.mkv"
"https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal.mp4"; : "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal.mp4";
} else if (!withAudio && withVideo) { } else if (!withAudio && withVideo) {
fileUrl = lossless ? fileUrl = lossless
"https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_noaudio_fastdecode.mkv" : ? "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_640x360_30fps_normal_noaudio_fastdecode.mkv"
"https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_noaudio.mp4"; : "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_noaudio.mp4";
} else if (withAudio) { } else if (withAudio) {
fileUrl = lossless ? fileUrl = lossless
"https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio_fastdecode.flac" : ? "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio_fastdecode.flac"
"https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio.mp3"; : "https://s3.eu-west-1.amazonaws.com/public.openvidu.io/bbb_sunflower_1080p_60fps_normal_onlyaudio.mp3";
} else { } else {
throw new Exception("Must have audio or video"); throw new Exception("Must have audio or video");
} }