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.
Quoted
Gibt es in der import.js die Möglichkeit, nur die 001-00x.vdr Datein in den Index mit rein zu nehmen?
Damit fügt er die index.vdr, marks.vdr, info.vdr ebenfalls in die Datenbank mit ein, was keinen Sinn macht.
|
|
Source code |
1 2 3 4 5 6 7 8 9 |
function addVideo(obj) {
var chain, show, season;
var location = obj.location.split('/');
chain = new Array();//'Video');
chain.push("Filme"); //Legt Unterordner Filme an
chain.push(location[location.length-3]); //Entspricht dem Verzeichnis mit dem Namen der Aufnahme
//chain.push(location[location.length-2]); //Wäre der Unterordner mit dem Aufzeichnungsdatum
//chain.push(location[location.length-1]); //file name (DONT ADD!)
if(location[location.length-1].search(/.vdr/)!=-1) addCdsObject(obj, createContainerChain(chain)); }
|
Danke.
... zu lösen.welche Möglichkeit gibt es die External Urls mittels eines Skripts in die Datenbank einzutragen? Bei mehreren Tausend Sendern ist das leider ganz schön mühlseelig.
oder wäre das sogar mit einer .js Datei möglich?
|
|
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 |
#!/usr/bin/perl
use strict;
#
# Custimize the following lines
#
my $ip = "192.168.178.2"; # IP-Address of the VDR - not MediaTomb!
my $port = "3000"; # port number of VDR-StreamdevServer
my $input_file = "/etc/vdr/channels.conf"; # path to channels.conf
my $out_dir = "/var/lib/mediatomb/channels"; # directory observed by MediaTomb
my $stream = "ts"; # Stream type (TS, PES, ...)
#
# Script starts here
#
# first clean up
if (-d $out_dir) {
system("rm -rf $out_dir" + '/*') or die $!;
} else {
mkdir($out_dir) or die $!;
}
my $i = 0;
my $sub_dir = "";
open IN_FILE, "<$input_file" or die $!;
while (<IN_FILE>) {
my $in_line = $_;
chomp($in_line);
print "IN: $in_line\n";
my @array=split(/:/, $in_line);
my $chan = $array[0];
if ($chan) {
# channel found
my @chan = split(/;/, $chan);
$chan = $chan[0];
@chan = split(/,/, $chan);
$chan = trim($chan[0]);
my $p1 = $array[3];
my $p2 = $array[10];
my $p3 = $array[11];
my $p4 = $array[9];
$i++;
$i = sprintf("d", $i);
my $out_file = "$i $chan\@$ip\@$port\@$p1-$p2-$p3-$p4.$stream.channel";
$out_file =~ s/ /\_/igo;
$out_file =~ s/\//_/igo;
print "OUT_FILE: $out_file\n";
open OUT_FILE, ">$out_dir/$sub_dir/$out_file" or die $!;
print OUT_FILE "$in_line\n";
close OUT_FILE;
} else {
# separator found
$i = 0;
$sub_dir = $array[1];
if (substr($sub_dir, 0, 1) eq '@') {
$sub_dir = substr($sub_dir, index($sub_dir, ' '));
}
$sub_dir = trim($sub_dir);
$sub_dir =~ s/ /\_/igo;
$sub_dir =~ s/\//_/igo;
print "SUB_DIR: $sub_dir\n";
mkdir("$out_dir/$sub_dir");
}
}
close IN_FILE;
sub trim($) {
my $string = shift;
$string =~ s/^\s+//;
$string =~ s/\s+$//;
return $string;
}
|
|
|
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 |
// main script part
if (getPlaylistType(orig.mimetype) == '')
{
var arr = orig.mimetype.split('/');
var mime = arr[0];
// var obj = copyObject(orig);
var obj = orig;
obj.refID = orig.id;
if (mime == 'audio')
{
if (obj.onlineservice == ONLINE_SERVICE_WEBORAMA)
addWeborama(obj);
else
addAudio(obj);
}
// BEGIN OF CHANGES BY REO
if (/\.vdr$/.test(obj.title) || /\.ts$/.test(obj.title))
{
addVdrVideo(obj);
}
else if (mime == 'video')
{
if (obj.onlineservice == ONLINE_SERVICE_YOUTUBE)
addYouTube(obj);
else if (obj.onlineservice == ONLINE_SERVICE_APPLE_TRAILERS)
addTrailer(obj);
else
addVideo(obj);
}
if (/\.channel$/.test(obj.title))
{
addVdrChannel(obj);
}
// END OF CHANGES
if (mime == 'image')
{
addImage(obj);
}
if (orig.mimetype == 'application/ogg')
{
if (orig.theora == 1)
addVideo(obj);
else
addAudio(obj);
}
}
|
|
|
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 |
/* **********************************************************
* Add items from VDR's channels.conf
* **********************************************************/
function addVdrChannel(obj)
{
var fullpath = obj.location;
var filename = fullpath.substring(fullpath.lastIndexOf('/') + 1, fullpath.length); // file name
var filepath = fullpath.substring(0, fullpath.lastIndexOf('/')); // full path of the file without filename and without last '/'
var sub_dir = filepath.substring(filepath.lastIndexOf('/') + 1, filepath.length);
var segments = filename.split(/\@/g);
var chan = segments[0];
chan = chan.replace(/_/g, ' ');
var ip = segments[1];
var port = segments[2];
var stream = segments[3];
stream = stream.replace(/.channel/g, '');
var url = 'http://' + ip + ':' + port + '/' + stream;
print(url);
var exturl = new Object();
exturl.mimetype = 'video/mpeg';
exturl.title = chan;
exturl.objectType = OBJECT_TYPE_ITEM_EXTERNAL_URL;
exturl.upnpclass = UPNP_CLASS_ITEM_VIDEO;
exturl.location = url;
exturl.protocol = 'http-get';
var chain = new Array('Live TV');
if (sub_dir != 'channels')
{
sub_dir = sub_dir.replace(/_/g, ' ');
chain[1] = sub_dir;
}
addCdsObject(exturl, createContainerChain(chain));
}
|
|
|
Source code |
1 2 3 4 |
<virtual-layout type="js">
<import-script>/usr/share/mediatomb/js/import-vdr.js</import-script>
<dvd-script>/usr/share/mediatomb/js/import-dvd.js</dvd-script>
</virtual-layout>
|
|
|
Source code |
1 2 |
<map from="ts" to="video/mpeg"/> <map from="vdr" to="video/mpeg"/> |

