* feat(jukebox): reduce jukebox code complexity
This removes an unessecary channel, but this is still pretty bad
* feat(jukebox): update flac/beep/oto so flac seeking works
* feat(encode): add mime-type headers to cache handlers
This commit adds a simple MIME-type guessing logic to `onCacheHit` and
`onCacheMiss` handlers, which sets `Content-Type` HTTP response header based on
format specified by transcoding profile.
* Make cacheFile stat() error fatal
Co-authored-by: Senan Kelly <senan@senan.xyz>
* Make linter happy
Good morning to you too, mister linter!
Co-authored-by: Senan Kelly <senan@senan.xyz>
Co-authored-by: Senan Kelly <senan@senan.xyz>
The tag library supports WMA, so add the mimetype.
Some wma files have embedded album art encoded as a video stream
alongside the audio:
```
Input #0, asf, from '01. Emergency Pulloff.wma':
Metadata:
(snip)
Duration: 00:03:11.47, start: 0.000000, bitrate: 129 kb/s
Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 200x200 [SAR 96:96 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
Metadata:
comment : Cover (front)
Stream #0:1: Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, stereo, fltp, 128 kb/s
Output #0, opus, to '/tmp/output.opus':
Output file #0 does not contain any stream
```
The `-map 0:0` passed to ffmpeg is selecting the video stream to
transcode, then `-vn` says not to transcode video, so the whole process
returns an error code:
```
2021/05/28 18:59:09 transcoding according to transcoding profile of 96k
2021/05/28 18:59:09 serving transcode `02. Cotton Patch Rag.wma`: cache [opus/96k] miss!
2021/05/28 18:59:09 serving transcode `02. Cotton Patch Rag.wma`: error: starting transcode: running ffmpeg: exit status 1
```
I believe the correct solution here is to use an _audio_ stream
specifier, as in `-map 0🅰️0`. Doing this selects the audio and
successfully performs the transcode.