You are not logged in.

Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, June 7th 2004, 10:17pm

vdr-tvtime.pl - vdr ueber tvtime steuern

Hi,

wer tvtime im Einsatz hat, hat sich potentiell auch schonmal gewuenscht direkt aus tvtime
heraus den VDR steuern zu koennen (wie z.B. bei kvdr). Da tvtime einen Slave-Modus
unterstuetzt ist dies auch machbar, und ich hab mich einfach mal daran versucht.

Ueber Rueckmeldungen wuerde ich mich latuernich freuen, zumal ich noch nicht lange
getestet hab :)

For our english-speaking friends:
This is vdr-tvtime.pl, an addon for tvtime and vdr to make it possible to
controll vdr from the tvtime window.

EDIT: neuere version weiter unten...

cu
gonz

This post has been edited 2 times, last edit by "gonz" (Aug 3rd 2004, 9:05pm)


2

Tuesday, June 8th 2004, 12:11am

RE: vdr-tvtime.pl - vdr ueber tvtime steuern

Hi,

ich wurde ein paar mal gefragt was tvtime ist. tvtime ist ein Fernseh-Programm fuer X11 - aehnlich wie xawtv, kvdr, etc... Im Unterschied zu den genannten Programmen bringt tvtime mannigfaltige Deinterlacing-Features mit, die die Bildqualitaet auf PC-Monitor oder -TFT deutlich erhoehen.

Ihr findet es auf http://tvtime.sourceforge.net/.

cu
gonz

3

Sunday, June 27th 2004, 6:12am

RE: vdr-tvtime.pl - vdr ueber tvtime steuern

Hi,

hat das eigentlich wer mal ausprobiert, oder benutzt keiner tvtime ?
nur so interessehalber :)

cu
gonz

Posts: 2,805

Location: Landkreis Dahme-Spreewald (LDS)

  • Send private message

4

Sunday, June 27th 2004, 5:00pm

RE: vdr-tvtime.pl - vdr ueber tvtime steuern

.

This post has been edited 1 times, last edit by "ronnykornexl" (Oct 27th 2005, 10:58am)


5

Sunday, June 27th 2004, 7:13pm

RE: vdr-tvtime.pl - vdr ueber tvtime steuern

Die Idee ist sehr gut, leider bei mir ist die Qualität des Video nicht so gut wie xawtv, und ich kann tvtime nicht immer starten :

Running tvtime 0.9.12.
Reading configuration from /etc/tvtime/tvtime.xml
Reading configuration from /home/greg/.tvtime/tvtime.xml
videoinput: Can't get tuner info: Invalid argument
videoinput: Can't get tuner info: Invalid argument

Cannot allocate enough off-screen video memory. This may be fixed by:

1. Closing or restarting large X applications.
2. Lowering the input width of tvtime (--inputwidth parameter).
3. Lowering your colour depth or highest configured resolution.
4. Increasing the amount of video memory in your X config file
(for example, if you are using the i810 XFree86 driver.)

See http://tvtime.net/ for more information.


Cannot allocate enough off-screen video memory. This may be fixed by:

1. Closing or restarting large X applications.
2. Lowering the input width of tvtime (--inputwidth parameter).
3. Lowering your colour depth or highest configured resolution.
4. Increasing the amount of video memory in your X config file
(for example, if you are using the i810 XFree86 driver.)

See http://tvtime.net/ for more information.

Thank you for using tvtime.
DEBUG: tvtime exited.

Ich glaube tvtime kann gut werden, aber zur Zeit ist es zu jung :)
Grégoire

6

Monday, June 28th 2004, 4:29am

RE: vdr-tvtime.pl - vdr ueber tvtime steuern

Quoted

Original von ronnykornexl

Ja, ist extrem "lahm".

MFG Ronny


Hi Ronny,

