Sida 1 av 3
Skript för att spela upp svtplay-strömmar i mplayer
Postat: 10 jul 2010, 23:13
av mattsl
Jag har hackat ihop ett litet bash-skript som förenklar att spela upp rtmpe-strömmar från svtplay via rtmpdump och mplayer. Kanske kan det vara någon till nytta:
http://acephale.eu.org/kod/svtplay-rtmpdump.txt
OBS! rtmpdump finns inte i Lucids repositorier, så det är nödvändigt att lägga till en ny programkälla. Jag använde denna PPA: "ppa:hunter-kaller/ppa".
Url till strömmarna får man genom att gå in under inställningarna bredvid svt:s flashklipp.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 11 jul 2010, 10:36
av webaake
Ser ut att vara kanon! Jag brukar hämta filen först med rtmpdump och sedan spela upp den. Passar min slöa P4:a bättre. Typ;
rtmpdump -r $url -o $filename.mp4
$url är samma som ovan, alltså från länken "inställningar" lite till höger på tv-sidan.
Enda nackdelen är att t ex vlc och smplayer har lite svårt att spola i dessa filer.
Kan klistra in hela scriptet om nån vill ha det.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 11 jul 2010, 10:48
av mattsl
Gör det. Kul att kika på!
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 11 jul 2010, 22:49
av webaake
Kod: Markera allt
#!/bin/bash
echo "Download från svtplay. Du måste ha rtmpe-adressen samt ange filnamn (.mp4 eller .flv)"
echo "Ange rtmpe-adressen:"
read url
echo "$url"
echo "Ange filnamnet:"
read filename
echo "$filename"
echo "Kör download"
rtmpdump -r $url -o $filename.mp4
echo "Done! Filen här:"
ls $filename.mp4
exit 0
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 00:05
av m!rage
Det går inte så bra för mig. För det första använder SVT Play protokollet rtmp: och inte rtmpe:, för det andra krashar det direkt (hinner bara se ett mplayer-fönster öppnas och stängas). Från terminalen:
Kod: Markera allt
$ ./svtplay-rtmpdump rtmpe://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20100710/PG-1119590-006A-SVENSKMENTALITE-02-mp4-d-v1.mp4
Hittade rtmpdump ...
RTMPDump v2.2d
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
MPlayer SVN-r31042-Ubuntu-RVM (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.
Playing -.
Reading from stdin...
Cache fill: 0.00% (0 bytes) WARNING: HandShake: Type mismatch: client sent 6, server answered 8
Cache fill: 0.00% (0 bytes) INFO: Connected...
Cache fill: 0.00% (0 bytes) Starting download at: -0.001 kB
Cache fill: 0.00% (0 bytes) INFO: Metadata:
Cache fill: 0.00% (0 bytes) INFO: duration 2602.56
Cache fill: 0.00% (0 bytes) INFO: moovPosition 28.00
Cache fill: 0.00% (0 bytes) INFO: width 1024.00
Cache fill: 0.00% (0 bytes) INFO: height 576.00
INFO: videocodecid avc1
Cache fill: 0.00% (0 bytes) INFO: audiocodecid mp4a
Cache fill: 0.00% (0 bytes) INFO: avcprofile 77.00
Cache fill: 0.00% (0 bytes) INFO: avclevel 32.00
INFO: aacaot 2.00
Cache fill: 0.00% (0 bytes) INFO: videoframerate 25.00
Cache fill: 0.00% (0 bytes) INFO: audiosamplerate 48000.00
Cache fill: 0.00% (0 bytes) INFO: audiochannels 2.00
INFO: trackinfo:
Cache fill: 0.00% (0 bytes) INFO: length 65063000.00
Cache fill: 0.00% (0 bytes) INFO: timescale 25000.00
Cache fill: 0.00% (0 bytes) INFO: language eng
INFO: sampledescription:
Cache fill: 0.00% (0 bytes) INFO: sampletype avc1
Cache fill: 0.00% (0 bytes) INFO: length 124922880.00
Cache fill: 0.00% (0 bytes) INFO: timescale 48000.00
INFO: language eng
Cache fill: 0.00% (0 bytes) INFO: sampledescription:
INFO: sampletype mp4a
Cache fill: 0.78% (65536 bytes)
Caught signal: 13, cleaning up, just a second...
ERROR: WriteN, RTMP send error 32 (42 bytes)
ERROR: RTMP_ReadPacket, failed to read RTMP packet body. len: 65774
72.249 kB / 0.24 sec (0.0%)
Download may be incomplete (downloaded about 0.00%), try resuming
Cache fill: 0.88% (73728 bytes)
libavformat file format detected.
[flv @ 0xaf487e0]Estimating duration from bitrate, this may be inaccurate
[lavf] Video stream found, -vid 0
[lavf] Audio stream found, -aid 1
VIDEO: [H264] 1024x576 0bpp 25.000 fps 0.0 kbps ( 0.0 kbyte/s)
Clip info:
duration: 2603
moovPosition: 28
width: 1024
height: 576
videocodecid: avc1
audiocodecid: mp4a
avcprofile: 77
avclevel: 32
aacaot: 2
videoframerate: 25
audiosamplerate: 48000
audiochannels: 2
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
FAAD: compressed input bitrate missing, assuming 128kbit/s!
AUDIO: 48000 Hz, 2 ch, s16le, 128.0 kbit/8.33% (ratio: 16000->192000)
Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [pulse] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [xv] 1024x576 => 1024x576 Planar YV12
A: 0.2 V: 0.2 A-V: -0.012 ct: -0.008 0/ 0 ??% ??% ??,?% 0 0 0%
Exiting... (End of file)
EDIT: fel av mig, de använder både rtmp och rtmpe. Testade även rtmpe://fl11.c90909.cdn.qbrick.com/90909/_definst_/kluster/20100709/PG-1134212-010A-MERLIN2-01-mp4-d-v1.mp4 men fick samma resultat

några idéer?
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 00:46
av mattsl
rtmp/rtmpe bör inte spela någon roll -- låt bara protokollet stå kvar orört, så som det är angivet i länken från svt ("rtmp://" i det här fallet).
Fredrik Lindström's program funkar finfint för mig (förutom vissa problem med synkning av ljudspåret). Det ser ut som att du har missat att sätta citat-tecken kring url -- det leder till problem när bash ska tolka kommandoraden.
Gör alltså så här...
Kod: Markera allt
./svtplay-rtmpdump "rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20100710/PG-1119590-006A-SVENSKMENTALITE-02-mp4-d-v1.mp4"
...så ska det förhoppningvis funka bättre!
PS. Om du får problem med synkningen som jag så kan du fixa det manuellt genom att justera med +/- på tangentbordet (-100 ms funkade för mig.).
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 08:04
av m!rage
Nä... Jag har nog fel version av något program antar jag.
Kod: Markera allt
$ mplayer
MPlayer SVN-r31042-Ubuntu-RVM (C) 2000-2010 MPlayer Team
$ rtmpdump
RTMPDump v2.2d
vilka har du?
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 08:54
av mattsl
Jag har samma version av rtmpdump (2.2d) -- men mplayer skiljer sig från din:
Kod: Markera allt
$ mplayer
MPlayer SVN-r1.0~rc3+svn20090426-4.4.3 (C) 2000-2009 MPlayer Team
Lite märkligt, för så vitt jag vet har jag bara standardversionen som finns i Lucids repositorier. Kanske du har en annan utgåva av Ubuntu?
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 09:09
av dmz
Hade lite tråkigt på fikarasten... att manuellt behöva leta upp rätt url verkar jobbigt.
Kod: Markera allt
#!/usr/bin/perl
# svtplay.pl
# dependencies: rtmpdump,mplayer
use strict;
use LWP::Simple;
my %shows = (
vtd => {
name => 'Vem tror du att du är?',
url => 'http://svtplay.se/t/106474/vem_tror_du_att_du_ar_',
},
ibis => {
name => 'Ingen bor i skogen',
url => 'http://svtplay.se/t/132050/ingen_bor_i_skogen',
},
hsr => {
name => 'Hemliga svenska rum',
url => 'http://svtplay.se/t/102776/hemliga_svenska_rum',
},
merlin => {
name => 'Merlin',
url => 'http://svtplay.se/t/104065/merlin',
},
vml => {
name => 'Världens modernaste land',
url => 'http://svtplay.se/t/133773/varldens_modernaste_land',
},
hh => {
name => 'Hemma hos',
url => 'http://svtplay.se/t/134698/premiar__hemma_hos_caroline_af_ugglas',
},
et => {
name => 'Engelska trädgårdar',
url => 'http://svtplay.se/t/104829/engelska_tradgardar',
},
ub => {
name => 'Undercover boss',
url => 'http://svtplay.se/t/134508/seriestart__undercover_boss',
},
fotc => {
name => 'Flight of the Conchords',
url => 'http://svtplay.se/t/103576/flight_of_the_conchords',
},
philo => {
name => 'Philofix',
url => 'http://svtplay.se/t/102709/philofix',
},
aps => {
name => 'Allsång på skansen',
url => 'http://svtplay.se/t/102897/allsang_pa_skansen',
},
fangad => {
name => 'Fångad',
url => 'http://svtplay.se/t/134122/fangad',
},
it => {
name => 'In treatment',
url => 'http://svtplay.se/t/110255/in_treatment',
},
rapport => {
name => 'Rapport',
url => 'http://svtplay.se/t/103261/rapport',
},
);
my $show = shift;
if(!$show or !defined($shows{$show})) {
usage()
}
my $mp = 'mplayer -cache 400';
my $url = $shows{$show}{url};
my @content = split(/\n/,get("$url")) or die();
my $rtmp = undef;
for(@content) {
if($_ =~ s;.+(rtmp.+\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
}
sub usage {
print << "USAGE";
USAGE: $0 show
SHOWS:
USAGE
for my $shn(keys(%shows)) {
printf("\033[1m\033[33m%10s\033[0m : %s\n", $shn, $shows{$shn}{name});
}
exit(0);
}
system("rtmpdump -r $rtmp|$mp -");
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 09:33
av mattsl
snyggt! skriptet genererar dock länkar till den lågupplösta versionerna, men det borde ju gå att fixa...
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 10:50
av dmz
Aha. Var det därför det såg ut som skit... Hur/var hittar man högsta kvalitet?
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 11:00
av mattsl
Det som skiljer strömmarnas url åt är bokstaven mellan "mp4-" och "-v1.mp4". Kan vara antingen d,c,b eller a (tror jag); "d"=högst, "a"=lägst. Jfr nedan:
Kod: Markera allt
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20100710/PG-1131271-001A-BERGMANSHUSHALL-01-mp4-d-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20100710/PG-1131271-001A-BERGMANSHUSHALL-01-mp4-c-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20100710/PG-1131271-001A-BERGMANSHUSHALL-01-mp4-b-v1.mp4
(Utklippt härifrån:
http://svtplay.se/v/2053192/bergmans_hushallerska)
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 11:21
av dmz
Det blev lite bättre, tack. Jag tror att allting sänds i minst 'c-klass'; fungerar detta bättre?
Kod: Markera allt
#!/usr/bin/perl
# svtplay.pl
# dependencies: rtmpdump,mplayer
use strict;
use LWP::Simple;
my %shows = (
vtd => {
name => 'Vem tror du att du är?',
url => 'http://svtplay.se/t/106474/vem_tror_du_att_du_ar_',
},
ibis => {
name => 'Ingen bor i skogen',
url => 'http://svtplay.se/t/132050/ingen_bor_i_skogen',
},
hsr => {
name => 'Hemliga svenska rum',
url => 'http://svtplay.se/t/102776/hemliga_svenska_rum',
},
merlin => {
name => 'Merlin',
url => 'http://svtplay.se/t/104065/merlin',
},
vml => {
name => 'Världens modernaste land',
url => 'http://svtplay.se/t/133773/varldens_modernaste_land',
},
hh => {
name => 'Hemma hos',
url => 'http://svtplay.se/t/134698/premiar__hemma_hos_caroline_af_ugglas',
},
et => {
name => 'Engelska trädgårdar',
url => 'http://svtplay.se/t/104829/engelska_tradgardar',
},
ub => {
name => 'Undercover boss',
url => 'http://svtplay.se/t/134508/seriestart__undercover_boss',
},
fotc => {
name => 'Flight of the Conchords',
url => 'http://svtplay.se/t/103576/flight_of_the_conchords',
},
philo => {
name => 'Philofix',
url => 'http://svtplay.se/t/102709/philofix',
},
aps => {
name => 'Allsång på skansen',
url => 'http://svtplay.se/t/102897/allsang_pa_skansen',
},
fangad => {
name => 'Fångad',
url => 'http://svtplay.se/t/134122/fangad',
},
it => {
name => 'In treatment',
url => 'http://svtplay.se/t/110255/in_treatment',
},
rapport => {
name => 'Rapport',
url => 'http://svtplay.se/t/103261/rapport',
},
);
my $show = shift;
if(!$show or !defined($shows{$show})) {
usage()
}
my $mp = 'mplayer -cache 400';
my $url = $shows{$show}{url};
my @content = split(/\n/,get("$url")) or die();
my $rtmp = undef;
for(@content) {
if($_ =~ s;.+(rtmp.+mp4-d-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
elsif($_ =~ s;.+(rtmp.+mp4-c-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
}
sub usage {
print << "USAGE";
USAGE: $0 show
\033[1mSHOWS\033[0m:
USAGE
for my $shn(keys(%shows)) {
printf("\033[1m\033[33m%7s\033[0m %s\n", $shn, $shows{$shn}{name});
}
exit(0);
}
system("rtmpdump -r $rtmp|$mp -");
Nästa steg är väl kanske att få någon uppdaterad lista över vilka program SVT sänder som är återkommande; tips?
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 16:07
av m!rage
mattsl skrev:Jag har samma version av rtmpdump (2.2d) -- men mplayer skiljer sig från din:
Kod: Markera allt
$ mplayer
MPlayer SVN-r1.0~rc3+svn20090426-4.4.3 (C) 2000-2009 MPlayer Team
Lite märkligt, för så vitt jag vet har jag bara standardversionen som finns i Lucids repositorier. Kanske du har en annan utgåva av Ubuntu?
Jag har en nyare version av mplayer från något ppa, tror att det är
Får se om jag pallar nergradera till den i Ubuntus förråd och testa någon dag
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 13 jul 2010, 22:46
av mattsl
dmz skrev:Det blev lite bättre, tack. Jag tror att allting sänds i minst 'c-klass'; fungerar detta bättre?
Funkar strålande.
dmz skrev:Nästa steg är väl kanske att få någon uppdaterad lista över vilka program SVT sänder som är återkommande; tips?
Det finns rss-flöden, kanske skulle det gå att använda dem på nåt sätt?
http://svt.se/hjalp/play/rss-podd
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 14 jul 2010, 06:32
av dmz
Jag kanske är usel på att söka, men de enda rss-flöden jag kan hitta är
http://svt.se/svt/jsp/Crosslink.jsp?d=104149&a=1395781 , och inte heller de länkar till programmet i fråga. :/
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 14 jul 2010, 09:35
av mattsl
Jag tänkte på det här:
Kod: Markera allt
http://feeds.svtplay.se/v1/video/list/96238?expression=full&mode=plain
...men där finns bara länk till programmets "sajt" och alltså bara den första delen av rtmp-url.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 14 jul 2010, 11:38
av dmz
mattsl skrev:Jag tänkte på det här:
Kod: Markera allt
http://feeds.svtplay.se/v1/video/list/96238?expression=full&mode=plain
...men där finns bara länk till programmets "sajt" och alltså bara den första delen av rtmp-url.
Inga problem, det blir fint.
Nu har vi en uppdaterad och aktuell lista...
Kod: Markera allt
#!/usr/bin/perl
# svtplay.pl
# dependencies: rtmpdump,mplayer
use strict;
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
my $baserss =
'http://feeds.svtplay.se/v1/video/list/96238?expression=full&mode=plain';
my $foo = XMLin(get($baserss));
my %shows = ();
my $i = 0;
for(keys(%{$foo})) {
for($foo->{channel}{item}) {
for(@{$_}) {
#print Dumper $_;
$shows{$i++} = {
name => $_->{title},
uri => $_->{link},
pub => $_->{pubDate},
};
}
}
}
my $show = shift;
if(!$show || !defined($shows{$show})) {
usage()
}
my $mp = 'mplayer -cache 400';
my $url = $shows{$show}->{uri};
my @content = split(/\n/,get("$url")) or die();
my $rtmp = undef;
for(@content) {
if($_ =~ s;.+(rtmp.+mp4-d-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
elsif($_ =~ s;.+(rtmp.+mp4-c-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
}
print ">>>> $rtmp <<<<\n\n";
sub usage {
print << "USAGE";
USAGE: $0 show
\033[1mSHOWS\033[0m:
USAGE
for my $i(sort{$a <=> $b}(keys(%shows))) {
printf("[\033[1m%02d\033[0m] \033[30;1m%s\033[0m \033[33m%s\033[0m \n",$i,
$shows{$i}{pub}, $shows{$i}{name});
}
exit(0);
}
system("rtmpdump -r $rtmp|$mp -");
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 14 jul 2010, 14:03
av mattsl
Snyggt! Enormt imponerande. Ett perl-beroende kom dock till: "XML::Simple". Enkelt löst med detta kommando:
Vid ett senare tillfälle ska jag posta instruktioner för hur man associerar rtmp-länkar så att strömmen öppnas direkt från webbläsaren via det ursprungliga bash-skriptet. För den som föredrar att läsaren före terminalen.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Postat: 14 jul 2010, 17:14
av dmz
SVT kanske inte är så tokigt ändå - Pingu!