diff --git a/src/host/wayland.rs b/src/host/wayland.rs index bb30d0e..9459630 100644 --- a/src/host/wayland.rs +++ b/src/host/wayland.rs @@ -225,8 +225,15 @@ async fn serve_capture(listener: TcpListener, mut gst_stdout: ChildStdout) { return; } + // Content-Type intentionally application/octet-stream, not video/mp2t. + // VLC eagerly maps video/mp2t to demux="ts" and bypasses content + // probing; its ts demuxer's Open then fails on the live HTTP stream + // with "no demux modules matched" and the input never opens. With a + // non-video Content-Type, VLC falls back to byte-probing, which finds + // the TS sync pattern and opens cleanly. mpv probes regardless of + // Content-Type, so it's unaffected. const RESPONSE: &[u8] = b"HTTP/1.1 200 OK\r\n\ - Content-Type: video/mp2t\r\n\ + Content-Type: application/octet-stream\r\n\ Cache-Control: no-cache, no-store\r\n\ Connection: close\r\n\ \r\n";