CuePlayer (Очередной медиаплеер на Qt + Gstreamer.)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: CuePlayer

Сообщение RasenHerz »

ipse666 писал(а):
19.05.2010 19:20
RasenHerz
Размер проигрывателя при открытии слишком большой, надо чтоб был минимальным.
При сворачивании/разворачивании списка меняется размер по-горизонтали, и размер слайдера и вообще виджеты прыгают. Некрасиво.
С включенной интеграцией видеоокна вообще шняга полная, да и с обложкой альбома тоже, с каталогами тоже. Кнопку развернуть список нажимаю, а оно не расширяет окно, а пытается в нем уместиться.
Изображение
В общем этот вариант еще пилить и пилить до вменяемого состояния.

А вот с fsuffixes правка годная, сейчас внесу в код.

Я уже заметил что реализация совсем не фонтан, чуть позже попробую сделать все в виде тулбара со встроенными виджетами (или одним виджетом), код придется частично переработать (сейчас все как-то "деревянно" и тяжело подается модернизации, а надо стремится к тому чтобы главное окно предоставляло только пару основных функций: размещение виджетов и управление ими, все остальные функции проигрывателя пусть агрегатируются в соответствующих модулях-виджетах). Вот как-то так. =)
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Это хорошо, лишние кодеры - проекту не помеха.
Тут помимо интерфейсов тоже хватает проблем, если кто за них возьмется, будет хорошо.
Основные:
1. Надо найти быстрый способ узнать продолжительность медиафайла при загрузки с каталога (в multiFileInit), то что сейчас никуда не годится, при количестве файлов переваливающих за 50, загрузка списка весьма продолжительна и ощутима таже на неслабых машинах. И сделать бы это без тяжелых и редкоиспользуемых либ, типа MediaInfo. Средствами gst или ffmpeg, чтоб не добавлять лишних зависимостей. Можно посмотреть как это реализованно в Decibel, он тоже на gst, но в питоне я совершенно не волоку.

2. Кодеки для ape входящие в gst-ffmpeg корявы, как следствие при переключении на другой трек играется секунду кусок с начала альбома. Китайцы сделали плагин на libmaс, в нем такой проблемы нет, но плагин не поддерживается давно, да и падуч. В общем неплохо бы интегрировать его в проигрыватель, а еще лучше сделать декодер для ape на базе вот этого, это было бы в идеале.
Спасибо сказали:

Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: CuePlayer

Сообщение RasenHerz »

ipse666 писал(а):
19.05.2010 20:50
Тут помимо интерфейсов тоже хватает проблем, если кто за них возьмется, будет хорошо.

Кстати об интерфейсах... Неплохо бы вам сделать все-таки класс CuePlayer синглтоном и добавить в него функции, с помощью которых можно управлять размещением виджетов на layout'e (хватит примитивных добавить/удалить виджет с формы, в качестве layout'a лично я обычно использую QDockWidget, который устанавливаю центральным виджетом формы). Такое поведение сделает вашу программу очень гибкой в плане добавления новых типов виджетов.

UPD.
Вот так можно сделать интерфейс определяющий виджет, который может быть размещен на форме: http://code.google.com/p/eiskaltdc/source/...p/ArenaWidget.h
Такие функции можно добавить в CuePlayer:

Код: Выделить всё

        /** Allow widget to be mapped on arena*/
        void addArenaWidget(ArenaWidget*);
        /** Disallow widget to be mapped on arena*/
        void remArenaWidget(ArenaWidget*);
        /** Show widget on arena */
        void mapWidgetOnArena(ArenaWidget*);
        /** Remove widget from arena*/
        void remWidgetFromArena(ArenaWidget*);

Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Какие например виджеты чтоб добавлять? Основные я хочу чтоб все-таки были жестко в ui, а дополнительные тоже несложно добавить сверху или справа. Можно сделать конечно к этому удобный интерфейс, несложно.
Перегружать виджетами интерфейс программы и лепить амарок не хотелось бы. Максимум функционала при минимальных интерфейсах, не в ущерб удобству, такая вот идеология у этого проигрывателя, поэтому даже 2 дополнительные кнопки опционально скрываются.
Спасибо сказали:

Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64

Re: CuePlayer

