1

I am creating a background music player and I wanted to use the MPV C Plugin to do so, but my problem arrives when I disable displaying the video (with check_error(mpv_set_option_string(ctx, "vid", "no"));, this does the job of disabling the video, but then I can't use keys (like q (quit) or > (skip)) anymore... How do I allow them to be used in the terminal without the video GUI?

My Code:

#include <iostream>
#include <mpv/client.h>

static inline void check_error(int status)
{
    if (status < 0)
    {
        std::cout << "mpv API error: " << mpv_error_string(status) << std::endl;
        exit(1);
    }
}

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        std::cout << "pass a single media file as argument" << std::endl;

        return 1;
    }

    mpv_handle *ctx = mpv_create();
    if (!ctx)
    {
        std::cout << "failed creating context" << std::endl;
        return 1;
    }

    check_error(mpv_set_option_string(ctx, "input-default-bindings", "yes"));
    mpv_set_option_string(ctx, "input-vo-keyboard", "yes");
    int val = 1;
    check_error(mpv_set_option(ctx, "osc", MPV_FORMAT_FLAG, &val));

    check_error(mpv_initialize(ctx));

    const char *cmd[] = {"loadfile", argv[1], NULL};
    check_error(mpv_command(ctx, cmd));

    // THIS IS WHAT I USE TO DISABLE THE VIDEO
    // check_error(mpv_set_option_string(ctx, "vid", "no"));

    // Let it play, and wait until the user quits.
    while (1)
    {
        mpv_event *event = mpv_wait_event(ctx, 10000);
        std::cout << "event: " << mpv_event_name(event->event_id) << std::endl;

        if (event->event_id == MPV_EVENT_SHUTDOWN)
            break;
    }

    mpv_terminate_destroy(ctx);
    return 0;
}

As you can see with mpv_set_option_string(ctx, "input-default-bindings", "yes") I allow it to use keybinding, but how do I make the keybinding works with just the terminal, since it only works when the GUI is visible? If you ran: mpv path/to/video.mp3 --no-video then the key bindings would still work fine, even without the video GUI.

Netsu
  • 1,399
  • 1
  • 7
  • 18

0 Answers0