das ist leider prinzipbedingt, es muss halt fuer jede einzelne Taste svdrpsend.pl
gefeuert werden, und das laesst sich halt gerne mal feiern...

cu
gonz

7

Monday, June 28th 2004, 4:32am

RE: vdr-tvtime.pl - vdr ueber tvtime steuern

Hi Grégoire,

Quoted

Original von Grégoire
Die Idee ist sehr gut, leider bei mir ist die Qualität des Video nicht so gut wie xawtv, und ich kann tvtime nicht immer starten :


Richtig interessant ist tvtime halt bei Sendungen die Interlaced ausgestrahlt werden, und mindestens bei denen ist die Qualitaet bei mir gleich um Groessenordnungen besser.

Quoted


DEBUG: tvtime exited.

Ich glaube tvtime kann gut werden, aber zur Zeit ist es zu jung :)


Kann es sein, dass Du wenn es nicht geht eine andere Anwendung offen hast, die XV verwendet ?

Ich kann z.B. tvtime auch nicht starten, wenn bereits mplayer laeuft. Ansonsten funktioniert es bei mir 100% stabil im 24/7 Betrieb.

cu
gonz

Tyger

Trainee

Posts: 107

Location: Bielefeld

Occupation: Softwareentwickler

  • Send private message

8

Sunday, August 1st 2004, 5:56pm

Ich finde das Script sehr nützlich, aber die langen Reaktionszeiten sind tatsächlich sehr störend. Ich habe ein wenig experimentiert und herausgefunden, daß man die Reaktionszeiten auf normales "Fernbedienungs-Nivau" heben kann, indem man die svdrpsend.pl-Funktionalität direkt in das vdr-tvtime-Skript integriert. Dann genügt es, den Socket zum vdr nur einmal zu Öffnen und wiederzuverwenden. Dadurch werden die Reaktionszeiten beträchtlich erhöht.

Ein Problem stellt allerdings der 'timeout' dar, der zwar abgefangen werden kann, allerdings weiss ich nicht, wie er zustande kommt bzw. man ihn vernünftig behandelt.

Cya, Ed

Tyger

Trainee

Posts: 107

Location: Bielefeld

Occupation: Softwareentwickler

  • Send private message

9

Sunday, August 1st 2004, 7:13pm

Mein Timeout-Problem scheint serverseitig zu sein: der VDR weigert sich einfach, auf die Verbindung auf Port 2001 zu antworten. Ich habe versucht, via telnet auf den VDR zuzugreifen und habe auch damit keinen Zugriff erhalten. Wenn man allerdings lange genug wartet, meldet sich der VDR schliesslich doch noch.

Ich hab Gonz' Skript entsprechend angepasst, ist aber nur ein kleiner Hack und als proof of concept zu verstehen. Die map.txt bekommt man z.B. aus Gonz' Paket.

Cya, Ed

Tyger

Trainee

Posts: 107

Location: Bielefeld

Occupation: Softwareentwickler

  • Send private message

10

Sunday, August 1st 2004, 10:53pm

Da ich offenbar zu blöd bin, das File hochzuladen ("Upload failed! Please check the file's specifications!"), kommt meine modifizierte Version halt im Klartext. Ab und an dauert es ein bisschen, bis der VDR auf die Tasten reagiert, das liegt IMHO aber an der Art, wie der VDR den Socket ausliest, naemlich nur in bestimmten Abstaenden, wenn er grad nichts anderes zu tun hat. Eine Implementation mit Threads waere da responsiver, aber auch von enormem Aufwand.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/perl
use Socket;

$tvtime    = '/usr/bin/tvtime --slave';
$tvtimecmd = '/usr/bin/tvtime-command';
$mapfile   = '/etc/tvtime/map.txt';
$svdrpsend = '/usr/bin/svdrpsend.pl';

my %mapped;
my $timeout = 0;

