5 Publishing Media Files
| (require (file "../media-file-server.rkt")) | package: base |
This module publishes local files through a small Racket web server. The underlying Racket file dispatcher streams files and supports both HEAD requests and HTTP byte ranges. Byte ranges are important for media-renderer probing and seeking.
procedure
(start-media-file-server url [ #:listen-ip listen-ip]) → media-file-server? url : string? listen-ip : (or/c #f string?) = #f
When listen-ip is #f, the server listens on all local interfaces. Supply a local address, such as 10.7.3.118, to restrict the listener to that interface.
procedure
(media-file-server-url server) → string?
server : media-file-server?
procedure
(media-file-server-publish! server file url [ #:mime-type mime-type]) → string? server : media-file-server? file : path-string? url : string? mime-type : (or/c #f bytes? string?) = #f
The URL may be relative to the server URL:
(define uri (media-file-server-publish! files "C:/muziek/test.flac" "test.flac"))
It may also be the complete URL, provided that its origin and path prefix match the server:
(media-file-server-publish! files "C:/muziek/test.flac" "http://10.7.3.118:8080/media/test.flac")
The MIME type is inferred for common audio, video, and image extensions. Use #:mime-type to override it.
procedure
(media-file-server-unpublish! server url) → void?
server : media-file-server? url : string?
procedure
(media-file-server-stop! server) → void?
server : media-file-server?
5.1 Playing local files
(define files (start-media-file-server "http://10.7.3.118:8080/media/" #:listen-ip "10.7.3.118")) (define first-uri (media-file-server-publish! files "C:/muziek/first.flac" "first.flac")) (define second-uri (media-file-server-publish! files "C:/muziek/second.flac" "second.flac")) (media-renderer-play-uri! renderer first-uri #:next-uri second-uri)
Keep the URLs published until the renderer has finished reading them.