1 import ./make-test-python.nix ({ pkgs, lib, ...} :
5 meta.maintainers = with lib.maintainers; [ fpletz ];
8 machine = { config, ... }: {
13 paths.all.source = "publisher";
17 systemd.services.rtmp-publish = {
18 description = "Publish an RTMP stream to mediamtx";
19 after = [ "mediamtx.service" ];
20 bindsTo = [ "mediamtx.service" ];
21 wantedBy = [ "multi-user.target" ];
24 Restart = "on-failure";
26 TimeoutStartSec = "10s";
27 ExecStart = "${lib.getBin pkgs.ffmpeg-headless}/bin/ffmpeg -re -f lavfi -i smptebars=size=800x600:rate=10 -c libx264 -f flv rtmp://localhost:1935/test";
31 systemd.services.rtmp-receive = {
32 description = "Receive an RTMP stream from mediamtx";
33 after = [ "rtmp-publish.service" ];
34 bindsTo = [ "rtmp-publish.service" ];
35 wantedBy = [ "multi-user.target" ];
38 Restart = "on-failure";
40 TimeoutStartSec = "10s";
41 ExecStart = "${lib.getBin pkgs.ffmpeg-headless}/bin/ffmpeg -y -re -i rtmp://localhost:1935/test -f flv /dev/null";
50 machine.wait_for_unit("mediamtx.service")
51 machine.wait_for_unit("rtmp-publish.service")
52 machine.wait_for_unit("rtmp-receive.service")
53 machine.wait_for_open_port(9998)
54 machine.succeed("curl http://localhost:9998/metrics | grep '^rtmp_conns.*state=\"publish\".*1$'")
55 machine.succeed("curl http://localhost:9998/metrics | grep '^rtmp_conns.*state=\"read\".*1$'")