Linux/MythTV: Unterschied zwischen den Versionen

Aus VivaLV
Zur Navigation springen Zur Suche springen
 
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
  mysql> FLUSH PRIVILEGES;
  mysql> FLUSH PRIVILEGES;
  mysql> quit
  mysql> quit
===MythTV-Datenbank erstellen===
mysql -u root -p < /usr/share/doc/mythtv-0.20/database/mc.sql
oder
mysql -u root -p < /usr/share/mythtv/database/mc.sql


===Datenbankzugriff für Remote Frontends erlauben===
===Datenbankzugriff für Remote Frontends erlauben===
Zeile 14: Zeile 19:


===Backup der Datenbank===
===Backup der Datenbank===
  $ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
  $ mysqldump -u mythtv -p mythconverg -c > mythtv_backup.sql
oder besser:
$ mysqldump -u mythtv -p mythconverg --add-drop-table --add-locks --allow-keywords --complete-insert --extended-insert --lock-tables --no-create-db --quick --add-drop-table > mythtv_backup.sql


===Restore der Datenbank===
===Restore der Datenbank===
  $ mysql -u root -p
  $ mysql -u root -p
mysql>drop database mythconverg;
  mysql>create database mythconverg;
  mysql>create database mythconverg;
  mysql>exit
  mysql>exit
  $ mysql -u mythtv -pmythtv mythconverg < mythtv_backup.sql
  $ mysql -u mythtv -p mythconverg < mythtv_backup.sql


===Hostname in der DB ändern===
===Hostname in der DB ändern===
  $ mysqldump -u mythtv -pmythtv mythconverg -c > mythtv_backup.sql
  $ mysqldump -u mythtv -p mythconverg -c > mythtv_backup.sql


  $ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g >> mythtv_restore.sql
  $ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g > mythtv_restore.sql


  $ mysql -u root -p
  $ mysql -u root -p
Zeile 32: Zeile 40:
  mysql>exit
  mysql>exit


  $ mysql -u mythtv -pmythtv mythconverg < mythtv_restore.sql
  $ mysql -u mythtv -p mythconverg < mythtv_restore.sql


