Autor Thema: How to record analog-tv with mencoder?  (Gelesen 36568 mal)

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
How to record analog-tv with mencoder?
« am: September 03, 2012, 05:26:37 Nachmittag »
I recently received my Media TV Pro stick and got it work to watch analog TV via cable (Gremany) and FM radio..

First I tried to watch with 'tvtime' but that results in frequently lost frames with short stuttering during playback. 'xawtv' however works fine. I am using the latest driver dd Aug. 20th on Debian-Wheezy-amd64, CPU and graphics card is Ivy-Bridge i5-3570K with Intel HD4000 graphics.

I tried to record using the OSD-menu of 'xawtv', but this results in an error messages and says:

xawtv -c /dev/video0
This is xawtv-3.102, running on Linux/x86_64 (3.2.0-3-amd64)
xinerama 0: 1920x1080+0+0
Alsa devices: cap: (null) (/dev/video0), out: default
v4l2: ioctl(fildes = 5 { sa_family = PF_UNIX } => { sa_family = PF_UNIX, sun_path = "" }, request = VIDIOC_DQBUF, struct v4l2_buffer *data = { index = 0, type = 0, memory = 0 }): success
oss: open /dev/dsp: Datei oder Verzeichnis nicht gefunden

The Sundtek driver however creates /dev/dsp0. I tried to create a symlik 'ln -s dsp0 dsp', but that doesn't work either.

Then I tried to record usig 'mencoder' from the command line:

mencoder -tv norm=PAL-BG:device=/dev/video0:fps=25:buffersize=64:adevice=/dev/dsp0:amode=1:audiorate=48000:input=1 -af format=s16le -ovc lavc -lavcopts vcodec=mjpeg -oac pcm -o test.avi tv://

MEncoder 1.1-4.7 (C) 2000-2012 MPlayer Team
success: format: 9  data: 0x0 - 0x0
TV file format detected.
Selected driver: v4l2
 name: Video 4 Linux 2 input
 author: Martin Olschewski <olschewski@zpr.uni-koeln.de>
 comment: first try, more to come ;-)
Selected device: Sundtek MediaTV
 Tuner cap: STEREO
 Tuner rxs:
 Capabilities:  video capture  tuner  audio  streaming
 supported norms: 0 = PAL-BG; 1 = PAL-DK; 2 = PAL-I; 3 = PAL-M; 4 = NTSC-M; 5 = Secam-L; 6 = Secam-LC; 7 = Secam-K;
 inputs: 0 = Television; 1 = Composite; 2 = S-Video;
 Current input: 1
 Current format: YUYV