Сообщение Tverskoy »

В микшере все включено, не воспроизводит любые файлы, консоль ошибок не выдает. Может сделаешь настройки для звуковой системы, хотя бы "выбор устройства вывода", "использовать программную регулировку громкости".
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Дай информацию о своей системе.
Спасибо сказали:

Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64

Re: CuePlayer

Сообщение Tverskoy »

ipse666 писал(а):
23.05.2010 13:51
Дай информацию о своей системе.

Что нужно?
Mandriva Linux release 2010.0 (Official) for i586
Kernel 2.6.31.13-desktop-1mnb on a Dual-processor i686 / \l
KDE 4.3.5
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

Попытался собрать и запустить на ALT Linux 5.0 Desktop. Собраться, собралось, запускаться, запускается, но вот ничего не хочет проигрывать. Ни один из форматов... :(

В консоли пишет следующее:

Код: Выделить всё

[nenderus@nenderus-pc cueplayer-0.25]$ ./cueplayer
Обнаружен файл типа audio/x-flac, инфа 100%
socket(): Семейство адресов не поддерживается протоколом
Останов конвеера
Обнаружен файл типа video/x-msvideo, инфа 100%
socket(): Семейство адресов не поддерживается протоколом
Останов конвеера
Обнаружен файл типа application/x-id3, инфа 100%
socket(): Семейство адресов не поддерживается протоколом
Останов конвеера

(<unknown>:12768): GStreamer-CRITICAL **: gst_element_set_state: assertion `GST_IS_ELEMENT (element)' failed

(<unknown>:12768): GStreamer-CRITICAL **: gst_element_query_duration: assertion `GST_IS_ELEMENT (element)' failed
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Nenderus писал(а):
24.05.2010 22:39
Попытался собрать и запустить на ALT Linux 5.0 Desktop. Собраться, собралось, запускаться, запускается, но вот ничего не хочет проигрывать. Ни один из форматов... :(

Ставь
gst-plugins-good
gst-plugins-bad
gst-plugins-base
gst-ffmpeg
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

Я их вчера и так поставил:

[nenderus@nenderus-pc cueplayer-0.25]$ rpm -qa | grep gst
gst-plugins-bad-0.10.16-alt1
gst-plugins-video-filters-0.10.0-alt2
gstreamer-utils-0.10.25-alt2
gst-plugins-tools-0.10.25-alt2
gst-plugins-ugly-0.10.13-alt1
libgst-plugins-0.10.25-alt2
gst-plugins-base-0.10.25-alt2
gst-plugins-video-effects-0.10.0-alt2
gst-ffmpeg-0.10.9-alt1
gstreamer-devel-0.10.25-alt2
gst-plugins-devel-0.10.25-alt2
libgstreamer-0.10.25-alt2
gstreamer-0.10.25-alt2
gst-plugins-good-0.10.16-alt1
gst-plugins-video-formats-0.10.0-alt2
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Настройка > проигрыватель > кодеки
там что показывает?
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

Изображение
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Попробуй обновиться из svn и проиграть что-нибудь тотемом.
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

Обновился из SVN... Ситуация та же самая...
А totem играет, но не полностью... Т.е., если видео-файл - то изображение есть, а звука нету. Если звуковой файл - то звука нет, но ползунок двигается... В консоли похожие ошибки... :(

Код: Выделить всё

[nenderus@nenderus-pc cueplayer]$ totem

** (totem:9814): WARNING **: Could not create element 'gconfvideosink'
socket(): Семейство адресов не поддерживается протоколом
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Проблема в gstreamer
Попробуй следующее

Код: Выделить всё

gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! alsasink
gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! osssink
gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! pulsesink
gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! oss4sink
gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! osdsink
gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! halaudiosink
gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! esdsink

Если ни один вариант не будет играть, покажи отладочное сообщение.
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

1) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! alsasink - играет

2) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! osssink - не играет

Код: Выделить всё

[nenderus@nenderus-pc Новое]$ gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! osssink

(gst-launch-0.10:21256): GLib-WARNING **: g_set_prgname() called multiple times
ПРЕДУПРЕЖДЕНИЕ: ошибочный конвейер: элемент «osssink» не найден


3) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! pulsesink - не играет

