Re: Software, um TV-Aufnahmen zu machen
Dirk Salva schrieb:
> ich suche eine einfache und bequeme Software, um (gesteuerte)
> Fernsehaufnahmen mit der vorhandenen TV-Karte zu machen. D.h. ich
Ich verwende VDR als bequeme Software.
Einfache Software:
Ganz einfach z.B. CronScript für die Nachrichten:
> #!/bin/sh
> szap "ZDF" -r 1>/dev/null 2>&1 &
> cat /dev/dvb/adapter0/dvr0 > /video/nachr.ts
Etwas kompfortabler z.B. Perl:
#!/usr/bin/perl -w
#
use strict;
use warnings;
use Getopt::Long;
$Getopt::Long::ignorecase = 0;
use vars qw($opt_h $opt_help $opt_v $opt_version);
use Time::ParseDate qw(parsedate);
use Sys::Syslog;
use Proc::Killfam;
#program version
my $VERSION = "1.1";
my $USAGE = "$0 [options] Sender Startzeit Endezeit
Zeitangaben: hh:mm oder yy/mm/dd.hh:mm
Options:
-h, --help Print this help then exit
-v, --version Print version
";
GetOptions( "v", "version", "h", "help" )
|| die "$USAGE";
if ( ( defined $opt_h ) || ( defined $opt_help ) ) { print "$USAGE";
exit(); }
if ( ( defined $opt_v ) || ( defined $opt_version ) ) {
print "$VERSION\n";
exit();
}
my ( $sender, $start, $ende ) = @ARGV;
until ( $sender =~ m/\w/ ) { print "$USAGE"; exit(); }
my $jetzt;
my $sek_start;
my $sek_end;
my $sek_diff;
$jetzt = time;
$sek_start = parsedate($start) - $jetzt;
if ( $sek_start < 0 ) {
if ( ( $sek_start + 3600 ) > 0 ) {
$sek_start = 0;
} # Start liegt in der letzten Stunde, deshalb Aufzeichnung sofort
else {
print "Start liegt in der Vergangenheit, bitte Datum mit
angeben:\n";
print "$USAGE";
exit;
}
}
if ( $sek_start > 300 ) {
# Falls der Start mehr als 5 Minuten in der Zukunft liegt, einen at-Job
starten.
system(
"echo \"/home/mati/scripte/perl/video.pl \'$sender\' $start $ende\" | at
$start \n"
);
print "Aufzeichnung von $sender startet um $start \n";
exit();
}
if ( defined $ende ) {
$sek_end = parsedate($ende) - parsedate($start);
}
else { $sek_end = 300; }
if ( $sek_end < 80 ) {
print "Aufnahmezeit weniger als eine Minute, auf 1 Stunde gesetzt\n";
$sek_end = 3600;
}
print $sek_start, " ", $sek_end, "\n";
sleep $sek_start;
my $pid = $$;
my ( $pid1, $pid2 );
if ( defined( $pid1 = fork ) ) {
if ($pid1) {
# print "Empfang PID $pid \n";
}
else {
&empfang;
exit;
}
}
else { die "fork funktioniert nicht \n"; }
if ( defined( $pid2 = fork ) ) {
if ($pid2) {
}
else {
&aufzeichnung;
exit;
}
}
else { die "fork funktioniert nicht \n"; }
sleep $sek_end;
Proc::Killfam::killfam 'TERM', ( $pid1, $pid2 );
exit;
sub empfang {
system("szap \'$sender\' -r 1>/dev/null 2>&1");
exit;
}
sub aufzeichnung {
system(
"cat /dev/dvb/adapter0/dvr0 > \'/mnt/hda8/video/$sender\'.ts 2>/dev/null"
);
exit;
}
sub log {
my $para = shift(@_);
if ( defined $para ) {
chomp($para);
my $leng = length($para);
if ( $leng > 0 ) {
Sys::Syslog::openlog( "video", 'pid, nowait', 'user' );
Sys::Syslog::syslog( 'info', $para );
Sys::Syslog::closelog();
}
}
}
mfg
Matthias Taube
Reply to: