Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Qt: Mplayer: асинхронно воспроизведение  (Прочитано 997 раз)

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

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Qt: Mplayer: асинхронно воспроизведение
« : 15 Февраля 2011, 02:43:28 »
Всем доброго времени суток. Подскажите, есть ли опция у этого плеера асинхронного воспроизведения? я его вызываю из своей программы, написанной на С++ system("mplayer /путь к файлу/файл.wav"). так вот, можно ли сделать так, чтобы файл воспроизвести заново не дожидаясь пока он закончит воспроизведение? а то получается, что мне надо ждать пока он закончит играть, и программа моя подвисает. может есть опция у этого плеера соответствующая? или посоветуйте подходящий плеер. или может вобще можно иначе подойти к решению этой задачи?

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: Qt: Mplayer: асинхронно воспроизведение
« Ответ #1 : 15 Февраля 2011, 08:46:33 »
Ждет завершения mplayer-а тот самый system,  можно решить данную проблему через fork.
man fork
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: Mplayer: асинхронно воспроизведение
« Ответ #2 : 15 Февраля 2011, 17:15:50 »
я новичек в программировании в qt. если можно, подробнее, как с помощью форк решить мою проблему?

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Qt: Mplayer: асинхронно воспроизведение
« Ответ #3 : 15 Февраля 2011, 17:51:46 »
char *p_argv[] = {"mplayer", "/path/to/file"};

pid_t pid;
pid = fork ();
if (pid == 0) {
execv ("mplayer", p_argv);
}
Вот как-то так.

Оффлайн FluffyMan

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
  • Debian 6
    • Просмотр профиля
Re: Qt: Mplayer: асинхронно воспроизведение
« Ответ #4 : 15 Февраля 2011, 19:47:29 »
void MainWindow::on_pushButton_clicked()
{
    char *p_argv[] = {"mplayer", "/home/fluffy/1.wav"};
    pid_t pid;
    pid = fork();
    if (pid == 0)
    {
        execv("mplayer", p_argv);
    }
}

скомпилировалась программа. но после нажатия на кнопку выдает
Запускается /home/fluffy/Документы/My C++ programs/ReadText-build-desktop/ReadText...
ReadText: ../../src/xcb_io.c:249: process_responses: Проверочное утверждение «(((long) (dpy->last_request_read) - (long) (dpy->request)) <= 0)» не выполнено.
<unknown>: Fatal IO error 11 (Ресурс временно недоступен) on X server :0.0.
/home/fluffy/Документы/My C++ programs/ReadText-build-desktop/ReadText завершился с кодом 1

Пользователь решил продолжить мысль 16 Февраля 2011, 21:25:13:
спасибо всем, кто откликнулся. Рано я видимо за звук взялся. буду развиваться, дойдет позже)
« Последнее редактирование: 16 Февраля 2011, 21:25:13 от Fluffy1234567890 »

Оффлайн __v1tos

  • Участник
  • *
  • Сообщений: 105
  • Ubuntuu 10.10 x86-64
    • Просмотр профиля
Re: Qt: Mplayer: асинхронно воспроизведение
« Ответ #5 : 17 Февраля 2011, 16:46:39 »
Думаю нужно указать полыный путь в execv-e
char *p_argv[] = {"/usr/bin/mplayer", "/home/fluffy/1.wav"};

...

execv(p_argv[0], p_argv);
AMD Phenom II 945, GA-MA790GPT-UD3H (HD 3300), 5 GiB ram

 

Страница сгенерирована за 0.05 секунд. Запросов: 26.