X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frecmonitor.cpp;h=6542c5fb938074aca591f6435a411555e3fef9e7;hb=cb6ec003e060b425cf0d3abd5a46fd93d0c8671c;hp=a20053e8806bf388a5be793c195d97bd1e1266c6;hpb=e0b6fe4b6b27d36833c3836c3c0327a5c3587839;p=kdenlive diff --git a/src/recmonitor.cpp b/src/recmonitor.cpp index a20053e8..6542c5fb 100644 --- a/src/recmonitor.cpp +++ b/src/recmonitor.cpp @@ -132,9 +132,9 @@ RecMonitor::RecMonitor(QString name, QWidget *parent) : if (KdenliveSettings::video4capture().isEmpty()) { QString captureCommand; - if (!KdenliveSettings::video4adevice().isEmpty()) captureCommand = "-f " + KdenliveSettings::video4aformat() + " -i " + KdenliveSettings::video4adevice(); + if (!KdenliveSettings::video4adevice().isEmpty()) captureCommand = "-f " + KdenliveSettings::video4aformat() + " -i " + KdenliveSettings::video4adevice() + " -acodec " + KdenliveSettings::video4acodec(); - captureCommand += " -f " + KdenliveSettings::video4vformat() + " -s " + KdenliveSettings::video4size() + " -r " + QString::number(KdenliveSettings::video4rate()) + " -i " + KdenliveSettings::video4vdevice(); + captureCommand += " -f " + KdenliveSettings::video4vformat() + " -s " + KdenliveSettings::video4size() + " -r " + QString::number(KdenliveSettings::video4rate()) + " -i " + KdenliveSettings::video4vdevice() + " -vcodec " + KdenliveSettings::video4vcodec();; KdenliveSettings::setVideo4capture(captureCommand); } @@ -315,10 +315,6 @@ void RecMonitor::slotStopCapture() m_isPlaying = false; break; case VIDEO4LINUX: - m_captureProcess->write("q\n", 3); - QTimer::singleShot(1000, m_captureProcess, SLOT(kill())); - - break; case SCREENGRAB: m_captureProcess->write("q\n", 3); QTimer::singleShot(1000, m_captureProcess, SLOT(kill())); @@ -372,7 +368,7 @@ void RecMonitor::slotStartCapture(bool play) case 3: // HDV CAPTURE m_captureArgs << "--format" << "hdv"; - m_displayArgs << "-f" << "mpegts"; + m_displayArgs << "-f" << KdenliveSettings::video4container(); break; } if (KdenliveSettings::firewireautosplit()) m_captureArgs << "--autosplit"; @@ -395,8 +391,8 @@ void RecMonitor::slotStartCapture(bool play) m_discAction->setEnabled(true); break; case VIDEO4LINUX: - m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-f" << "mpegts" << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-"; - m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-"; + m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-f" << KdenliveSettings::video4container() << "-"; + m_displayArgs << "-f" << KdenliveSettings::video4container() << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-"; m_captureProcess->setStandardOutputProcess(m_displayProcess); kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" "); m_captureProcess->start("ffmpeg", m_captureArgs); @@ -456,6 +452,7 @@ void RecMonitor::slotRecord() m_recAction->setChecked(true); QString extension = "mp4"; if (device_selector->currentIndex() == SCREENGRAB) extension = "ogv"; //KdenliveSettings::screengrabextension(); + else if (device_selector->currentIndex() == VIDEO4LINUX) extension = KdenliveSettings::video4extension(); QString path = KdenliveSettings::capturefolder() + "/capture0000." + extension; int i = 1; while (QFile::exists(path)) { @@ -473,8 +470,8 @@ void RecMonitor::slotRecord() switch (device_selector->currentIndex()) { case VIDEO4LINUX: - m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-y" << m_captureFile.path() << "-f" << "mpegts" << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-"; - m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-"; + m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-y" << m_captureFile.path() << "-f" << KdenliveSettings::video4container() << "-acodec" << KdenliveSettings::video4acodec() << "-vcodec" << KdenliveSettings::video4vcodec() << "-"; + m_displayArgs << "-f" << KdenliveSettings::video4container() << "-x" << QString::number(video_frame->width()) << "-y" << QString::number(video_frame->height()) << "-"; m_captureProcess->setStandardOutputProcess(m_displayProcess); kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" "); m_captureProcess->start("ffmpeg", m_captureArgs); @@ -486,7 +483,7 @@ void RecMonitor::slotRecord() break; default: // Region capture - m_captureArgs << "-width" << QString::number(KdenliveSettings::rmd_width()) << "-height" << QString::number(KdenliveSettings::rmd_height()); + m_captureArgs << "--width" << QString::number(KdenliveSettings::rmd_width()) << "--height" << QString::number(KdenliveSettings::rmd_height()); if (!KdenliveSettings::rmd_follow_mouse()) { m_captureArgs << "-x" << QString::number(KdenliveSettings::rmd_offsetx()) << "-y" << QString::number(KdenliveSettings::rmd_offsety()); } else { @@ -498,25 +495,29 @@ void RecMonitor::slotRecord() if (KdenliveSettings::rmd_hide_mouse()) m_captureArgs << "--no-cursor"; m_isCapturing = true; if (KdenliveSettings::rmd_capture_audio()) { - m_captureArgs << "-freq" << KdenliveSettings::rmd_freq(); - m_captureArgs << "-channels" << QString::number(KdenliveSettings::rmd_audio_channels()); + m_captureArgs << "--freq" << KdenliveSettings::rmd_freq(); + m_captureArgs << "--channels" << QString::number(KdenliveSettings::rmd_audio_channels()); if (KdenliveSettings::rmd_use_jack()) { - m_captureArgs << "-use-jack" << KdenliveSettings::rmd_jackports(); + m_captureArgs << "--use-jack"; + QStringList ports = KdenliveSettings::rmd_jackports().split(" ", QString::SkipEmptyParts); + for (int i = 0; i < ports.count(); ++i) { + m_captureArgs << ports.at(i); + } if (KdenliveSettings::rmd_jack_buffer() > 0.0) - m_captureArgs << "-ring-buffer-size" << QString::number(KdenliveSettings::rmd_jack_buffer()); + m_captureArgs << "--ring-buffer-size" << QString::number(KdenliveSettings::rmd_jack_buffer()); } else { if (!KdenliveSettings::rmd_alsadevicename().isEmpty()) - m_captureArgs << "-device" << KdenliveSettings::rmd_alsadevicename(); + m_captureArgs << "--device" << KdenliveSettings::rmd_alsadevicename(); if (KdenliveSettings::rmd_alsa_buffer() > 0) - m_captureArgs << "-buffer-size" << QString::number(KdenliveSettings::rmd_alsa_buffer()); + m_captureArgs << "--buffer-size" << QString::number(KdenliveSettings::rmd_alsa_buffer()); } } else m_captureArgs << "--no-sound"; if (KdenliveSettings::rmd_fullshots()) m_captureArgs << "--full-shots"; m_captureArgs << "--v_bitrate" << QString::number(KdenliveSettings::rmd_bitrate()); m_captureArgs << "--v_quality" << QString::number(KdenliveSettings::rmd_quality()); - m_captureArgs << "-workdir" << KdenliveSettings::currenttmpfolder(); - m_captureArgs << "-fps" << QString::number(KdenliveSettings::rmd_fps()) << "-o" << m_captureFile.path(); + m_captureArgs << "--workdir" << KdenliveSettings::currenttmpfolder(); + m_captureArgs << "--fps" << QString::number(KdenliveSettings::rmd_fps()) << "-o" << m_captureFile.path(); m_captureProcess->start(KdenliveSettings::rmd_path(), m_captureArgs); kDebug() << "// RecordMyDesktop params: " << m_captureArgs; break; @@ -590,8 +591,15 @@ void RecMonitor::slotProcessStatus(QProcess::ProcessState status) if (m_captureProcess && m_captureProcess->exitStatus() == QProcess::CrashExit) { video_frame->setText(i18n("Capture crashed, please check your parameters")); } else { - if (device_selector->currentIndex() != SCREENGRAB) video_frame->setText(i18n("Not connected")); - else video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder()))); + if (device_selector->currentIndex() != SCREENGRAB) { + video_frame->setText(i18n("Not connected")); + } else { + if (m_captureProcess->exitCode() != 0) { + video_frame->setText(i18n("Capture crashed, please check your parameters\nRecordMyDesktop exit code: %1", QString::number(m_captureProcess->exitCode()))); + } else { + video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder()))); + } + } } m_isCapturing = false;