v4l2: current audio mode is : STEREO
unsupported format
Audio block size too low, setting to 16384!
[V] filefmt:9  fourcc:0x32595559  size:640x480  fps:25.000  ftime:=0.0400
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 48000 Hz, 2 ch, s16le, 1536.0 kbit/100.00% (ratio: 192000->192000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
libavcodec version 54.23.100 (internal)
Opening video filter: [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
==========================================================================
Opening video decoder: [raw] RAW Uncompressed Video
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
Movie-Aspect is undefined - no prescaling applied.
[swscaler @ 0xf3cc20]using unscaled yuyv422 -> yuv420p special converter
videocodec: libavcodec (640x480 fourcc=47504a4d [MJPG])
[mjpeg @ 0xe73020]Specified pix_fmt is not supported
Could not open codec.
FATAL: Cannot initialize video driver.
VDecoder init failed :(
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffrawyuy2] vfm: ffmpeg (RAW YUY2)
==========================================================================
Forcing audio preload to 0, max pts correction to 0.
Movie-Aspect is undefined - no prescaling applied.
videocodec: libavcodec (640x480 fourcc=47504a4d [MJPG])
[mjpeg @ 0xe73020]Specified pix_fmt is not supported
Could not open codec.
FATAL: Cannot initialize video driver.

Exiting...

I am quite sure the proper codecs are installed, also I can watch smoothly on the screen.


The driver itself reports:

/opt/bin/mediaclient -e
**** List of Media Hardware Devices ****
device 0: [Sundtek MediaTV Pro (USB 2.0)]  DVB-C, DVB-T, ANALOG-TV, FM-RADIO, REMOTE-CONTROL, OSS-AUDIO, RDS
  [SERIAL]:
     ID: U120820070038
  [DVB-C]:
     FRONTEND: /dev/dvb/adapter0/frontend0
     DVR: /dev/dvb/adapter0/dvr0
     DMX: /dev/dvb/adapter0/demux0
  [DVB-T]:
     FRONTEND: /dev/dvb/adapter0/frontend0
     DVR: /dev/dvb/adapter0/dvr0
     DMX: /dev/dvb/adapter0/demux0
  [ANALOG-TV]:
     VIDEO0: /dev/video0
     VBI0: /dev/vbi0
  [FM-RADIO]:
     RADIO0: /dev/radio0
     RDS: /dev/rds0
  [REMOTECONTROL]:
     INPUT0: /dev/mediainput0
  [OSS]:
     OSS0: /dev/dsp0


and /var/log/messages says:

cat /var/log/messages | grep -i -A 1 -B3 sundtek
usb 1-1.3: New USB device found, idVendor=eb1a, idProduct=51b2
usb 1-1.3: New USB device strings: Mfr=1, Product=3, SerialNumber=2
usb 1-1.3: Product: MediaTV Pro
usb 1-1.3: Manufacturer: Sundtek
usb 1-1.3: SerialNumber: U120820070038
....
input: Sundtek Ltd. Remote Control as /devices/virtual/input/input11

Any hints how I can manage to record analog-tv?

With best regards,
Ingo

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #1 am: September 03, 2012, 07:06:34 Nachmittag »
Zitat
sudo -s
cd /tmp
wget http://sundtek.de/support/buildffmpeg.sh
chmod 777 buildffmpeg.sh
./buildffmpeg.sh

/opt/bin/mediaclient --shutdown
sudo /opt/bin/mediaclient --start

anschliessend mittels tvtime den Sender auswählen

cat /dev/video1 > /tmp/test.mpg
Failure is a good thing! I'll fix it

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #2 am: September 03, 2012, 08:04:43 Nachmittag »
Zunächst Danke für die schnelle Antwort!

Leider funktioniert der Build nicht:

HEAD is now at cfd64ee... Merge remote-tracking branch 'qatar/master'
+ ./configure --disable-filters --disable-devices --disable-encoders --disable-decoders --disable-muxers --disable-demuxers --enable-shared --enable-pthreads --enable-libmp3lame --enable-encoder=mpeg2video,libmp3lame,mp2 --prefix=/opt/bin/plugins --enable-nonfree --disable-bsfs --disable-protocols --disable-parsers --enable-muxer=mpegts,mpeg2video,mpeg2dvd
ERROR: libmp3lame >= 3.98.3 not found

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solving the problem.
+ [ 1 != 0 ]
+ echo failed to configure ffmpeg
failed to configure ffmpeg
+ make
Makefile:2: config.mak: Datei oder Verzeichnis nicht gefunden
Makefile:45: /common.mak: Datei oder Verzeichnis nicht gefunden
Makefile:85: /libavutil/Makefile: Datei oder Verzeichnis nicht gefunden
Makefile:85: /library.mak: Datei oder Verzeichnis nicht gefunden
Makefile:162: /doc/Makefile: Datei oder Verzeichnis nicht gefunden
Makefile:163: /tests/Makefile: Datei oder Verzeichnis nicht gefunden
make: *** Keine Regel, um »/tests/Makefile« zu erstellen.  Schluss.
+ [ 2 != 0 ]
+ echo failed to build ffmpeg
failed to build ffmpeg
+ make install
Makefile:2: config.mak: Datei oder Verzeichnis nicht gefunden
Makefile:45: /common.mak: Datei oder Verzeichnis nicht gefunden
Makefile:85: /libavutil/Makefile: Datei oder Verzeichnis nicht gefunden
Makefile:85: /library.mak: Datei oder Verzeichnis nicht gefunden
Makefile:162: /doc/Makefile: Datei oder Verzeichnis nicht gefunden
Makefile:163: /tests/Makefile: Datei oder Verzeichnis nicht gefunden
make: *** Keine Regel, um »/tests/Makefile« zu erstellen.  Schluss.
+ [ 2 != 0 ]
+ echo failed to install ffmpeg
failed to install ffmpeg


Zur Info: 'yasm' mußte ich nachinstallieren. Die Fehlermeldung
ERROR: libmp3lame >= 3.98.3 not found

bekomme ich aber nicht weg, obwohl ich den SymLink auf libmp3lame.so.0.0.0 manuell angelegt habe (per default ist nur der Link zu libmp3lame.so.0 vorhanden. Problem ist wohl, daß der interne Paketname "libmp3lame0" ist ?

/usr/lib/x86_64-linux-gnu# ls -l libmp3*
lrwxrwxrwx 1 root root     19 Sep  3 19:39 libmp3lame.so -> libmp3lame.so.0.0.0
lrwxrwxrwx 1 root root     19 Mai  1 15:26 libmp3lame.so.0 -> libmp3lame.so.0.0.0
-rw-r--r-- 1 root root 298536 Mai  1 15:26 libmp3lame.so.0.0.0

und die installierte Version ist:
dpkg -l libmp3lame0
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
         Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name               Version        Architektur    Beschreibung
+++-==================-==============-==============-==========================================
ii  libmp3lame0:amd64  1:3.99.5-dmo1  amd64          LAME Ain't an MP3 Encoder (shared library)

What to do?

Ach ja,
Danke für die Info, daß der Output von /dev/videoX im mpeg-Format ist und ein einfaches cat ... ausreicht!

Beste Grüße,
Ingo

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #3 am: September 03, 2012, 08:28:05 Nachmittag »
Noch eine Info - hatte ich vergessen:

ii  ffmpeg         7:0.11.1-dmo amd64
Es ist die Version von deb.multimedia für Wheezy.

Ingo

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #4 am: September 03, 2012, 08:56:43 Nachmittag »
apt-get install libmp3lame-dev

Anschließend nocheinmal das Script ausführen. Die Aufnahme mit dem Treiber wurde soweit über Stunden hinweg synchron getestet.
Failure is a good thing! I'll fix it

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #5 am: September 03, 2012, 09:20:08 Nachmittag »
1000 Dank!

Alles geht, tvtime ruckelt nicht mehr und /dev/video0 liefert jetzt auch einen mpeg-Stream.

Ingo

P.S.: Woran hat's denn nun letztendlich gefehlt?

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #6 am: September 03, 2012, 11:11:01 Nachmittag »
Vielleicht kann ich mich mit dieser Info noch für den super Service bedanken. Der entscheidende Tipp war die Zeile zur Aufnahme des MPEG-Streans:
cat /dev/video1 > /tmp/test.mpg
Da habe doch glatt mein geliebtes TV-Record von Christian Rapp (ist original für Hauppauge PVR-Karten gedacht) installiert. Quelle: http://sourceforge.net/projects/tv-viewer/.

Und siehe da, es klappt einwandfrei. Das Beste dabei: es enthält einen sehr komfortablen Recorder, der zeitgesteuert aufnehmen kann, auch über Reboots hinweg. Habe das gute Stück mit meiner alten PVR150 jahrelang benutzt - einfach praktisch.

Daß man wegen der Herkunft auch die 'ivtv-utils' mit > 50MB installieren mus, kann man sicher ändern. Ich werde die Info auch bei IVTV bekannt machen, ist der ideale analog TV-Recorder und Viewer für uns in Germania.

Beste Grüße,
Ingo

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #7 am: September 03, 2012, 11:14:24 Nachmittag »
Danke für die Information, der Treiber hat eine IVTV Emulationsschicht die das MPEG-2 ausgibt. Mit dem Skript hast du ffmpeg als Plugin für den Treiber erstellt. Durch das Plugin kommt dann die zusätzliche Funktionalität.

Einige Firmenkunden verwenden dies zum streamen, Du bist wohl der erste Endkunde der damit etwas anfangen kann :-)
« Letzte Änderung: September 03, 2012, 11:16:47 Nachmittag von Sundtek »
Failure is a good thing! I'll fix it

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #8 am: September 05, 2012, 08:38:39 Nachmittag »
Noch eine Frage zu meiner Kombination mit TV-Viewer:

Fernsehen schauen geht perfekt! Nur Recording und die Nutzung von Timeshift benötigt einen Trick:

Ich sag's mal salopp: "man muß /dev/video0 busy halten", sonst wird nur eine 0 Byte-Datei aufgezeichnet.

Mein Würgeround: bevor man aufzeichnet bzw. Timeshift aktiviert, einfach im Terminal
cat /dev/video0 > /dev/nullstarten und während der ganzen Zeit laufen lassen. Dann funktioniert alles bestens. Wo müßte man da anfangen zu suchen, woran das liegt? (habe inzwischen mit der stable 0.8.1.1 und der Beta 0.8.2b1 getestet).

Beste Grüße,
Ingo

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #9 am: September 05, 2012, 09:21:49 Nachmittag »
Wir sehen es uns morgen kurz mal an.
Failure is a good thing! I'll fix it

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #10 am: September 06, 2012, 09:44:12 Vormittag »
Wir sehen es uns morgen kurz mal an.

Danke, zur Info: Dokumentation, Installation, ... findet sich hier: http://tv-viewer.sourceforge.net/mediawiki/index.php/Documentation:dev:installation.

Hinweis: die 64-bit Version von Tcl/TK 8.5 in Debian-Squeeze (und Ubuntu-Lucid) hat einen bekannten Bug und geht dehalb nicht korrekt. Da sollte man Tcl/Tk von ActiveState verwenden. In Wheezy ist alles ok.
« Letzte Änderung: September 06, 2012, 10:03:34 Vormittag von ingo »

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #11 am: September 09, 2012, 10:35:12 Nachmittag »
Ich habe inzwischen auch die ganz aktuelle Version von Christian aus dem trunk getestet:
http://tv-viewer.sourceforge.net/mediawiki/index.php/Development_Bazaar

Es ist die 0.8.2b2 und damit fast die finale 0.8.2. Leider ist das Problem das gleiche.
Meine Vermutung: der Stick liefert seinen Stream nicht auf /dev/videoX, wenn man nicht aktiv "daraus saugt", sondern nur "mitschneidet, was dort herauskommt". Mit den PVR-Karten und Hardware-Encoder geht tv-viewer dagegen problemlos.

Sorry, wenn das sehr laienhaft ausgedrückt ist, aber mit programmieren kenne ich mich praktisch nicht aus. Leider hat Christian im Moment wenig Zeit für die Fertigstellung der "final 0.8.2", Bug-Reports sind aber noch willkommen. Er wird wohl den MediaStick Pro in die Liste der unterstützten Geräte aufnehmen.

Beste Grüße,
Ingo
« Letzte Änderung: September 09, 2012, 11:06:19 Nachmittag von ingo »

ingo

  • Newbie
  • *
  • Beiträge: 23
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #12 am: September 28, 2012, 06:14:58 Nachmittag »
So, ich habe jetzt nochmal auf komplett anderer Hardware gegengecheckt:

aktueller PC:
Intel DH77EB mit H77-Chipsatz un Ivy-Bridge CPU an einem USB2.0-Port des MB, BS: Debian-Wheezy, aktuell 64-bit.

"alter" PC:
ASUS M2N-E mit nForce 570-Ultra Chipsatz und Athlon64-X2 an einem USB-Port des MB, BS: Debian-Squeeze-amd64. Zusätzlich hat dieser PC noch PCI-Slots und in einem einer Happauge PVR150, die einwandfrei mit beiden Vesionen des TV-Viewer (0.8.1.1 und 0.8.2b2) funktioniert.

Auf beiden PC's habe ich das oben beschiebene Phänomen mit dem MediaTV Pro , das analoges TV-sehen einwandfrei geht, aber bei Recording der Stream aus /dev/videoX nur eine Datei mit 0 Bytes Größe liefert. Auch der "Workaround", vor der geplanten Aufnahme ein "cat /dev/videoX > /dev/null" zu starten, hilft in beiden Fällen und liefert ein MPEG2-Video.

Noch eine Frage: gibt es eine Möglichkeit, die Bitrate bzw. Qualität der Codierung für diesen Weg/das Plugin einzusetllen? Gibt es inzwischen was Neues bei Sundtek zu dieser Sache?

Beste Grüße,
Ingo

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #13 am: Oktober 02, 2012, 09:43:15 Nachmittag »
Es wird aktuell noch am nächsten Update gearbeitet, sobald das abgeschlossen ist kann dieser Bereich auch feingetuned werden (hoffentlich noch diese Woche).
Failure is a good thing! I'll fix it

Sundtek

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 8512
    • Profil anzeigen
Re:How to record analog-tv with mencoder?
« Antwort #14 am: Oktober 06, 2012, 10:50:31 Nachmittag »
Das Problem bezüglich tv-viewer ist klar, wir haben soweit einen Workaround für diese Applikation hinzugefügt. Es handelt sich bei unserem Tuner um einen Tuner der Rohdaten zur Verfügung stellt ohne explizite Konfiguration weiß der Treiber nicht das die Applikation IVTV Daten erhalten möchte.

Mit dem kommendem Update klappt auch die Aufnahme mittels tv-viewer.

« Letzte Änderung: Oktober 07, 2012, 02:30:11 Nachmittag von Sundtek »
Failure is a good thing! I'll fix it