mike71
Digital-Forum Senior Plus
HTML:
#!/usr/bin/perl
#
# questo programma legge una lista canali dvb-t la ordina per
# frequenza e pid, quindi elimina i duplicati. Lo stesso canale non viene
# eliminato se su frequenza diversa
#
use strict;
use warnings;
my @sorted = map {$_}
sort { $a->[2] <=> $b->[2] ||
$a->[11] <=> $b->[11] ||
$a->[12] <=> $b->[12] }
map {chomp;[$_,split(/:/)]} <>;
my $freq=0;
my $vpid=0;
my $apid=0;
foreach my $line(@sorted) {
if(@$line[2]<=>$freq || @$line[11]<=>$vpid || @$line[12]<=>$apid) {
print "@$line[0]\n";
$freq=@$line[2];
$vpid=@$line[11];
$apid=@$line[12];
}
else {
# print "#SAME PID# @$line[1] @$line[2] @$line[11] @$line[12];\n";
}
}
Questo post è molto linux-centrico, nel senso che è molto utile per chi usa dei sistemi basati su mlayer, xine o vlc sotto linux per vedere il digitale terrestre, ma permette di fare considerazioni generali.
Ho scritto questo programmino in perl che prende i dati del dvb-t generati da scan, li ordina per frequenza e pid ed eleimina i programmi che hanno stesso pid sulla stessa frequenza.
Qui a torino quasi la metà dei canali sono duplicati, ed in mezzo ci sono anche i canali DVB-H e di test (ovvero con vpid ed apid a 0).
$wc -l channels.conf
443 channels.conf
$wc -l .mplayer/channels.conf
236 .mplayer/channels.conf
In questo caso il 46% dei canali sono duplicati o con apid e pid a 0 (vengono contati come duplicati)
Se li tolgo, i numeri diventano:
$ wc -l ch.conf
361 ch.conf
$wc -l .mplayer/channels.conf
224 .mplayer/channels.conf
Ovvero il 38% dei canali sono duplicati dello stesso MUX.
La lista è quella dei canali ricevibili a Torino.