didl toevoegingen

This commit is contained in:
2026-07-30 22:32:12 +02:00
parent 83b939b60d
commit 2acd9ac87f
12 changed files with 320 additions and 35 deletions
+25 -4
View File
@@ -8,6 +8,7 @@ the generic service escape hatch is used.
```text
upnp/main.rkt generic public interface
upnp/didl-lite.rkt DIDL-Lite metadata generation
upnp/media-renderer.rkt high-level renderer operations
upnp/media-server.rkt high-level MediaServer browser
upnp/services/av-transport.rkt playback transport
@@ -135,6 +136,17 @@ Normal playback code need not mention AVTransport or SOAP:
(require upnp
upnp/media-renderer)
(define files
(start-media-file-server
"http://10.7.3.118:8080/media/"
#:listen-ip "10.7.3.118"))
(define uri
(media-file-server-publish!
files
"C:/muziek/test.flac"
"test.flac"))
(define denon
(car (query-media-renderers
#:interface "10.7.3.118"
@@ -142,7 +154,13 @@ Normal playback code need not mention AVTransport or SOAP:
(media-renderer-play-uri!
denon
"http://10.7.3.118:8080/media/test.flac")
uri
#:metadata
(media-file-server-didl-lite
files
uri
#:title "Test track"
#:duration 639))
(media-renderer-seek! denon 120)
(media-renderer-set-volume! denon 30)
@@ -151,9 +169,12 @@ Normal playback code need not mention AVTransport or SOAP:
`query-media-renderers` returns all UPnP MediaRenderers by default. Add
`#:dlna-only? #t` to retain only devices advertising `X_DLNADOC`.
A later HTTP media-serving module can implement `play-file!` by publishing a
local file through Racket's web-server framework and passing the resulting URL
to `media-renderer-play-uri!`.
For local files, `media-file-server-publish!` supplies a byte-range-capable
HTTP URL. `media-file-server-didl-lite` generates matching DIDL-Lite metadata,
including MIME type, file size, duration, and `DLNA.ORG_OP=01`. Some renderers,
including certain Denon models, only advertise `Seek` after receiving this
metadata. Generate and pass matching metadata for both the current URI and a
preloaded next URI.
## Documentation and tests