Ich habe ein kleines Perl-Skript geschrieben, welches die Einträge automatisch aus der channels.conf erzeugt und in die SQLITE-DB von Mediatomb einträgt. Ich nutze derzeit den Mediatomb lediglich für das Live TV.
Quoted
welche Möglichkeit gibt es die External Urls mittels eines Skripts in die Datenbank einzutragen? Bei mehreren Tausend Sendern ist das leider ganz schön mühlseelig.
oder wäre das sogar mit einer .js Datei möglich?
|
|
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 |
use strict;
use DBI;
# definitions
my $channels = "channels.conf";
my $dbfile="mediatomb.db";
my $dbargs = {AutoCommit => 0, PrintError => 1};
my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile", "", "", $dbargs);
my $line = 0;
my $count = 3;
my $file = "";
my $maxChannel = 67;
my $streamdevURL = "http://192.168.0.99:3000";
my $streamType = "ts";
# open channels file
open( CHANNELSFILE, $channels) || die "Can not open file $channels: $!";
# delete all existing entries in the mt_cds_object table except the folder entries
# Live TV configuration only
my $delete = "DELETE FROM \"mt_cds_object\" WHERE \"id\" > 2";
$dbh->do($delete);
if ($dbh->err()) { die "$DBI::errstr\n"; }
$dbh->commit();
# Loop über alle Datensätz
while ( $file = <CHANNELSFILE> and $line < $maxChannel) {
my @line = split(/:/, $file);
my $channelnr = $count - 2;
if ($channelnr < 10) {
$channelnr = "0$channelnr";
}
my @name = split("\;",@line[0]);
my $name = @name[0];
my $a = @line[3];
my $b = @line[10];
my $c = @line[11];
my $d = @line[9];
if ($a ne "") {
# build channel url
my $channel = "$streamdevURL/$a-$b-$c-$d\.$streamType";
my $insert = "INSERT INTO \"mt_cds_object\" VALUES($count,NULL,2,10,'object.item.videoItem','" . $channelnr . " - " . $name . "','" . $channel . "',NULL,'dc%3Adescription=" . $name . "',NULL,'0~protocolInfo=http-get%3A%2A%3Avideo%2Fmpeg%3A%2A~~',0,'video/mpeg',1,NULL,NULL);";
# insert channel in list
$dbh->do($insert);
if ($dbh->err()) { die "$DBI::errstr\n"; }
$dbh->commit();
$count++;
}
$line++;
}
# close database
if ($dbh->err()) { die "$DBI::errstr\n"; }
$dbh->disconnect();
# close channels file
close(CHANNELSFILE);
|
)|
|
Source code |
1 2 3 4 |
<custom-http-headers>
<add header="transferMode.dlna.org: Streaming"/>
<add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"/>
</custom-http-headers>
|
This post has been edited 2 times, last edit by "woz" (Apr 24th 2012, 8:49am)
|
|
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 |
May 23 21:18:30 vdr vdr: [16419] externremux.sh: mencoder: Symbol `ff_codec_bmp_tags' has different size in shared object, consider re-linking
May 23 21:18:30 vdr vdr: [16419] externremux.sh: get_path("config") problem
May 23 21:18:30 vdr vdr: [16419] externremux.sh: Seek failed
May 23 21:18:36 vdr vdr: last message repeated 12 times
May 23 21:18:36 vdr vdr: [16419] externremux.sh: [ac3 @ 0x2189c50]frame sync error
May 23 21:18:36 vdr vdr: [1698] Streamdev: Accepted new client (HTTP) 192.168.88.74:56317
May 23 21:18:36 vdr vdr: [1698] ERROR: read from client (HTTP) 192.168.88.74:56316 failed: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
May 23 21:18:36 vdr vdr: [1698] streamdev-server: closing HTTP connection to 192.168.88.74:56316
May 23 21:18:36 vdr vdr: [16421] ERROR: streamdev-server: couldn't send data: Ungültiger Dateideskriptor
May 23 21:18:36 vdr vdr: [16421] streamdev-writer thread ended (pid=1326, tid=16421)
May 23 21:18:36 vdr vdr: [16422] streamdev-livestreaming thread ended (pid=1326, tid=16422)
May 23 21:18:38 vdr vdr: [16419] externremux.sh: [ac3 @ 0x2189c50]incomplete frame
May 23 21:18:38 vdr vdr: [16419] externremux.sh: cat: write error: Broken pipe
May 23 21:18:39 vdr vdr: [1698] buffer stats: 84976 (2%) used
May 23 21:18:40 vdr vdr: [16445] streamdev-livestreaming thread started (pid=1326, tid=16445)
May 23 21:18:40 vdr vdr: [16444] streamdev-writer thread started (pid=1326, tid=16444)
May 23 21:18:40 vdr vdr: [16442] externremux.sh: mencoder -msglevel all=1 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=4096 -oac mp3lame -lameopts preset=160 -alang de -o /tmp/externremux-3699 -- -
May 23 21:18:40 vdr vdr: [16442] externremux.sh: mencoder: Symbol `ff_codec_bmp_tags' has different size in shared object, consider re-linking
May 23 21:18:40 vdr vdr: [16442] externremux.sh: get_path("config") problem
May 23 21:18:40 vdr vdr: [16442] externremux.sh: Seek failed
May 23 21:18:45 vdr vdr: last message repeated 12 times
May 23 21:18:45 vdr vdr: [16442] externremux.sh: [ac3 @ 0x28f9c90]frame sync error
May 23 21:18:45 vdr vdr: [16444] ERROR: streamdev-server: couldn't send 43912 bytes: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt
May 23 21:18:45 vdr vdr: [16444] streamdev-writer thread ended (pid=1326, tid=16444)
May 23 21:18:45 vdr vdr: [1698] client (HTTP) 192.168.88.74:56317 has closed connection
May 23 21:18:45 vdr vdr: [1698] streamdev-server: closing HTTP connection to 192.168.88.74:56317
May 23 21:18:46 vdr vdr: [16445] streamdev-livestreaming thread ended (pid=1326, tid=16445)
May 23 21:18:47 vdr vdr: [16442] externremux.sh: [ac3 @ 0x28f9c90]incomplete frame
May 23 21:18:47 vdr vdr: [16442] externremux.sh: cat: write error: Broken pipe
May 23 21:18:49 vdr vdr: [1698] buffer stats: 107912 (2%) used
May 23 21:18:49 vdr vdr: [1698] Streamdev: Accepted new client (HTTP) 192.168.88.74:56318
May 23 21:18:49 vdr vdr: [16467] streamdev-writer thread started (pid=1326, tid=16467)
May 23 21:18:49 vdr vdr: [16468] streamdev-livestreaming thread started (pid=1326, tid=16468)
May 23 21:18:49 vdr vdr: [16465] externremux.sh: mencoder -msglevel all=1 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=4096 -oac mp3lame -lameopts preset=160 -alang de -o /tmp/externremux-30018 -- -
May 23 21:18:49 vdr vdr: [16465] externremux.sh: mencoder: Symbol `ff_codec_bmp_tags' has different size in shared object, consider re-linking
May 23 21:18:49 vdr vdr: [16465] externremux.sh: get_path("config") problem
May 23 21:18:49 vdr vdr: [16465] externremux.sh: Seek failed
|
|
|
Source code |
1 2 3 4 5 6 7 8 9 |
<profile name="mpeg2-VDR" enabled="yes" type="external">
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<accept-ogg-theora>no</accept-ogg-theora>
<hide-original-resource>yes</hide-original-resource>
<agent command="mencoder" arguments="%in -msglevel all=1 -ovc lavc -lavcopts vcodec=mpeg4:autoaspect:vbitrate=4096 -oac mp3lame -lameopts preset=160 -alang de -o %out"/>
<buffer size="1048576" chunk-size="4096" fill-size="1024"/>
</profile>
|