open(IN, "<$mapfile") || die "cannot open mapfile: $mapfile";
while(<IN>)
{
  chomp;
  my @line = split( /\t/, $_ );
  $mapped{$line[0]} = $line[1];
}
close(IN);

$Dest = "127.0.0.1";
$Port = 2001;
$| = 1;

open(IN, "$tvtime|") || die "cannot open pipe";
MainLoop();

sub MainLoop ()
{
  print STDOUT "DEBUG Mainloop\n";

  do {
    OpenSocket();
    while(<IN>)
    {
      chomp;
      next if /^\0$/;
      if ( $mapped{$_} eq "" ) { $mapped{$_} = $_ }

      if ( $mapped{$_} =~ /TVTIME_/)
      {
        $cmd = $mapped{$_};
        $cmd =~ s/TVTIME_//;
        SendTvtime($cmd);
      }
      else
      {
        SendKey($mapped{$_});
      }
    }
  } while (TimeOut);
  Send("quit");
  close(SOCK)                                 || Error("close: $!");
  close(IN);

  print "DEBUG: tvtime exited.\n";
}

sub TimeOut
{
  print STDOUT "TIMEOUT $timeout\n";
  if ($timeout) {$timeout = 0; return 1;}
  return 0;
}

sub SendTvtime
{
system("$tvtimecmd KEY_EVENT $cmd")
}

sub Send
{
  my $cmd = shift || Error("no key to send");
  print SOCK "HITK $cmd\n";
  Receive();
}

sub SendKey
{
  my $cmd = shift || Error("no key to send");
  print SOCK "HITK $cmd\n";
  Receive();
}

sub OpenSocket
{
  $iaddr = inet_aton($Dest)                   || Error("no host: $Dest");
  $paddr = sockaddr_in($Port, $iaddr);
  $proto = getprotobyname('tcp');

  close(SOCK);
  socket(SOCK, PF_INET, SOCK_STREAM, $proto)  || Error("socket: $!");
  connect(SOCK, $paddr)                       || Error("connect: $!");
  select(SOCK) || Error ;
  $| = 1;
  Receive();
}

sub Receive
{
  while (<SOCK>)
  {
    if ( $_ =~ /^221/)
    {
      print STDOUT "timeout detected\n";
      $timeout = 1;
      OpenSocket();
      return;
    }
    print STDOUT $_;
    last if substr($_, 3, 1) ne "-";
  }
}

sub Error
{
  print STDERR "@_\n";
  close(SOCK);
  exit(0);
}



EDIT: Hab den Code nochmal modifiziert: Befehle fuer den tvtime koennen nun ebenfalls in map.txt definiert werden. Z.B:
f TVTIME_f
v TVTIME_v
fuer Fullscreen und Stay-on-Top.

Cya, Ed

This post has been edited 3 times, last edit by "Tyger" (Aug 2nd 2004, 2:28am)


Tyger

Trainee

Posts: 107

Location: Bielefeld

Occupation: Softwareentwickler

  • Send private message

11

Tuesday, August 3rd 2004, 1:20am

Hab noch ein bisschen gebastelt und nun eine stabile Version hinbekommen. Das Skript hält die SVDRP-Verbindung konstant aufrecht, indem es in regelmässigen Abständen ein Ping (bzw. ein HELP) über die Leitung schickt. Dafür sollte man die Variable $timeout auf einen Wert knapp unterhalb des Timeouts im VDR stellen.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/perl
use Socket;
use Time::HiRes qw(setitimer ITIMER_VIRTUAL);

$tvtime    = '/usr/bin/tvtime --slave';
$tvtimecmd = '/usr/bin/tvtime-command';
$mapfile   = '/etc/tvtime/map.txt';
$svdrpsend = '/usr/bin/svdrpsend.pl';
$timeout = 250;

my %mapped;

open(IN, "<$mapfile") || die "cannot open mapfile: $mapfile";
while(<IN>)
{
  chomp;
  my @line = split( /\t/, $_ );
  $mapped{$line[0]} = $line[1];
}
close(IN);

