[Решено] Caja mpv audio preview

Автор Aalexeey, 19 января 2023, 12:02:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Aalexeey

До недавнего времени использовал файл totem-audio-preview как ссылку на cvlc для предпроигрывания в vlc музыкальных файлов по касанию в caja. Т.к. из тотема выкинули totem-audio-preview, то и команда caja ссылку на этот файл удалила.
Было:
Открыть содержимое (спойлер)
static char **
get_preview_argv (char *uri)
{
    char *command;
    char **argv;

    command = g_find_program_in_path ("totem-audio-preview");

    if (command)
    {
        argv = g_new (char *, 3);
        argv[0] = command;
        argv[1] = g_strdup (uri);
        argv[2] = NULL;

        return argv;
    }

    command = g_find_program_in_path ("gst-launch-1.0");

    if (!command)
    {
        command = g_find_program_in_path ("gst-launch-0.10");
    }

    if (command)
    {
        int i;

        argv = g_new (char *, 10);
        i = 0;
        argv[i++] = command;
        argv[i++] = g_strdup ("playbin");
        argv[i++] = g_strconcat ("uri=", uri, NULL);
        /* do not display videos */
        argv[i++] = g_strdup ("video-sink=fakesink");
        argv[i++] = NULL;
        return argv;
    }

    return NULL;
}
[свернуть]
Стало:
Открыть содержимое (спойлер)
static char **
get_preview_argv (char *uri)
{
    char *command;

    command = g_find_program_in_path ("gst-launch-1.0");

    if (!command)
    {
        command = g_find_program_in_path ("gst-launch-0.10");
    }

    if (command)
    {
        char **argv;
        int i;

        argv = g_new (char *, 5);
        i = 0;
        argv[i++] = command;
        argv[i++] = g_strdup ("playbin");
        argv[i++] = g_strconcat ("uri=", uri, NULL);
        /* do not display videos */
        argv[i++] = g_strdup ("video-sink=fakesink");
        argv[i++] = NULL;
        return argv;
    }

    return NULL;
}
[свернуть]
Через gstreamer1.0-tools качество звука уступает плеерам и первый запуск идёт с задержкой, при долгом проигрывании caja зависает. Изменил немного код в fm-icon-view.c:
Открыть содержимое (спойлер)
static char **
get_preview_argv (char *uri)
{
    char *command;
    char **argv;

        command = g_find_program_in_path ("caja-audio-preview");

    if (command)
    {
        argv = g_new (char *, 3);
        argv[0] = command;
        argv[1] = g_strdup (uri);
        argv[2] = NULL;
        return argv;
    }

    if (!command)
    {
        command = g_find_program_in_path ("gst-launch-1.0");
    }

    if (command)
    {
        int i;
        argv = g_new (char *, 5);
        i = 0;
        argv[i++] = command;
        argv[i++] = g_strdup ("playbin");
        argv[i++] = g_strconcat ("uri=", uri, NULL);
        /* do not display videos */
        argv[i++] = g_strdup ("video-sink=fakesink");
        argv[i++] = NULL;
        return argv;
    }

    return NULL;
}
[свернуть]
Т.к. gst-launch-0.10 (gstreamer0.10-tools) сильно устарела, то заменил её на caja-audio-preview:
#!/bin/sh

sleep 0.3
exec /usr/bin/mpv --vo=null --no-video  --audio-display=no "$@"
exit 0
В caja 1.24 будет работать без правки кода.
https://debianforum.ru/index.php?topic=6879 100% защиты от "Ааааа у меня всё поломалось"