Код: Выделить всё

[nenderus@nenderus-pc Новое]$ gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! pulsesink

(gst-launch-0.10:21345): GLib-WARNING **: g_set_prgname() called multiple times
Установка конвейера в состояние PAUSED...
socket(): Семейство адресов не поддерживается протоколом
ОШИБКА: Конвейер не хочет становиться на паузу.
ОШИБКА: из элемента /GstPipeline:pipeline0/GstPulseSink:pulsesink0: Failed to connect: Connection refused
Дополнительная отладочная информация:
pulsesink.c(435): gst_pulseringbuffer_open_device (): /GstPipeline:pipeline0/GstPulseSink:pulsesink0
Установка конвейера в состояние NULL...
Freeing pipeline ...


4) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! oss4sink - не играет

Код: Выделить всё

[nenderus@nenderus-pc Новое]$ gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! oss4sink

(gst-launch-0.10:21394): GLib-WARNING **: g_set_prgname() called multiple times
ПРЕДУПРЕЖДЕНИЕ: ошибочный конвейер: элемент «oss4sink» не найден


5) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! osdsink - не играет

Код: Выделить всё

[nenderus@nenderus-pc Новое]$ gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! osdsink

(gst-launch-0.10:21423): GLib-WARNING **: g_set_prgname() called multiple times
ПРЕДУПРЕЖДЕНИЕ: ошибочный конвейер: элемент «osdsink» не найден


6) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! halaudiosink - играет

7) gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! esdsink - не играет

Код: Выделить всё

[nenderus@nenderus-pc Новое]$ gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! esdsink

(gst-launch-0.10:21500): GLib-WARNING **: g_set_prgname() called multiple times
ПРЕДУПРЕЖДЕНИЕ: ошибочный конвейер: элемент «esdsink» не найден
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Кажется мне все ясно, проблема в pulseaudio, сам им не пользуюсь, другим не советую, на всякий случай покажи еще вывод

Код: Выделить всё

gst-launch-0.10 -v filesrc location='/path/to/file.mp3' ! decodebin ! queue ! autoaudiosink
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

Играет, в консоли правда такое:

Код: Выделить всё

[nenderus@nenderus-pc Новое]$ gst-launch-0.10 -v filesrc location='leti.mp3' ! decodebin ! queue ! autoaudiosink

(gst-launch-0.10:12982): GLib-WARNING **: g_set_prgname() called multiple times
Установка конвейера в состояние PAUSED...
socket(): Семейство адресов не поддерживается протоколом
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = application/x-id3
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstID3Demux:id3demux0.GstPad:sink: caps = application/x-id3
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3
Подготовка конвейера (PREROLL)...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMPEGAudioParse:mpegaudioparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)44100, channels=(int)2, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)3, rate=(int)44100, channels=(int)2, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad2: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0/GstAlsaSink:autoaudiosink0-actual-sink-alsa.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
/GstPipeline:pipeline0/GstAutoAudioSink:autoaudiosink0.GstGhostPad:sink.GstProxyPad:proxypad1: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2
Конвейер подготовлен (PREROLLED)...
Установка конвейера в состояние PLAYING...
New clock: GstAudioSinkClock
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Ладно, тут уже реквестировались разные аудиовыходы, сделаю пожалуй.
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Все, сделал, пробуй из svn, в настройках аудио принудительно включи Alsa.
Спасибо сказали:

Аватара пользователя
Nenderus
Сообщения: 7
ОС: ALT Linux 5.0 Desktop

Re: CuePlayer

Сообщение Nenderus »

Спасибо! Всё работает! ;)
Спасибо сказали:

Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64

Re: CuePlayer

Сообщение Tverskoy »

ipse666 писал(а):
27.05.2010 20:39
Все, сделал, пробуй из svn, в настройках аудио принудительно включи Alsa.

У меня тоже заработало :)
А почему в настройках нет pulse?

У меня после запуска системный звук выкручивается на максимум, это очень сильно бьёт по ушам с моими колонками :) Сделай галочку использовать системный звук.
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

А почему в настройках нет pulse?

Уже есть.
У меня после запуска системный звук выкручивается на максимум