$Dest = "127.0.0.1";
$Port = 2001;
$| = 1;

open(IN, "$tvtime @ARGV |") || die "cannot open pipe";
OpenSocket();

# keep alive
$SIG{ALRM} = sub { SendVDR("HELP"); };
setitimer(ITIMER_PROF, $timeout, $timeout);

$tvtimealive = 1;
while($tvtimealive)
{
  chomp($key=<IN>);
  printf(STDOUT "Key $key %d\n", ord($key));
  next if $key =~ /^\0$/;

  if ( ord($key) == 0 )
  {
    $tvtimealive = 0;
    next;
  }

  if ( $mapped{$key} eq "" ) { $mapped{$key} = $key }
  if ( $mapped{$key} =~ /TVTIME_/)
  {
    $cmd = $mapped{$key};
    $cmd =~ s/TVTIME_//;
    SendTvtime("KEY_EVENT $cmd");
  }
  else
  {
    SendVDR("HITK $mapped{$key}");
  }
}

SendVDR("quit");
close(VDRSOCK) || Error("close: $!");
close(IN);

print STDOUT "DEBUG: tvtime exited.\n";
exit(0);

sub SendTvtime
{
  $cmd = shift || Error("no key to send");
  system("$tvtimecmd $cmd")
}

sub SendVDR
{
  my $cmd = shift || Error("no key to send");
  print VDRSOCK "$cmd\n";
  Receive();
}

sub OpenSocket
{
  $iaddr = inet_aton($Dest) || Error("no host: $Dest");
  $paddr = sockaddr_in($Port, $iaddr);
  $proto = getprotobyname('tcp');

  socket(VDRSOCK, PF_INET, SOCK_STREAM, $proto) || Error("socket: $!");
  connect(VDRSOCK, $paddr) || Error("connect: $!");
  select(VDRSOCK) || Error ;
  $| = 1;
  Receive();
}

sub Receive
{
  while (<VDRSOCK>)
  {
    if ( $_ =~ /^221.*timeout/)
    {
      print STDOUT "timeout detected\n";
      OpenSocket();
      return;
    }
    print STDOUT "$_";
    last if substr($_, 3, 1) ne "-";
  }
}

sub Error
{
  print STDERR "@_\n";
  close(VDRSOCK);
  exit(0);
}


Nicht der sauberste Code, aber meine aktiven Perltage liegen schon ein paar Jahre zurück...

Cya, Ed

12

Tuesday, August 3rd 2004, 7:26pm

supercool!

13

Tuesday, August 3rd 2004, 8:19pm

Hi,

ich hab mal ein neues Paket geschnuert und die README etc. updated.
Tyger: Gut gemacht! - Lust das "Projekt" zu uebernehmen ?

cu
Gonz

This post has been edited 1 times, last edit by "gonz" (Aug 3rd 2004, 9:03pm)


14

Tuesday, August 3rd 2004, 9:03pm

argl, glatt die map.txt vergessen gehabt...
gonz has attached the following file:

marco

Professional

Posts: 929

Location: BaWü

Occupation: System Engineer

  • Send private message

15

Friday, August 27th 2004, 12:43am

hi gonz,

beim Aufruf von vdr-tvtime.pl bekomme ich die fogelnde Fehlermeldung:

Can't locate Time/HiRes.pm in @INC (@INC contains: /usr/lib/perl5/5.8.3/i386-linux-thread-multi /usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at ./vdr-tvtime.pl line 4.
BEGIN failed--compilation aborted at ./vdr-tvtime.pl line 4.

habe mal die Zeile: use Time::HiRes qw(setitimer ITIMER_VIRTUAL);
auskommentiert, aber dann stürzt tvtime nach einer Zeit mit der Meldung ab:

Running tvtime 0.9.12.
Reading configuration from /etc/tvtime/tvtime.xml
Reading configuration from /root/.tvtime/tvtime.xml
videoinput: Can't get tuner info: Das Argument ist ungültig
videoinput: Can't get tuner info: Das Argument ist ungültig
videoinput: Can't mute card. Post a bug report with your
videoinput: driver info to http://tvtime.net/
videoinput: Include this error: 'Das Argument ist ungültig'
220 gecko SVDRP VideoDiskRecorder 1.3.12; Fri Aug 27 00:40:40 2004
Undefined subroutine &main::setitimer called at ./vdr-tvtime.pl line 34, <VDRSOCK> line 1.
Gruß Marco

HW: Hauppauge Nexus-S, TeVii S471 S/S2
SW: Fedora 20, 3.13.5-200.fc20.x86_64, VDR 2.0.4-1.fc20.x86_64

16

Friday, August 27th 2004, 2:24am

Time/Hires

Hi marco,

da Du Fedore Core 2 zu benutzen scheinst hab ich mal ganz frech nach "fedora core 2 Time/HiRes.pm" gegoogelt und der erste Treffer verriet mir schonmal, dass da ein "perl-Time-HiRes-1.55-2 RPM for i386" existiert und es unter ftp://fr2.rpmfind.net/linux/fedora/core/…1.55-2.i386.rpm heruntergeladen werden kann...

Evtl. war es auch bei deiner Distribution dabei :)

Viel Erfolg!

cu
gonz

marco

Professional

Posts: 929

Location: BaWü

Occupation: System Engineer

  • Send private message

17

Friday, August 27th 2004, 10:31am

RE: Time/Hires

Danke, das wars, hat fkt.
Gruß Marco

HW: Hauppauge Nexus-S, TeVii S471 S/S2
SW: Fedora 20, 3.13.5-200.fc20.x86_64, VDR 2.0.4-1.fc20.x86_64

marco

Professional

Posts: 929

Location: BaWü

Occupation: System Engineer

  • Send private message

18

Friday, August 27th 2004, 12:50pm

RE: Time/Hires

Hallo gonz,

ich da noch eine Frage,
in der map.txt versuche ich gerade für die Ok-Taste, Return zu
definieren, aber das klappt nicht.
Was muß ich eintragen, damit die Bestägung einer Anwahl mit Return klappt.
Gruß Marco

HW: Hauppauge Nexus-S, TeVii S471 S/S2
SW: Fedora 20, 3.13.5-200.fc20.x86_64, VDR 2.0.4-1.fc20.x86_64

MR42HH

Intermediate

Posts: 438

Location: Schleswig-Holstein

Occupation: Ingenieur Verfahrenstechnik

  • Send private message

19

Friday, August 27th 2004, 1:10pm

Ähm, mal für jemanden, der gerne mal tvtime ausprobieren würde (wegen Plasma und fiesen Störstreifen in der dvbshop.tv Geschichte)

Was heißt "direkt bedienen" Heißt das, wenn ich tvtime ohne diese bewundernswerte Skript-Akrobatik installiere, daß dann meine (LIRC-) Fernbedienung nicht mehr geht?

Und hat jemand von Euch tvtime auf der nativen Auflösung eines Plasma laufen?

Gruß,

Mirko

mein VDR:
Siemens Gigaset 740AV, Buffalo Linkstation NAS
in meiner Bastelkiste:
2x Activy 300, 1x MediaPortal mit GLCD, 1x Fujitsu-Siemens Jetson, 1xDVB-C Rev.2.1, Airstar2, neue Nova-T, Linksys NSLU2, defekte 2300C

20

Saturday, August 28th 2004, 10:35pm

RE: Time/Hires

hi marco,

um mit Return ein "Ok" an den VDR weiterzugeben reicht es (denk ich)
in der map.txt die Zeile

Source code

1
End   Ok

durch

Source code

1
Enter Ok


zu ersetzen :)

cu
gonz