1 import ./make-test-python.nix (
6 meta.maintainers = with lib.maintainers; [ fpletz ];
14 paths.all.source = "publisher";
18 systemd.services.rtmp-publish = {
19 description = "Publish an RTMP stream to mediamtx";
20 after = [ "mediamtx.service" ];
21 bindsTo = [ "mediamtx.service" ];
22 wantedBy = [ "multi-user.target" ];
25 Restart = "on-failure";
27 TimeoutStartSec = "10s";
28 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";
32 systemd.services.rtmp-receive = {
33 description = "Receive an RTMP stream from mediamtx";
34 after = [ "rtmp-publish.service" ];
35 bindsTo = [ "rtmp-publish.service" ];
36 wantedBy = [ "multi-user.target" ];
39 Restart = "on-failure";
41 TimeoutStartSec = "10s";
42 ExecStart = "${lib.getBin pkgs.ffmpeg-headless}/bin/ffmpeg -y -re -i rtmp://localhost:1935/test -f flv /dev/null";
51 machine.wait_for_unit("mediamtx.service")
52 machine.wait_for_unit("rtmp-publish.service")
54 machine.wait_for_unit("rtmp-receive.service")
55 machine.wait_for_open_port(9998)
56 machine.succeed("curl http://localhost:9998/metrics | grep '^rtmp_conns.*state=\"publish\".*1$'")
57 machine.succeed("curl http://localhost:9998/metrics | grep '^rtmp_conns.*state=\"read\".*1$'")