По идее положение крутилки должно сохраняться. На каких файлах выкручивается?
Спасибо сказали:

Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64

Re: CuePlayer

Сообщение Tverskoy »

ipse666 писал(а):
28.05.2010 21:50
А почему в настройках нет pulse?

Уже есть.
У меня после запуска системный звук выкручивается на максимум

По идее положение крутилки должно сохраняться. На каких файлах выкручивается?

крутилка на месте остается, но звук в kmix всеравно на максимум ставится. Проигрываю cue-flac. Баг случайный, сейчас повторить не получилось, пока понаблюдаю еще.

Вывод звука через pulse у меня всеравно не работает, через alsa и oss все хорошо.
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

Не работает каким образом: нет звука, но ползунок идет или выдает ошибку?
Спасибо сказали:

Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64

Re: CuePlayer

Сообщение Tverskoy »

ipse666 писал(а):
29.05.2010 01:12
Не работает каким образом: нет звука, но ползунок идет или выдает ошибку?

GConf, Esound, PulseAudio, Jack, HAL - просто нет звука, ползунок идет, ошибок не пишет.
OSS4- выдает ошибку при выборе.
NAS- в консоли пишет это

Код: Выделить всё

(<unknown>:12776): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GstObject'

(<unknown>:12776): GStreamer-CRITICAL **: gst_object_unref: assertion `((GObject *) object)->ref_count > 0' failed
Спасибо сказали:

Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: CuePlayer

Сообщение RasenHerz »

ipse666,
Столкнулся со следующей проблемой - во время старта транскодирования не проверяется содержимое тегов, поэтому в случае если они (теги) содержат спецсимволы то происходит ошибка:

Кодируется: /mmedia/Music/Wumpscut/wumpscut - Preferential Tribe/wumpscut - Preferential Tribe (CD 1 - Music For A German Tribe + new tracks remixes).flac
Ошибка перехода в PLAYING
Ошибка: Не удалось открыть для записи файл «/mmedia/Music/Wumpscut//:wumpscut: - Preferential Tribe (CD 1 - Music For A German Tribe + new tracks / remixes)/01 - All Cried Out (1st :W: cover).flac».
Кодируется: /mmedia/Music/Wumpscut/wumpscut - Preferential Tribe/wumpscut - Preferential Tribe (CD 1 - Music For A German Tribe + new tracks remixes).flac
Ошибка перехода в PLAYING
Ошибка: Не удалось открыть для записи файл «/mmedia/Music/Wumpscut//:wumpscut: - Preferential Tribe (CD 1 - Music For A German Tribe + new tracks / remixes)/02 - Overkill (Death For The Masses).flac».

Спасибо сказали:

Аватара пользователя
Tverskoy
Сообщения: 460
Статус: Мандривопоклонник
ОС: Mandriva 2011 x86_64

Re: CuePlayer

Сообщение Tverskoy »

Наткнулся на такую штуку, генерирует cue для flac http://www.cs.man.ac.uk/~slavinp/cuegen.html
может пригодится :)
Спасибо сказали:

Аватара пользователя
ipse666
Сообщения: 107
ОС: Gentoo

Re: CuePlayer

Сообщение ipse666 »

RasenHerz
дай линк на альбом, посмотрю что там
Tverskoy
Это не совсем те cue, только временные отметки, название трека ты туда не запишешь, преимущество только в том что такие cue можно записывать прямо во флак в виде метаданных. Полноценные cue можно создавать при помощи cdda2wav, полистай эту тему, где-то на второй или третьей странице я писал уже про это.
Спасибо сказали:

Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: CuePlayer

Сообщение RasenHerz »

ipse666 писал(а):
05.06.2010 16:10
RasenHerz
дай линк на альбом, посмотрю что там

Код: Выделить всё

magnet:?xt=urn:btih:69c0000100fdcdcc66d4a8cb0952503f86fd7cb9&dn=wumpscut%20-%20Preferential%20Tribe&tr=http%3A%2F%2Fbt3.rutracker.org%2Fann%3Fuk%3DVL71n7hBE9&tr=http%3A%2F%2Fretracker.local%2Fannounce&tr=http%3A%2F%2Fix3.rutracker.net%2Fann%3Fuk%3DVL71n7hBE9

Спасибо сказали: