]> git.sesse.net Git - kdenlive/commitdiff
Fix video4linux webcam capture, based on patch from Dan Dennedy:
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 4 Dec 2008 21:02:58 +0000 (21:02 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Thu, 4 Dec 2008 21:02:58 +0000 (21:02 +0000)
http://www.kdenlive.org/mantis/view.php?id=424

svn path=/branches/KDE4/; revision=2756

src/kdenlivesettings.kcfg
src/kdenlivesettingsdialog.cpp
src/recmonitor.cpp
src/widgets/configcapture_ui.ui

index 185751969908c57837fd759b5c0838c6511540d3..f5cb379e9cfd803ad0f43c91d745bad70d46f203 100644 (file)
       <default>320x240</default>
     </entry>
 
-    <entry name="video4vencoding" type="String">
-      <label>Default video4linux capture format.</label>
-      <default>m4v</default>
-    </entry>
-
-    <entry name="video4aencoding" type="String">
-      <label>Default video4linux capture format.</label>
-      <default></default>
-    </entry>
-
     <entry name="video4rate" type="Int">
       <label>Default video4linux capture format.</label>
       <default>15</default>
     </entry>
 
 
-    <entry name="video4playback" type="String">
-      <label>ffplay arguments for video playback.</label>
-      <default></default>
+    <entry name="video4encoding" type="String">
+      <label>ffmpeg encoding arguments.</label>
+      <default>-qscale 1 -ab 224k</default>
     </entry>
 
     <entry name="rmd_capture_audio" type="Bool">
index 60e2a5b2c50f945ec130671444575b7e6f989a48..3eb197b47e90ad53d1c46dfe439e00a18a80e04f 100644 (file)
@@ -93,8 +93,6 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(QWidget * parent): KConfigDialog(
     connect(m_configCapture.kcfg_video4adevice, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
     connect(m_configCapture.kcfg_video4vformat, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
     connect(m_configCapture.kcfg_video4aformat, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
-    connect(m_configCapture.kcfg_video4vencoding, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
-    connect(m_configCapture.kcfg_video4aencoding, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
     connect(m_configCapture.kcfg_video4size, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
     connect(m_configCapture.kcfg_video4rate, SIGNAL(editingFinished()), this, SLOT(rebuildVideo4Commands()));
 
@@ -341,12 +339,8 @@ void KdenliveSettingsDialog::rebuildVideo4Commands() {
     QString captureCommand;
     if (!m_configCapture.kcfg_video4adevice->text().isEmpty()) captureCommand = "-f " + m_configCapture.kcfg_video4aformat->text() + " -i " + m_configCapture.kcfg_video4adevice->text();
 
-    captureCommand +=  " -f " + m_configCapture.kcfg_video4vformat->text() + " -s " + m_configCapture.kcfg_video4size->text() + " -r " + QString::number(m_configCapture.kcfg_video4rate->value()) + " -i " + m_configCapture.kcfg_video4vdevice->text() + " -f " + m_configCapture.kcfg_video4vencoding->text();
+    captureCommand +=  " -f " + m_configCapture.kcfg_video4vformat->text() + " -s " + m_configCapture.kcfg_video4size->text() + " -r " + QString::number(m_configCapture.kcfg_video4rate->value()) + " -i " + m_configCapture.kcfg_video4vdevice->text();
     m_configCapture.kcfg_video4capture->setText(captureCommand);
-
-    QString playbackCommand;
-    playbackCommand =  "-f " + m_configCapture.kcfg_video4vencoding->text();
-    m_configCapture.kcfg_video4playback->setText(playbackCommand);
 }
 
 
index d2693b620192d197777934b692948954405c6d40..3f7c853ca030afcd98b990a840674268a0bb4900 100644 (file)
@@ -106,16 +106,10 @@ RecMonitor::RecMonitor(QString name, QWidget *parent)
         QString captureCommand;
         if (!KdenliveSettings::video4adevice().isEmpty()) captureCommand = "-f " + KdenliveSettings::video4aformat() + " -i " + KdenliveSettings::video4adevice();
 
-        captureCommand +=  " -f " + KdenliveSettings::video4vformat() + " -s " + KdenliveSettings::video4size() + " -r " + QString::number(KdenliveSettings::video4rate()) + " -i " + KdenliveSettings::video4vdevice() + " -f " + KdenliveSettings::video4vencoding();
+        captureCommand +=  " -f " + KdenliveSettings::video4vformat() + " -s " + KdenliveSettings::video4size() + " -r " + QString::number(KdenliveSettings::video4rate()) + " -i " + KdenliveSettings::video4vdevice();
         KdenliveSettings::setVideo4capture(captureCommand);
     }
 
-    if (KdenliveSettings::video4playback().isEmpty()) {
-        QString playbackCommand;
-        playbackCommand =  "-f " + KdenliveSettings::video4vencoding();
-        KdenliveSettings::setVideo4playback(playbackCommand);
-    }
-
     kDebug() << "/////// BUILDING MONITOR, ID: " << ui.video_frame->winId();
 }
 
@@ -351,8 +345,8 @@ void RecMonitor::slotStartCapture(bool play) {
         m_discAction->setEnabled(true);
         break;
     case VIDEO4LINUX:
-        m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << "-";
-        m_displayArgs << KdenliveSettings::video4playback().simplified().split(' ') << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
+        m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << KdenliveSettings::video4encoding().simplified().split(' ') << "-f" << "mpegts" << "-vcodec" << "mpeg4" << "-acodec" << "mp2" << "-";
+        m_displayArgs << "-f" << "mpegts" << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
         captureProcess->setStandardOutputProcess(displayProcess);
         kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" ");
         captureProcess->start("ffmpeg", m_captureArgs);
@@ -362,7 +356,7 @@ void RecMonitor::slotStartCapture(bool play) {
     }
 
     if (ui.device_selector->currentIndex() != SCREENGRAB) {
-        kDebug() << "Capture: Running ffplay " << m_captureArgs.join(" ");
+        kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
         displayProcess->start("ffplay", m_displayArgs);
         ui.video_frame->setText(i18n("Initialising..."));
     } else {
@@ -406,7 +400,7 @@ void RecMonitor::slotRecord() {
     }
     if (captureProcess->state() == QProcess::NotRunning) {
         m_recAction->setChecked(true);
-        QString extension = "mpg";
+        QString extension = "mp4";
         if (ui.device_selector->currentIndex() == SCREENGRAB) extension = "ogv"; //KdenliveSettings::screengrabextension();
         QString path = KdenliveSettings::capturefolder() + "/capture0000." + extension;
         int i = 1;
@@ -431,8 +425,8 @@ void RecMonitor::slotRecord() {
             captureProcess->start(KdenliveSettings::dvgrab_path(), m_captureArgs);
             break;
         case VIDEO4LINUX:
-            m_captureArgs << KdenliveSettings::video4capture().simplified().split(' ') << "-y" << m_captureFile.path() << "-f" << KdenliveSettings::video4vencoding() << "-";
-            m_displayArgs << KdenliveSettings::video4playback().simplified().split(' ') << "-x" << QString::number(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
+            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(ui.video_frame->width()) << "-y" << QString::number(ui.video_frame->height()) << "-";
             captureProcess->setStandardOutputProcess(displayProcess);
             kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" ");
             captureProcess->start("ffmpeg", m_captureArgs);
index 918e21ab62b2fa5b941179e44951580e9777e1d7..915932b2698b829c45b32c124c5a8bd62e63e31a 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>409</width>
-    <height>444</height>
+    <width>509</width>
+    <height>464</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout_6" >
        <string>Video4Linux</string>
       </attribute>
       <layout class="QGridLayout" name="gridLayout" >
-       <item row="1" column="1" colspan="3" >
-        <widget class="KLineEdit" name="kcfg_video4vdevice" >
-         <property name="sizePolicy" >
-          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="text" >
-          <string>/dev/video0</string>
-         </property>
-        </widget>
-       </item>
        <item row="0" column="0" >
-        <widget class="QLabel" name="label_7" >
+        <widget class="QLabel" name="label_14" >
          <property name="text" >
-          <string>Video</string>
+          <string>Video device</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="1" colspan="9" >
-        <widget class="Line" name="line" >
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
+       <item row="0" column="1" colspan="2" >
+        <widget class="KLineEdit" name="kcfg_video4vdevice" >
+         <property name="text" >
+          <string>/dev/video0</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="4" >
+       <item row="0" column="3" >
         <widget class="QLabel" name="label_3" >
          <property name="sizePolicy" >
           <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
          </property>
         </widget>
        </item>
-       <item row="1" column="7" colspan="2" >
-        <widget class="QLabel" name="label_5" >
-         <property name="sizePolicy" >
-          <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="text" >
-          <string>Encoding</string>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="5" colspan="2" >
+       <item row="0" column="4" colspan="2" >
         <widget class="KLineEdit" name="kcfg_video4vformat" >
-         <property name="sizePolicy" >
-          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
          <property name="text" >
           <string>video4linux2</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="9" >
-        <widget class="KLineEdit" name="kcfg_video4vencoding" >
-         <property name="sizePolicy" >
-          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
+       <item row="2" column="0" >
+        <widget class="QLabel" name="label_16" >
          <property name="text" >
-          <string>ogg</string>
+          <string>Audio device</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="0" >
-        <widget class="QLabel" name="label_14" >
+       <item row="2" column="1" colspan="2" >
+        <widget class="KLineEdit" name="kcfg_video4adevice" >
          <property name="text" >
-          <string>Device</string>
+          <string>/dev/dsp</string>
          </property>
         </widget>
        </item>
-       <item row="3" column="9" >
-        <widget class="KLineEdit" name="kcfg_video4aencoding" >
+       <item row="2" column="3" >
+        <widget class="QLabel" name="label_9" >
          <property name="sizePolicy" >
-          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+          <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
            <horstretch>0</horstretch>
            <verstretch>0</verstretch>
           </sizepolicy>
          </property>
+         <property name="text" >
+          <string>Format</string>
+         </property>
         </widget>
        </item>
-       <item row="3" column="1" colspan="3" >
-        <widget class="KLineEdit" name="kcfg_video4adevice" >
+       <item row="2" column="4" colspan="2" >
+        <widget class="KLineEdit" name="kcfg_video4aformat" >
          <property name="text" >
-          <string>/dev/dsp</string>
+          <string>oss</string>
          </property>
         </widget>
        </item>
-       <item row="2" column="2" colspan="8" >
-        <widget class="Line" name="line_2" >
+       <item row="4" column="0" colspan="6" >
+        <widget class="Line" name="line_3" >
          <property name="orientation" >
           <enum>Qt::Horizontal</enum>
          </property>
         </widget>
        </item>
-       <item row="3" column="4" >
-        <widget class="QLabel" name="label_9" >
+       <item row="5" column="0" colspan="2" >
+        <widget class="QLabel" name="label_11" >
          <property name="sizePolicy" >
           <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
            <horstretch>0</horstretch>
           </sizepolicy>
          </property>
          <property name="text" >
-          <string>Format</string>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="0" >
-        <widget class="QLabel" name="label_16" >
-         <property name="text" >
-          <string>Device</string>
+          <string>Capture params</string>
          </property>
         </widget>
        </item>
-       <item row="2" column="0" colspan="2" >
-        <widget class="QLabel" name="label_15" >
-         <property name="text" >
-          <string>Audio</string>
+       <item row="6" column="0" colspan="6" >
+        <widget class="KLineEdit" name="kcfg_video4capture" >
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
          </property>
         </widget>
        </item>
-       <item row="3" column="7" colspan="2" >
-        <widget class="QLabel" name="label_13" >
+       <item row="7" column="0" colspan="2" >
+        <widget class="QLabel" name="label_12" >
          <property name="sizePolicy" >
           <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
            <horstretch>0</horstretch>
           </sizepolicy>
          </property>
          <property name="text" >
-          <string>Encoding</string>
+          <string>Encoding params</string>
          </property>
         </widget>
        </item>
-       <item row="4" column="0" colspan="10" >
-        <widget class="Line" name="line_3" >
+       <item row="8" column="0" colspan="6" >
+        <widget class="KLineEdit" name="kcfg_video4encoding" />
+       </item>
+       <item row="9" column="2" >
+        <spacer name="verticalSpacer" >
          <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
+          <enum>Qt::Vertical</enum>
          </property>
-        </widget>
+         <property name="sizeHint" stdset="0" >
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
        </item>
-       <item row="5" column="0" colspan="3" >
+       <item row="1" column="0" >
         <widget class="QLabel" name="label_4" >
-         <property name="text" >
-          <string>Image size</string>
+         <property name="sizePolicy" >
+          <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
          </property>
-        </widget>
-       </item>
-       <item row="5" column="6" colspan="2" >
-        <widget class="QLabel" name="label_6" >
          <property name="text" >
-          <string>Frame rate</string>
+          <string>Image size</string>
          </property>
         </widget>
        </item>
-       <item row="5" column="3" colspan="3" >
+       <item row="1" column="1" colspan="2" >
         <widget class="KLineEdit" name="kcfg_video4size" >
          <property name="text" >
           <string>320x240</string>
          </property>
         </widget>
        </item>
-       <item row="6" column="0" colspan="3" >
-        <widget class="QLabel" name="label_11" >
+       <item row="1" column="3" >
+        <widget class="QLabel" name="label_6" >
          <property name="text" >
-          <string>Capture params</string>
+          <string>Frame rate</string>
          </property>
         </widget>
        </item>
-       <item row="5" column="8" colspan="2" >
+       <item row="1" column="4" >
         <widget class="QSpinBox" name="kcfg_video4rate" >
          <property name="value" >
           <number>15</number>
          </property>
         </widget>
        </item>
-       <item row="6" column="3" colspan="7" >
-        <widget class="KLineEdit" name="kcfg_video4capture" />
-       </item>
-       <item row="7" column="3" colspan="7" >
-        <widget class="KLineEdit" name="kcfg_video4playback" />
-       </item>
-       <item row="7" column="0" colspan="3" >
-        <widget class="QLabel" name="label_12" >
-         <property name="text" >
-          <string>Playback params</string>
-         </property>
-        </widget>
-       </item>
-       <item row="3" column="5" colspan="2" >
-        <widget class="KLineEdit" name="kcfg_video4aformat" >
-         <property name="sizePolicy" >
-          <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" >
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="text" >
-          <string>oss</string>
-         </property>
-        </widget>
-       </item>
-       <item row="8" column="3" >
-        <spacer name="verticalSpacer" >
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0" >
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
       </layout>
+      <zorder>label_7</zorder>
+      <zorder>line</zorder>
+      <zorder>label_3</zorder>
+      <zorder>label_5</zorder>
+      <zorder>kcfg_video4vencoding</zorder>
+      <zorder>label_14</zorder>
+      <zorder>kcfg_video4aencoding</zorder>
+      <zorder>kcfg_video4adevice</zorder>
+      <zorder>line_2</zorder>
+      <zorder>label_9</zorder>
+      <zorder>label_16</zorder>
+      <zorder>label_15</zorder>
+      <zorder>label_13</zorder>
+      <zorder>label_11</zorder>
+      <zorder>kcfg_video4encoding</zorder>
+      <zorder>label_12</zorder>
+      <zorder>kcfg_video4aformat</zorder>
+      <zorder>kcfg_video4vformat</zorder>
+      <zorder>kcfg_video4vdevice</zorder>
+      <zorder>kcfg_video4capture</zorder>
+      <zorder>line_3</zorder>
+      <zorder>label_4</zorder>
+      <zorder>kcfg_video4size</zorder>
+      <zorder>label_6</zorder>
+      <zorder>kcfg_video4rate</zorder>
      </widget>
      <widget class="QWidget" name="tab_3" >
       <attribute name="title" >
   <tabstop>kcfg_firewiretimestamp</tabstop>
   <tabstop>kcfg_video4vdevice</tabstop>
   <tabstop>kcfg_video4vformat</tabstop>
-  <tabstop>kcfg_video4vencoding</tabstop>
   <tabstop>kcfg_video4adevice</tabstop>
   <tabstop>kcfg_video4aformat</tabstop>
-  <tabstop>kcfg_video4aencoding</tabstop>
-  <tabstop>kcfg_video4size</tabstop>
-  <tabstop>kcfg_video4rate</tabstop>
-  <tabstop>kcfg_video4capture</tabstop>
-  <tabstop>kcfg_video4playback</tabstop>
+  <tabstop>kcfg_video4encoding</tabstop>
   <tabstop>kcfg_rmd_capture_audio</tabstop>
   <tabstop>radioButton_2</tabstop>
   <tabstop>kcfg_rmd_alsa_device</tabstop>