#include "cliptranscode.h"
+#include "kdenlivesettings.h"
#include <KDebug>
#include <KGlobalSettings>
buttonBox->button(QDialogButtonBox::Abort)->setText(i18n("Abort"));
m_destination = destination + extension;
- m_transcodeProcess.start("ffmpeg", parameters);
+ m_transcodeProcess.start(KdenliveSettings::ffmpegpath(), parameters);
source_url->setEnabled(false);
dest_url->setEnabled(false);
button_start->setEnabled(false);
<default></default>
</entry>
+ <entry name="ffmpegpath" type="Path">
+ <label>FFmpeg / Libav binary path.</label>
+ <default></default>
+ </entry>
+
+ <entry name="ffplaypath" type="Path">
+ <label>FFplay / avplay binary path.</label>
+ <default></default>
+ </entry>
+
<entry name="mltthreads" type="Int">
<label>Mlt processing thread count.</label>
<default>1</default>
m_configEnv.mltpathurl->setMode(KFile::Directory);
m_configEnv.mltpathurl->lineEdit()->setObjectName("kcfg_mltpath");
m_configEnv.rendererpathurl->lineEdit()->setObjectName("kcfg_rendererpath");
+ m_configEnv.ffmpegurl->lineEdit()->setObjectName("kcfg_ffmpegpath");
+ m_configEnv.ffplayurl->lineEdit()->setObjectName("kcfg_ffplaypath");
m_configEnv.kcfg_mltthreads->setMaximum( QThread::idealThreadCount() < 4 ? QThread::idealThreadCount() : 3 );
m_configEnv.tmppathurl->setMode(KFile::Directory);
m_configEnv.tmppathurl->lineEdit()->setObjectName("kcfg_currenttmpfolder");
}
}
-
+ if (KdenliveSettings::ffmpegpath().isEmpty() || KdenliveSettings::ffplaypath().isEmpty()) upgrade = true;
if (!initialGroup.exists() || upgrade) {
// this is our first run, show Wizard
QPointer<Wizard> w = new Wizard(upgrade, this);
m_jobProcess = new QProcess;
m_jobProcess->setProcessChannelMode(QProcess::MergedChannels);
// kDebug()<<"// STARTING CUT JOB: "<<parameters;
- m_jobProcess->start("ffmpeg", parameters);
+ m_jobProcess->start(KdenliveSettings::ffmpegpath(), parameters);
m_jobProcess->waitForStarted();
while (m_jobProcess->state() != QProcess::NotRunning) {
processLogInfo();
parameters << m_dest;
m_jobProcess = new QProcess;
m_jobProcess->setProcessChannelMode(QProcess::MergedChannels);
- m_jobProcess->start("ffmpeg", parameters, QIODevice::ReadOnly);
+ m_jobProcess->start(KdenliveSettings::ffmpegpath(), parameters, QIODevice::ReadOnly);
m_jobProcess->waitForStarted();
}
while (m_jobProcess->state() != QProcess::NotRunning) {
if (device_selector->currentIndex() == FIREWIRE) {
kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
- m_displayProcess->start("ffplay", m_displayArgs);
+ m_displayProcess->start(KdenliveSettings::ffplaypath(), m_displayArgs);
//video_frame->setText(i18n("Initialising..."));
} else {
// do something when starting screen grab
if (device_selector->currentIndex() == FIREWIRE) {
m_isCapturing = true;
kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
- m_displayProcess->start("ffplay", m_displayArgs);
+ m_displayProcess->start(KdenliveSettings::ffplaypath(), m_displayArgs);
video_frame->setText(i18n("Initialising..."));
}
} else {
alsaProcess->start("arecord", alsaArgs);
}
kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" ");
- captureProcess->start("ffmpeg", m_captureArgs);
+ captureProcess->start(KdenliveSettings::ffmpegpath(), m_captureArgs);
}*/
void RecMonitor::slotProcessStatus(QProcess::ProcessState status)
if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) {
m_previewProcess->close();
}
- m_previewProcess->start("ffplay", QStringList() << url << "-nodisp");
+ m_previewProcess->start(KdenliveSettings::ffplaypath(), QStringList() << url << "-nodisp");
return true;
}
if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) {
m_previewProcess->close();
}
- m_previewProcess->start("ffplay", QStringList() << url << "-nodisp");
+ m_previewProcess->start(KdenliveSettings::ffplaypath(), QStringList() << url << "-nodisp");
return true;
}
<rect>
<x>0</x>
<y>0</y>
- <width>297</width>
- <height>244</height>
+ <width>367</width>
+ <height>318</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<string>MLT environment</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
- <item row="0" column="0">
- <widget class="QLabel" name="label">
- <property name="text">
- <string>MLT profiles folder</string>
+ <item row="5" column="1">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
</property>
- </widget>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
</item>
- <item row="0" column="1" colspan="3">
- <widget class="KUrlRequester" name="mltpathurl"/>
+ <item row="3" column="1" colspan="3">
+ <widget class="KUrlRequester" name="rendererpathurl"/>
</item>
- <item row="1" column="0">
+ <item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Melt path</string>
</property>
</widget>
</item>
- <item row="1" column="1" colspan="3">
- <widget class="KUrlRequester" name="rendererpathurl"/>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_6">
+ <item row="4" column="3">
+ <widget class="QLabel" name="label_7">
<property name="text">
- <string>Processing threads</string>
+ <string>(>1 is experimental)</string>
</property>
</widget>
</item>
- <item row="2" column="1" colspan="2">
+ <item row="4" column="1" colspan="2">
<widget class="QSpinBox" name="kcfg_mltthreads">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
</property>
</widget>
</item>
- <item row="2" column="3">
- <widget class="QLabel" name="label_7">
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_6">
<property name="text">
- <string>(>1 is experimental)</string>
+ <string>Processing threads</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>FFmpeg</string>
</property>
</widget>
</item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>MLT profiles folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="3">
+ <widget class="KUrlRequester" name="mltpathurl"/>
+ </item>
+ <item row="0" column="1" colspan="3">
+ <widget class="KUrlRequester" name="ffmpegurl"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>FFplay</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="3">
+ <widget class="KUrlRequester" name="ffplayurl"/>
+ </item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
item->setData(1, Qt::UserRole, i18n("Required for webcam capture"));
item->setSizeHint(0, itemSize);
QString exepath = KStandardDirs::findExe("ffmpeg");
- if (exepath.isEmpty()) item->setIcon(0, m_badIcon);
- else if (KStandardDirs::findExe("ffplay").isEmpty()) item->setIcon(0, m_badIcon);
- else item->setIcon(0, m_okIcon);
+ QString playpath = KStandardDirs::findExe("ffplay");
+ item->setIcon(0, m_okIcon);
+ if (exepath.isEmpty()) {
+ // Check for libav version
+ exepath = KStandardDirs::findExe("avconv");
+ if (exepath.isEmpty()) item->setIcon(0, m_badIcon);
+ }
+ if (playpath.isEmpty()) {
+ // Check for libav version
+ playpath = KStandardDirs::findExe("avplay");
+ if (playpath.isEmpty()) item->setIcon(0, m_badIcon);
+ }
+ if (!exepath.isEmpty()) KdenliveSettings::setFfmpegpath(exepath);
+ if (!playpath.isEmpty()) KdenliveSettings::setFfplaypath(playpath);
#ifndef Q_WS_MAC
item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("recordmydesktop"));