===Crystalfontz LC-Display 632 seriell===
===LCD===
====Testen====
Testprogramm [http://www.crystalfontz.com/products/632/632_634_linux.tar.gz runterladen].
cd 632_634_linux
make
./test632_634 /dev/ttyS0 19200


====LCDproc====
====LCDproc====
LCDproc [http://lcdproc.omnipotent.net/ runterladen] und compilieren/installieren:
LCDproc [http://lcdproc.org/ runterladen] und compilieren/installieren:
  cd lcdproc-0.52
  cd lcdproc-0.52
  ./configure --enable-drivers=all
  ./configure --enable-drivers=all
Zeile 52: Zeile 55:
  cd /home/mythtv  
  cd /home/mythtv  
  mkdir lcd
  mkdir lcd
cp lcdproc-0.52/server/drivers/CFontz.so lcd/
  cp lcdproc-0.52/LCDd.conf lcd/
  cp lcdproc-0.52/LCDd.conf lcd/
====Crystalfontz LC-Display 632 seriell====
Testen:<br>
Testprogramm [http://www.crystalfontz.com/products/632/632_634_linux.tar.gz runterladen].
cd 632_634_linux
make
./test632_634 /dev/ttyS0 19200
Treiber:
cp lcdproc-0.52/server/drivers/CFontz.so /home/mythtv/lcd/


LCDd.conf:
LCDd.conf:
Zeile 70: Zeile 82:
  Reboot=no
  Reboot=no


====HD44780 USB====
Treiber:
cp lcdproc-0.52/server/drivers/hd44780.so /home/mythtv/lcd/
LCDd.conf:
[server]
Driver=hd44780
DriverPath=/home/mythtv/lcd/
[hd44780]
ConnectionType=lcd2usb
Contrast=750
Brightness=500
OffBrightness=0
Size=20x4
====Demon====
Starten des Demons (z.B. in /etc/rc.local):
Starten des Demons (z.B. in /etc/rc.local):
  /usr/local/sbin/LCDd -c /home/mythtv/lcd/LCDd.conf
  /usr/local/sbin/LCDd -c /home/mythtv/lcd/LCDd.conf
Zeile 77: Zeile 106:
====Links====
====Links====
* [http://www.crystalfontz.com/products/632/index.html Crystalfontz 632]
* [http://www.crystalfontz.com/products/632/index.html Crystalfontz 632]
* [http://lcdproc.omnipotent.net/ LCDproc]
* [http://lcdproc.org/ LCDproc]
* [http://www.mythtv.org/wiki/index.php/LCDproc MythTV Wiki: LCDProc]
* [http://www.mythtv.org/wiki/index.php/LCDproc MythTV Wiki: LCDProc]
* [http://www.mythtv.org/wiki/index.php/LCD_-_CrystalFontz_632_USB_Port MythTV Wiki: Crystalfontz 632 USB]
* [http://www.mythtv.org/wiki/index.php/LCD_-_CrystalFontz_632_USB_Port MythTV Wiki: Crystalfontz 632 USB]
Zeile 87: Zeile 116:
  su -
  su -
  groupadd audio
  groupadd audio
  usermod -G audio mythtv
  usermod -aG audio mythtv


Test:
Test:
Zeile 101: Zeile 130:


Wenn es nicht funktioniert, ist evtl. der Kernel zu alt. Getestet mit FC5 und Kernel 2.6.20.
Wenn es nicht funktioniert, ist evtl. der Kernel zu alt. Getestet mit FC5 und Kernel 2.6.20.
===MythWeb merkt sich das Mobile Template===
Nach Aufruf von MythWeb mit einem mobilen Browser kann es sein, dass das Mobile Template ab dann auch bei einem Desktop Browser verwendet wird. Dies kann man zurücksetzen, indem man '''?RESET_TMPL=true''' an die URL anhängt.
===LCD-TV ignoriert analogen Toneingang beim Anschluss von Bild über DVI/HDMI===
Neuere nVidia-Treiber mit neueren Grafikkarten aktivieren generell Ton über HDMI, falls der TV das kann. Dadurch schaltet der TV den analogen Toneingang ab. Aber nicht alle Grafikkarten können wirklich Ton über HDMI ausgeben (durch Verbindung mit Tonausgang auf dem Mainboard). Das Ergebnis ist kein Ton.
Die Lösung besteht darin, die EDID-Info des TVs als Datei abzuspeichern, zu modifizieren (Audiofähigkeiten des TVs entfernen) und in '''xorg.conf''' als zu verwendende EDID-Info anzugeben.
Siehe hier: http://www.mythtv.org/wiki/Configuring_Analog_Sound_DVI_to_HDMI
===Seektable reparieren===
Quelle: http://www.mythtv.org/wiki/Repairing_the_Seektable
mythtranscode --mpeg2 --buildindex --allkeys --showprogress --infile <filename>
===mythtv-setup 0.26 erkennt DVB-Karten nicht, mythbackend aber schon===
Fehlermeldung in der Console:
E  FE_GET_INFO ioctl failed (/dev/dvb/adapter1/frontend0)
                        eno: No such device (19)
Laut MythTV-Entwicklern ist das ein Bug in den DVB-Treibern, obwohl es nur auf manchen Rechnern passiert.
Als Workaround kann man nebenbei femon laufen lassen (0 = Adapter-Nummer):
femon -H -a0
===Nach MySQL-Update kann mythfrontend nicht mehr zur Datenbank connecten===
Fehler:
QSqlDatabase: QMYSQL driver not loaded
Lösung:
emerge -1 qtsql
===Patches===
====Bob 2x Deinterlacing funktioniert nicht, weil die Frequenz nicht ganz stimmt====
Wenn die NVidia-Treiber eine minimal abweichende Frequenz liefern (z.B. 49.99 Hz statt 50 Hz), dann weigert sich MythTV, Bob 2x Deinterlacing anzuwenden, weil die Bildwiederholfrequenz nicht hoch genug ist.
Im 0.22 Trunk ist das Problem gefixt: http://svn.mythtv.org/trac/ticket/4637
'''Rückportierung des Patches für 0.21''':
Index: mythtv/libs/libmythtv/vsync.cpp
===================================================================
--- mythtv/libs/libmythtv/vsync.cpp    (Revision 19961)
+++ mythtv/libs/libmythtv/vsync.cpp    (Arbeitskopie)
@@ -117,7 +117,8 @@
      m_frame_interval(frameint), m_refresh_interval(refreshint),
      m_interlaced(halve_frame_interval)
  {
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
          m_interlaced = false; // can't display both fields at 2x rate
      //cout << "Frame interval: " << m_frame_interval << endl;
@@ -135,7 +136,8 @@
  {
      m_frame_interval = fr;
      m_interlaced = intr;
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
          m_interlaced = false; // can't display both fields at 2x rate
      VERBOSE(VB_PLAYBACK, QString("Set video sync frame interval to %1")
====Video Scan fest auf Interlaced einstellen====
Bei DVB senden einige Sender (PRO7, SAT1, Kabel1, DMAX, DSF, ...) falsche und dauernd wechselnde Kennungen bzgl. Progressive/Interlaced. Das führt dazu, dass MythTV nicht flüssig abspielt. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Video Scan auf Interlaced stellen statt automatische Erkennung.
'''Patch, der den Video Scan fest auf Interlaced stellt (MythTV 0.21)''':
Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Revision 19961)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Arbeitskopie)
@@ -175,7 +175,7 @@
        video_disp_dim(0,0), video_dim(0,0),
        video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),
        forced_video_aspect(-1),
-      m_scan(kScan_Interlaced),    m_scan_locked(false),
+      m_scan(kScan_Interlaced),    m_scan_locked(true),
        m_scan_tracker(0),
        keyframedist(30),
        // RingBuffer stuff
@@ -924,6 +924,7 @@
          return; // hopefully this will be called again later...
      m_scan_locked = (scan != kScan_Detect);
+    m_scan_locked = true;
      if (scan == m_scan)
          return;
@@ -1025,7 +1026,7 @@
      SetScanType(detectInterlace(scan, m_scan, video_frame_rate,
                                  video_disp_dim.height()));
-    m_scan_locked  = false;
+    m_scan_locked  = true;
      m_scan_tracker = (m_scan == kScan_Interlaced) ? 2 : 0;
  }
@@ -2792,7 +2793,7 @@
      // And initialoze m_scan_tracker to 2 which will immediately switch to
      // progressive if the first frame is progressive in AutoDeint().
      m_scan            = kScan_Interlaced;
-    m_scan_locked      = false;
+    m_scan_locked      = true;
      m_double_framerate = false;
      m_can_double      = false;
      m_scan_tracker    = 2;
'''Patch, der den Video Scan fest auf Interlaced stellt (MythTV 0.22)''':
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp.bak    2010-03-22 14:03:04.717767488 +0100                                                                   
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp 2010-03-22 14:29:05.593567418 +0100                                                                           
@@ -182,7 +182,7 @@                                                           
        video_disp_dim(0,0), video_dim(0,0),                                   
        video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),                   
        forced_video_aspect(-1),                                               
-      m_scan(kScan_Interlaced),    m_scan_locked(false),                     
+      m_scan(kScan_Interlaced),    m_scan_locked(true),                     
        m_scan_tracker(0),            m_scan_initialized(false),               
        keyframedist(30),
        // Prebuffering (RingBuffer) control
@@ -1065,7 +1065,7 @@
          return;
      SetScanType((m_scan_tracker > min_count) ? kScan_Interlaced : kScan_Progressive);
-    m_scan_locked  = false;
+    m_scan_locked  = true;
  }
  void NuppelVideoPlayer::SetScanType(FrameScanType scan)
@@ -1081,6 +1081,7 @@
          return;
      m_scan_locked = (scan != kScan_Detect);
+    m_scan_locked  = true;
      m_scan_initialized = true;
      m_frame_interval = frame_interval;
@@ -1179,7 +1180,7 @@
      SetScanType(detectInterlace(scan, m_scan, video_frame_rate,
                                  video_disp_dim.height()));
-    m_scan_locked  = false;
+    m_scan_locked  = true;
      m_scan_tracker = (m_scan == kScan_Interlaced) ? 2 : 0;
  }
@@ -2997,7 +2998,7 @@
      // And initialoze m_scan_tracker to 2 which will immediately switch to
      // progressive if the first frame is progressive in AutoDeint().
      m_scan            = kScan_Interlaced;
-    m_scan_locked      = false;
+    m_scan_locked      = true;
      m_double_framerate = false;
      m_can_double      = false;
      m_scan_tracker    = 2;
====MP2-Ton statt AC3-Ton bevorzugen====
Bei DVB ist der AC3-Ton leiser, als der MP2-Ton. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Ton auf MP2 umstellen.
'''Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird, außerdem werden mehr Infos in die Console ausgegeben (MythTV 0.21)''':
Index: mythtv/libs/libmythtv/avformatdecoder.cpp
===================================================================
--- mythtv/libs/libmythtv/avformatdecoder.cpp  (Revision 19961)
+++ mythtv/libs/libmythtv/avformatdecoder.cpp  (Arbeitskopie)
@@ -2823,7 +2823,7 @@
      if ((ctrack >= 0) && (ctrack < (int)numStreams))
          return ctrack; // audio already selected
-#if 0
+
      // enable this to print streams
      for (uint i = 0; i < atracks.size(); i++)
      {
@@ -2840,8 +2840,8 @@
                        do_ac3_passthru || do_dts_passthru);
          VERBOSE(VB_AUDIO, LOC + " * " + item.toString());
      }
-#endif
+
      int selTrack = (1 == numStreams) ? 0 : -1;
      int wlang    = wtrack.language;
@@ -2894,7 +2894,7 @@
                  selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
              if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP3);
              if (selTrack < 0)
                  selTrack = filter_max_ch(ic, atracks, flang);
@@ -2909,7 +2909,7 @@
                  selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
              if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP3);
              if (selTrack < 0)
                  selTrack = filter_max_ch(ic, atracks, flang);
'''Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird, außerdem werden mehr Infos in die Console ausgegeben (MythTV 0.22)''':
--- mythtv/libs/libmythtv/avformatdecoder.cpp.orig      2009-10-14 22:33:10.000000000 +0200                                                                   
+++ mythtv/libs/libmythtv/avformatdecoder.cpp  2010-03-30 22:56:28.016756358 +0200
@@ -3096,7 +3096,7 @@
      if ((ctrack >= 0) && (ctrack < (int)numStreams))
          return ctrack; // audio already selected
-#if 0
+
      // enable this to print streams
      for (uint i = 0; i < atracks.size(); i++)
      {
@@ -3113,7 +3113,7 @@
                        do_ac3_passthru || do_dts_passthru);
          VERBOSE(VB_AUDIO, LOC + " * " + item.toString());
      }
-#endif
+
      int selTrack = (1 == numStreams) ? 0 : -1;
      int wlang    = wtrack.language;
@@ -3167,7 +3167,7 @@
                  selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
              if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
              if (selTrack < 0)
                  selTrack = filter_max_ch(ic, atracks, flang);
@@ -3182,7 +3182,7 @@
                  selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
              if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
              if (selTrack < 0)
                  selTrack = filter_max_ch(ic, atracks, flang);
'''Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird (MythTV 0.26 Fixes vom Februar 2013)''':
--- mythtv-0.26.0/libs/libmythtv/avformatdecoder.cpp.orig 2013-03-06 09:55:09.000000000 +0100
+++ mythtv-0.26.0/libs/libmythtv/avformatdecoder.cpp 2013-03-06 09:56:11.000000000 +0100
@@ -4056,7 +4056,7 @@
              selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
 
          if (selTrack < 0)
-            selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+            selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
 
          if (selTrack < 0)
              selTrack = filter_max_ch(ic, atracks, flang);
@@ -4089,7 +4089,7 @@
                      selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
 
                  if (selTrack < 0)
-                    selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                    selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
 
                  if (selTrack < 0)
                      selTrack = filter_max_ch(ic, atracks, flang);
@@ -4119,7 +4119,7 @@
                  selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
 
              if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
 
              if (selTrack < 0)
                  selTrack = filter_max_ch(ic, atracks, flang);
====MythWeb 0.26 bringt Warnungen mit PHP 5.4====
https://code.mythtv.org/trac/attachment/ticket/11277/mythweb-php54-unknown-function.patch
====MythWeb 0.27 funktioniert nicht mit PHP 7====
Quelle: https://forum.mythtv.org/viewtopic.php?f=36&t=1213&p=6240#p6240
<br>
[[File:mysqli.patch]]
<br>
[[File:assignment.patch]]
cd mythweb
patch -p1 < <path>/Mysqli.patch
patch -p1 < <path>/Assignment.patch

Aktuelle Version vom 28. Mai 2017, 09:03 Uhr

MySQL Root-Passwort setzen

# mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('ROOT_PWD') WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

MythTV-Datenbank erstellen

mysql -u root -p < /usr/share/doc/mythtv-0.20/database/mc.sql

oder

mysql -u root -p < /usr/share/mythtv/database/mc.sql

Datenbankzugriff für Remote Frontends erlauben

$ mysql -u root -p mythconverg
mysql> grant all on mythconverg.* to mythtv@"192.168.0.%" identified by "mythtv";
mysql> flush privileges;
mysql> quit

Backup der Datenbank

$ mysqldump -u mythtv -p mythconverg -c > mythtv_backup.sql

oder besser:

$ mysqldump -u mythtv -p mythconverg --add-drop-table --add-locks --allow-keywords --complete-insert --extended-insert --lock-tables --no-create-db --quick --add-drop-table > mythtv_backup.sql

Restore der Datenbank

$ mysql -u root -p
mysql>drop database mythconverg;
mysql>create database mythconverg;
mysql>exit
$ mysql -u mythtv -p mythconverg < mythtv_backup.sql

Hostname in der DB ändern

$ mysqldump -u mythtv -p mythconverg -c > mythtv_backup.sql
$ cat mythtv_backup.sql | sed s/\'frontend1\'/\'kidsroom\'/g > mythtv_restore.sql
$ mysql -u root -p
mysql>drop database mythconverg;
mysql>create database mythconverg;
mysql>exit
$ mysql -u mythtv -p mythconverg < mythtv_restore.sql

LCD

LCDproc

LCDproc runterladen und compilieren/installieren:

cd lcdproc-0.52
./configure --enable-drivers=all
make
cd server
su
make install
cd /home/mythtv 
mkdir lcd
cp lcdproc-0.52/LCDd.conf lcd/

Crystalfontz LC-Display 632 seriell

Testen:
Testprogramm runterladen.

cd 632_634_linux
make
./test632_634 /dev/ttyS0 19200

Treiber:

cp lcdproc-0.52/server/drivers/CFontz.so /home/mythtv/lcd/

LCDd.conf:

[server]
Driver=CFontz
DriverPath=/home/mythtv/lcd/

[CFontz]
Device=/dev/ttyS0
Size=16x2
Contrast=560
Brightness=500
OffBrightness=0
Speed=19200
NewFirmware=yes
Reboot=no

HD44780 USB

Treiber:

cp lcdproc-0.52/server/drivers/hd44780.so /home/mythtv/lcd/

LCDd.conf:

[server]
Driver=hd44780
DriverPath=/home/mythtv/lcd/

[hd44780]
ConnectionType=lcd2usb
Contrast=750
Brightness=500
OffBrightness=0
Size=20x4

Demon

Starten des Demons (z.B. in /etc/rc.local):

/usr/local/sbin/LCDd -c /home/mythtv/lcd/LCDd.conf

Danach kann man in MythFrontend bei Konfiguration/Erscheinungsbild die LCD-Ansteuerung aktivieren.

Links

Echtzeitpriorität beim Abspielen

Der Benutzer mythtv wird einer neu angelegten Gruppe hinzugefügt, die dann das Recht erhält, die Priorität von Threads zu erhöhen.

su -
groupadd audio
usermod -aG audio mythtv

Test:

groups mythtv

liefert

mythtv : mythtv audio

Eine Zeile hinzufügen zu /etc/security/limits.conf:

@audio          -       rtprio     50

Danach noch bei den Abspieloptionen von mythfrontend den Haken bei Echtzeitpriorität setzen. Beim Abspielen einer Aufnahme müsste mythfrontend dann folgendes in die Console schreiben:

2007-07-28 21:58:10.618 Using realtime priority.

Wenn es nicht funktioniert, ist evtl. der Kernel zu alt. Getestet mit FC5 und Kernel 2.6.20.

MythWeb merkt sich das Mobile Template

Nach Aufruf von MythWeb mit einem mobilen Browser kann es sein, dass das Mobile Template ab dann auch bei einem Desktop Browser verwendet wird. Dies kann man zurücksetzen, indem man ?RESET_TMPL=true an die URL anhängt.

LCD-TV ignoriert analogen Toneingang beim Anschluss von Bild über DVI/HDMI

Neuere nVidia-Treiber mit neueren Grafikkarten aktivieren generell Ton über HDMI, falls der TV das kann. Dadurch schaltet der TV den analogen Toneingang ab. Aber nicht alle Grafikkarten können wirklich Ton über HDMI ausgeben (durch Verbindung mit Tonausgang auf dem Mainboard). Das Ergebnis ist kein Ton.

Die Lösung besteht darin, die EDID-Info des TVs als Datei abzuspeichern, zu modifizieren (Audiofähigkeiten des TVs entfernen) und in xorg.conf als zu verwendende EDID-Info anzugeben.

Siehe hier: http://www.mythtv.org/wiki/Configuring_Analog_Sound_DVI_to_HDMI

Seektable reparieren

Quelle: http://www.mythtv.org/wiki/Repairing_the_Seektable

mythtranscode --mpeg2 --buildindex --allkeys --showprogress --infile <filename>

mythtv-setup 0.26 erkennt DVB-Karten nicht, mythbackend aber schon

Fehlermeldung in der Console:

E  FE_GET_INFO ioctl failed (/dev/dvb/adapter1/frontend0)
                       eno: No such device (19)

Laut MythTV-Entwicklern ist das ein Bug in den DVB-Treibern, obwohl es nur auf manchen Rechnern passiert.

Als Workaround kann man nebenbei femon laufen lassen (0 = Adapter-Nummer):

femon -H -a0

Nach MySQL-Update kann mythfrontend nicht mehr zur Datenbank connecten

Fehler:

QSqlDatabase: QMYSQL driver not loaded

Lösung:

emerge -1 qtsql

Patches

Bob 2x Deinterlacing funktioniert nicht, weil die Frequenz nicht ganz stimmt

Wenn die NVidia-Treiber eine minimal abweichende Frequenz liefern (z.B. 49.99 Hz statt 50 Hz), dann weigert sich MythTV, Bob 2x Deinterlacing anzuwenden, weil die Bildwiederholfrequenz nicht hoch genug ist.

Im 0.22 Trunk ist das Problem gefixt: http://svn.mythtv.org/trac/ticket/4637

Rückportierung des Patches für 0.21:

Index: mythtv/libs/libmythtv/vsync.cpp
===================================================================
--- mythtv/libs/libmythtv/vsync.cpp     (Revision 19961)
+++ mythtv/libs/libmythtv/vsync.cpp     (Arbeitskopie)
@@ -117,7 +117,8 @@
     m_frame_interval(frameint), m_refresh_interval(refreshint),
     m_interlaced(halve_frame_interval)
 {
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
         m_interlaced = false; // can't display both fields at 2x rate

     //cout << "Frame interval: " << m_frame_interval << endl;
@@ -135,7 +136,8 @@
 {
     m_frame_interval = fr;
     m_interlaced = intr;
-    if (m_interlaced && m_refresh_interval > m_frame_interval/2)
+    int tolerance = m_refresh_interval / 200;
+    if (m_interlaced && m_refresh_interval > ((m_frame_interval/2) + tolerance))
         m_interlaced = false; // can't display both fields at 2x rate

     VERBOSE(VB_PLAYBACK, QString("Set video sync frame interval to %1")

Video Scan fest auf Interlaced einstellen

Bei DVB senden einige Sender (PRO7, SAT1, Kabel1, DMAX, DSF, ...) falsche und dauernd wechselnde Kennungen bzgl. Progressive/Interlaced. Das führt dazu, dass MythTV nicht flüssig abspielt. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Video Scan auf Interlaced stellen statt automatische Erkennung.

Patch, der den Video Scan fest auf Interlaced stellt (MythTV 0.21):

Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Revision 19961)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp (Arbeitskopie)
@@ -175,7 +175,7 @@
       video_disp_dim(0,0), video_dim(0,0),
       video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),
       forced_video_aspect(-1),
-      m_scan(kScan_Interlaced),     m_scan_locked(false),
+      m_scan(kScan_Interlaced),     m_scan_locked(true),
       m_scan_tracker(0),
       keyframedist(30),
       // RingBuffer stuff
@@ -924,6 +924,7 @@
         return; // hopefully this will be called again later...

     m_scan_locked = (scan != kScan_Detect);
+    m_scan_locked = true;

     if (scan == m_scan)
         return;
@@ -1025,7 +1026,7 @@

     SetScanType(detectInterlace(scan, m_scan, video_frame_rate,
                                 video_disp_dim.height()));
-    m_scan_locked  = false;
+    m_scan_locked  = true;
     m_scan_tracker = (m_scan == kScan_Interlaced) ? 2 : 0;
 }

@@ -2792,7 +2793,7 @@
     // And initialoze m_scan_tracker to 2 which will immediately switch to
     // progressive if the first frame is progressive in AutoDeint().
     m_scan             = kScan_Interlaced;
-    m_scan_locked      = false;
+    m_scan_locked      = true;
     m_double_framerate = false;
     m_can_double       = false;
     m_scan_tracker     = 2;

Patch, der den Video Scan fest auf Interlaced stellt (MythTV 0.22):

--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp.bak     2010-03-22 14:03:04.717767488 +0100                                                                     
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp 2010-03-22 14:29:05.593567418 +0100                                                                             
@@ -182,7 +182,7 @@                                                             
       video_disp_dim(0,0), video_dim(0,0),                                     
       video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),                     
       forced_video_aspect(-1),                                                 
-      m_scan(kScan_Interlaced),     m_scan_locked(false),                      
+      m_scan(kScan_Interlaced),     m_scan_locked(true),                       
       m_scan_tracker(0),            m_scan_initialized(false),                 
       keyframedist(30),
       // Prebuffering (RingBuffer) control
@@ -1065,7 +1065,7 @@
         return;

     SetScanType((m_scan_tracker > min_count) ? kScan_Interlaced : kScan_Progressive);
-    m_scan_locked  = false;
+    m_scan_locked  = true;
 }

 void NuppelVideoPlayer::SetScanType(FrameScanType scan)
@@ -1081,6 +1081,7 @@
         return;

     m_scan_locked = (scan != kScan_Detect);
+    m_scan_locked  = true;

     m_scan_initialized = true;
     m_frame_interval = frame_interval;
@@ -1179,7 +1180,7 @@

     SetScanType(detectInterlace(scan, m_scan, video_frame_rate,
                                 video_disp_dim.height()));
-    m_scan_locked  = false;
+    m_scan_locked  = true;
     m_scan_tracker = (m_scan == kScan_Interlaced) ? 2 : 0;
 }

@@ -2997,7 +2998,7 @@
     // And initialoze m_scan_tracker to 2 which will immediately switch to
     // progressive if the first frame is progressive in AutoDeint().
     m_scan             = kScan_Interlaced;
-    m_scan_locked      = false;
+    m_scan_locked      = true;
     m_double_framerate = false;
     m_can_double       = false;
     m_scan_tracker     = 2;


MP2-Ton statt AC3-Ton bevorzugen

Bei DVB ist der AC3-Ton leiser, als der MP2-Ton. Man muss dann immer wieder (die Einstellung wird nicht gemerkt) nach Play im OSD den Ton auf MP2 umstellen.

Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird, außerdem werden mehr Infos in die Console ausgegeben (MythTV 0.21):

Index: mythtv/libs/libmythtv/avformatdecoder.cpp
===================================================================
--- mythtv/libs/libmythtv/avformatdecoder.cpp   (Revision 19961)
+++ mythtv/libs/libmythtv/avformatdecoder.cpp   (Arbeitskopie)
@@ -2823,7 +2823,7 @@
     if ((ctrack >= 0) && (ctrack < (int)numStreams))
         return ctrack; // audio already selected

-#if 0
+
     // enable this to print streams
     for (uint i = 0; i < atracks.size(); i++)
     {
@@ -2840,8 +2840,8 @@
                        do_ac3_passthru || do_dts_passthru);
         VERBOSE(VB_AUDIO, LOC + " * " + item.toString());
     }
