Proof-of-concept MPV-based player.
This commit is contained in:
parent
bbd7952232
commit
bad288a24b
41
src/main/nim/wdiwtlt.nim
Normal file
41
src/main/nim/wdiwtlt.nim
Normal file
@ -0,0 +1,41 @@
|
||||
import std/[os, uri]
|
||||
import mpv
|
||||
|
||||
when isMainModule:
|
||||
var ctx: ptr handle
|
||||
try:
|
||||
if paramCount() != 1:
|
||||
echo "pass a single media file as argument"
|
||||
quit(QuitFailure)
|
||||
|
||||
ctx = mpv.create()
|
||||
if ctx.isNil:
|
||||
echo "failed creating mpv context"
|
||||
quit(QuitFailure)
|
||||
|
||||
# Enable default key bindings, so the user can actually interact with
|
||||
# the player (and e.g. close the window).
|
||||
ctx.set_option("terminal", "no")
|
||||
ctx.set_option("input-default-bindings", "yes")
|
||||
ctx.set_option("input-vo-keyboard", "yes")
|
||||
ctx.set_option("osc", false)
|
||||
ctx.set_property("volume", "50.0")
|
||||
discard ctx.request_log_messages("no")
|
||||
|
||||
# Done setting up options.
|
||||
check_error ctx.initialize()
|
||||
|
||||
# Play this file.
|
||||
discard ctx.command_string("loadfile " & "file://" & encodeUrl(paramStr(1), false))
|
||||
# discard ctx.command_string(["loadfile ", "file://" & encodeUrl(paramStr(1), false)])
|
||||
|
||||
while true:
|
||||
let event = ctx.wait_event(10000)
|
||||
echo "event: ", mpv.event_name(event.event_id)
|
||||
if event.event_id == mpv.EVENT_SHUTDOWN:
|
||||
break
|
||||
except Exception:
|
||||
echo "wdiwtlt: " & getCurrentExceptionMsg()
|
||||
quit(QuitFailure)
|
||||
finally:
|
||||
mpv.terminate_destroy(ctx)
|
Loading…
x
Reference in New Issue
Block a user