LinuxForum.Fans
Тема

recordmydesktop through QProcess

Автор: Peter 4 сообщений 1484 просмотров
#327699

Здравствуйте!

Я столкнулся с тем, что в программе на qt-4.7.1 не удаётся запустить recordmydesktop
через QProcess::startDetached() с опцией "--fps -1".
Из скрипта перед запуском этой программы он запускается командой

text

fdt=`date +%Y_%m_%d_%H_%M_%S`
flnm=$HOME/hard/tvc5507/screen/${fdt}.ogv
recordmydesktop --fps 1 --no-frame --on-the-fly-encoding --quick-subsampling --device hw:0,0 --channels 1 --freq 44100 --buffer-size 32768 --display `echo $DISPLAY` -o $flnm &

и работает.
Из программы пытаюэсь запустить его с теми же опциями

text

void mainwdg::run_rmd(){
//starts recordmydwsktop
QByteArray ba;
QDateTime dt;
QDir dr;
QString fn,tm,wrk,dspl;
QStringList qsl;
bool b;
int n=0;
qint64 n64;
  dt=QDateTime::currentDateTime();
  tm=dt.toString ("yyyy'_'MM'_'dd'_'hh'_'mm'_'ss'_'zzz");
  fn=qscr+QString("/screen/")+tm+QString(".ogv");
  wrk=QDir::currentPath();dspl=QString("--display ");ba=qgetenv("DISPLAY");
  dspl.append(ba);bscr=true;
qsl << QString("--no-frame");
qsl << QString("--fps 1");
  qsl << QString("--on-the-fly-encoding");qsl << QString("--quick-subsampling");
  qsl << QString("--device hw:0,0");qsl << QString("--channels 1");
  qsl << QString("--freq 44100");qsl << QString("--buffer-size 32768");qsl << dspl;
  qsl << (QString("-o ")+fn);
// --fps 1 --no-frame --on-the-fly-encoding --quick-subsampling --device hw:0,0 --channels 1 --freq 44100 --buffer-size 32768 --display `echo $DISPLAY` -o $flnm &
  n=QProcess::startDetached (QString("/usr/bin/recordmydesktop"),qsl,wrk,&n64);
}

при этом возникает сообщение, что libpopt не может обработать оцию "--fps -1", ошибка 11.
В чём причина, пока не понял.

Пётр.

#327714
"Peter⇓" написал:
qsl << QString("--fps 1");

qsl << "--fps" << "1";
и тоже самое с другими параметрами.

#327720
Fat-Zer написал:
[quote="Peter⇓"]qsl << QString("--fps 1");

qsl << "--fps" << "1";
и тоже самое с другими параметрами.[/quote]
Я сомневаюсь, что дело в этом, ведь на другие опции со значениями жалоб нет,
да и эта в сообщении об ошибке приводится целиком: :--fps 1".
Кроме того, в справке по QStringList прямо сказано, есля я правильно понял,
что параметры с пробелами передаются как одно целое. Но попробую.

Пётр.

#327722
Fat-Zer написал:
[quote="Peter⇓"]qsl << QString("--fps 1");

qsl << "--fps" << "1";
и тоже самое с другими параметрами.[/quote]
Да, Вы совершенно правы, опции надо передавать именно так и пробелы не ставить.
Т.е. я в соответствии с законом Мэрфи действительно неправильно понял фразу из справки
к методу QProcess::startDetached().
Благодарю за помощь.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.