-#endif

+
     int selTrack = (1 == numStreams) ? 0 : -1;
     int wlang    = wtrack.language;

@@ -2894,7 +2894,7 @@
                 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);

             if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP3);

             if (selTrack < 0)
                 selTrack = filter_max_ch(ic, atracks, flang);
@@ -2909,7 +2909,7 @@
                 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);

             if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP3);

             if (selTrack < 0)
                 selTrack = filter_max_ch(ic, atracks, flang);

Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird, außerdem werden mehr Infos in die Console ausgegeben (MythTV 0.22):

--- mythtv/libs/libmythtv/avformatdecoder.cpp.orig      2009-10-14 22:33:10.000000000 +0200                                                                     
+++ mythtv/libs/libmythtv/avformatdecoder.cpp   2010-03-30 22:56:28.016756358 +0200
@@ -3096,7 +3096,7 @@
     if ((ctrack >= 0) && (ctrack < (int)numStreams))
         return ctrack; // audio already selected

-#if 0
+
     // enable this to print streams
     for (uint i = 0; i < atracks.size(); i++)
     {
@@ -3113,7 +3113,7 @@
                        do_ac3_passthru || do_dts_passthru);
         VERBOSE(VB_AUDIO, LOC + " * " + item.toString());
     }
-#endif
+

     int selTrack = (1 == numStreams) ? 0 : -1;
     int wlang    = wtrack.language;
@@ -3167,7 +3167,7 @@
                 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);

             if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);

             if (selTrack < 0)
                 selTrack = filter_max_ch(ic, atracks, flang);
@@ -3182,7 +3182,7 @@
                 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);

             if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);

             if (selTrack < 0)
                 selTrack = filter_max_ch(ic, atracks, flang);

Patch, der dafür sorgt, dass MP2-Ton bevorzugt wird (MythTV 0.26 Fixes vom Februar 2013):

--- mythtv-0.26.0/libs/libmythtv/avformatdecoder.cpp.orig	2013-03-06 09:55:09.000000000 +0100
+++ mythtv-0.26.0/libs/libmythtv/avformatdecoder.cpp	2013-03-06 09:56:11.000000000 +0100
@@ -4056,7 +4056,7 @@
             selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
 
         if (selTrack < 0)
-            selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+            selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
 
         if (selTrack < 0)
             selTrack = filter_max_ch(ic, atracks, flang);
@@ -4089,7 +4089,7 @@
                     selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
 
                 if (selTrack < 0)
-                    selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                    selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
 
                 if (selTrack < 0)
                     selTrack = filter_max_ch(ic, atracks, flang);
@@ -4119,7 +4119,7 @@
                 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS);
 
             if (selTrack < 0)
-                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);
+                selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_MP2);
 
             if (selTrack < 0)
                 selTrack = filter_max_ch(ic, atracks, flang);

MythWeb 0.26 bringt Warnungen mit PHP 5.4

https://code.mythtv.org/trac/attachment/ticket/11277/mythweb-php54-unknown-function.patch

MythWeb 0.27 funktioniert nicht mit PHP 7

Quelle: https://forum.mythtv.org/viewtopic.php?f=36&t=1213&p=6240#p6240
Datei:Mysqli.patch
Datei:Assignment.patch

cd mythweb
patch -p1 < <path>/Mysqli.patch
patch -p1 < <path>/Assignment.patch