Ladda hem från SVTPlay

OBS!

SVT lanserade en ny sajt i juni 2012. Guiden går inte längre att använda.

Visste du att du med SVTPlay kan ladda hem program och spara dem på hårddisken? Jodå! Samma teknik går att använda för att se på programmen utan att ha installerat Flash, vilket jag själv inte har. Flash går nämligen inte att köra på ett 64-bitars OpenBSD.

För att kunna följa guiden här behöver du ett program som heter rtmpdump. Det finns inte bara till BSD- och Linux-system, utan även till Windows (och då ska du tanka hem zip-filen med en »Windows build«). Tyvärr kan jag inte bistå med några Windows-specifika instruktioner, men om någon kan bidra med detta vore jag glad.

Du behöver givetvis också en mediaspelare, och den jag använder i guiden är MPlayer.

Då sätter vi igång! Se till att du har programmen installerade och öppna ett terminalfönster.

Först och främst behöver du en länk till rtmp- eller rtmpe-strömmen för programmet. Detta gör du genom att högerklicka på länken för extern Flash-spelare och kopiera adressen:

Flash (rtmp)

Sedan kör du rtmpdump på denna, och klistrar in adressen istället för ADRESS nedan.

$ rtmpdump -o filnamn.flv -r "ADRESS"

Citattecknena bör vara med. För tillfället behövs de inte på SVTPlay-adresser, men det kan komma att förändras.

Nu är nedladdningen igång! Ibland når den inte ända fram till 100% utan stannar på 99,9%. Det gör inget.

Om den däremot stannar tidigare så kan du återuppta nedladdningen som följer:

$ rtmpdump -o filnamn.flv -r "ADRESS" --resume

När du laddat hem programmet kan det hända att det har »inbyggda« svarta ramar. Om du kör programmet i fullskärm blir resultatet irriterande litet. För att verkligen få fullskärm kan du ta bort ramarna genom följande procedur:

$ mplayer -vf cropdetect filnamn.flv
(Massor av text när MPlayer startar och analyserar filen.)
.
.
.
[CROP] Crop area: X: 639..0  Y: 359..0  (-vf crop=-624:-352:634:358).%
[CROP] Crop area: X: 639..0  Y: 359..0  (-vf crop=-624:-352:634:358).%
[CROP] Crop area: X: 639..0  Y: 359..0  (-vf crop=-624:-352:634:358).%
[CROP] Crop area: X: 639..0  Y: 359..0  (-vf crop=-624:-352:634:358).%
[CROP] Crop area: X: 639..0  Y: 359..0  (-vf crop=-624:-352:634:358).%
[CROP] Crop area: X: 639..0  Y: 359..0  (-vf crop=-624:-352:634:358).%

Nu har MPlayer automatiskt känt av vilket kommando som tar bort de svarta ramarna. Avbryt uppspelningen, och spela upp filmen ånyo med den parameter som MPlayer gav dig:

$ mplayer -vf crop=-624:-352:634:358 filnamn.flv

För att få fullskärm trycker du givetvis på f på tangentbordet.

Uppdatering 17 oktober: Martin Adlerborn har satt ihop en enkel och illustrerad instruktion, som visar hur man går till väga för att ladda hem i Windows. Så om du kör Windows, klicka här för att ladda hem PDF-dokumentet och sätt fart. Och tack till Martin. :-)

Kommentarer till inlägget

  1. Alex, 20 april 2010, 13.28Gravatar

    Tack ska du ha!

    Jag kan tillägga att I fall med Windows (XP SP3) behöver man också libeay32.dll, msvcr70.dll samt ssleay32.dll. Filerna finns i arkivet openssl-<version number="">-mod-<version number="">.zip som man kan nedladda från t.ex. http://www.proxomitron.info/files/index.html

  2. Jesper, 20 april 2010, 14.00Gravatar

    Tack Alex!

    Jag vet inte riktigt vad som hände med arkivnamnet du gav, men det kan vara så att du stött på en bugg i min bloggmotor. Jag gissar att du syftar på openssl-0.9.8-mod-rev1.zip?

    Har faktiskt själv något att tillägga till inlägget. Sedan jag skrev det har SVTPlay börjat bistå med direktlänkar även till "Klipp". Dessa är dock inte RTMP-länkar, utan direktlänkar till .flv-filen! Därför kan man ladda hem dem direkt i webbläsaren, och sedan spela upp dem i mediaspelaren. rtmpdump behövs alltså inte. :)

  3. Jesper, 27 augusti 2010, 12.41Gravatar

    Ytterligare tillägg: Ibland fungerar det inte med rtmpdump. Då kan man försöka med flvstreamer, som accepterar samma syntax.

    Ibland fungerar å andra sidan inte flvstreamer. Då brukar rtmpdump fungera. En heltäckande lösning! ,)

  4. Håkan, 29 oktober 2010, 17.03Gravatar

    Är det någon som vet hur man laddar hem från tv6play. RTMPdump stannar efter ett antal procent (antagligen när det är reklampaus) och jag lyckas inte få den att "resuma". I något annat forum så beskrev användarna att man behövde vissa parametrar korrekt, jag antar att det är samma problem? mtv server will stop after 9% if you do not have the correct params
    (swfhash, swfsize, swfurl etc) hur får man fram dessa och var ska dom stoppas in i kommandoraden. Här är länken för senate vampire diaries rtmp://cp90686.edgefcs.net/ondemand/flash/sweden/tv3/Vampire_Diaries/Season1/vampire_diaries_120

  5. Jesper, 29 oktober 2010, 17.39Gravatar

    Hej Håkan! Jag lyckades ganska snabbt. :-)

    RTMPDump säger, när man försöker tanka hem den där filen, så här:

    ERROR: HandleCtrl: Ignoring SWFVerification request, use --swfVfy!

    Det du behöver är alltså adressen till SWF-spelaren, och den ska användas --swfVfy URL. Får RTMPDump en sådan, så räknar den själv ut värdena du nämner. Adressen finns i källkoden för sidan för avsnittet:

    http://flvplayer.viastream.viasat.tv/flvplayer/play/swf/player.swf?rnd=1288366118

    Tyvärr får man en permanent redirect på den adressen, vilket förvirrar RTMPDump. Därför är curl -I URL av nöden.

    Med det sagt, så fungerar det följande:

    rtmpdump --swfVfy $(curl -I "$SWF_URL"|grep Location:|sed 's/ *Location: //') -o output.flv -r "$RTMP_URL"

    Skulle SWF-adressen inte ge en redirect, kan du skrota hela $(...)-partiet och använda adressen direkt från källkoden istället.

    Det är förstås litet obekvämt att behöva rota fram både adressen till RTMP-strömmen och till själva SWF-objektet, men det fungerar åtminstone. :-)

    Tillagt: Om man inte har utmärkta cURL, men däremot sturiga wget, så kan man ersätta $(...)-stumpen med den här gnuande härvan:

    $(wget -qSO/dev/null $SWF_URL 2>&1 /dev/null|grep Location:|sed 's/ *Location: //')

    Det fungerar i åtminstone ksh. Vet du inte vilket skal du kör så har du antagligen Bash. Där tycks det också fungera.

  6. Jesper, 29 oktober 2010, 17.56Gravatar

    Och om man saknar vettigt skal eller tillgång till cURL (eller wget...), med andra ord om man kör Windows, så kan man använda nätet. Här finns en av flera tjänster där man kan mata in den falska SWF-adressen (från webbsidans källod) och få fram den verkliga.

    När man har den verkliga istället för den falska, så är det givetvis så här RTMPDump ska köras:

    rtmpdump --swfVfy "$VERKLIG_SWF_URL" -o output.flv -r "$RTMP_URL"

    Uppdaterat: Påminns nedan av Håkan att cmd.exe inte fixar långa argument. Så här ska det vara:

    rtmpdump.exe -W "$VERKLIG_SWF_URL" -o output.flv -r "$RTMP_URL"
  7. Håkan, 29 oktober 2010, 23.15Gravatar

    Tack! jag lyckades trots mina minimala kunskaper få ned filen på datorn tack vare att jag använde din sista rad i kommandot till rtmpdump, men det blev då i windows -W"verklig URL" hämtad från sidan "HÄR". Kul att lyckas, nu ska jag förjupa mig ;)

  8. Håkan, 29 oktober 2010, 23.24Gravatar

    Jag har förstått att man ställer in servern som äger filen med en timeout efter ett antal sekunders nedladdning om man inte har gjort handskakningen SVWvfy "i rtmpdump", just för att oönskad nedladdning inte ska kunna ske, right?

  9. Jesper, 30 oktober 2010, 00.02Gravatar

    Roligt att det fungerade! Jag vet aldrig riktigt vad jag gör när jag ger råd om Windows, eftersom jag inte använt det på sex år. Och givetvis blev det -W istället för -swfVfy, DOS-skalen fattar ju inte långa args. Det hade jag kunnat minnas, men lät bli. Jag är lurig och ändrar i min tidigare kommentar. :-)

    Vad syftet med hash och size på SWF-objektet egentligen är har jag ingen aning om – ärligt talat följer jag bara instruktionerna i 'rtmpdump --help' – men visst skulle det kunna handla om något slags försök till säkerhet. I så fall är jag negativt överraskad. Antalet bytes och sha256 på SWF-filen är ju inte direkt några hemligheter:

    Script started on Fri Oct 29 23:43:09 2010 kristina$ URL=http://flvplayer.viastream.viasat.tv/flvplayer/play/swf/player.swf?rnd=1288366118 kristina$ curl -sL $URL | wc -c   392405 kristina$ curl -sL $URL | sha256 e9788b070960a78d2ef6bb30936fbaef9a4949fd511e43920a7f19a1c7e48f4a kristina$ ^D Script done on Fri Oct 29 23:43:31 2010

    There you have it. Det tog längre tid att skriva den här kommentaren.

  10. Andreas, 6 november 2010, 23.22Gravatar

    Tjena Tjena.
    skulle vilja veta om detta är fortfarande en fungerande metod, eftersom att dom på SVTPlay har gjort om lite i deras spelare, man kan inte välja vilket plugin du vill använda längre, så du blir tvingad att använda flash ( ='[ )

    thx

  11. Jesper, 6 november 2010, 23.41Gravatar

    Hej Andreas! Jag vet faktiskt inte. Har råkat bli utan både bredband och bärbar dator efter en flytt (och är ganska glad att jag hann skaffa en smartphone innan flytten), så jag har tyvärr ingen möjlighet att kolla hur det fungerar nu.

    Kanske vet någon annan dom läser om det funkar, och hur man ska gå tillväga om det är annorlunda än vad som beskrivits här.

    Annars kan jag lova att jag återkommer i frågan framåt december, för då kommer jag vilja använda SVTPlay igen. Måste man göra på något nytt sätt då, så tänker jag reda ut hur det ska gå till.

  12. Andreas, 7 november 2010, 03.42Gravatar

    alright, har du någon alternativt sätt man göra det på? typ, record på skärmen med en screen recorder elr något.. filmen visas bara tills 6december på svtplay :(

  13. Andreas, 7 november 2010, 03.56Gravatar

    haha, vart är ta-bort knappen för kommentarer? jag hitta länkarna för extern spelare i "hjälp" knappen =O

    thanks for the guide i guess, ska testa nu'

  14. Segt nätverk, 26 november 2010, 16.47Gravatar

    Sitter utomlands på slött hotell-nätverk, svtplay hackar hela tiden. Försökt ta ner rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20101119/PG-1135447-003A-GROTESCOII-01-mp4-e-v1.mp4 med hjälp av rtmpdump men får det inte riktigt att funka... Har jag fel .swf? (enda jag hittat är http://svtplay.se/flash/svtplayer-2010.18.swf) Grymt tacksam för all hjälp!

  15. Jesper, 26 november 2010, 17.24Gravatar

    Vad jag vet ska du inte ha någon sådan parameter alls på SVTPlay. Följ guiden i inlägget, inte instruktionerna för TV4Play som finns bland kommentarerna.

  16. UT_lol, 6 januari 2011, 22.53Gravatar

    Den här gjorde jag : [länk borttagen]

    Det bygger på rtmpdump. Tyvärr fungerar den endast på Windows. Håller på med en linux o Mac version också.

  17. Andreas, 23 januari 2011, 19.16Gravatar

    @UT_lol: Exakt hur ska man göra i ditt program? Jag har fyllt i olika rtmp-adresser och html-adresser, men det fungerar inte.

    Behöver jag något mer installerat utöver ditt program?

  18. Jesper, 23 januari 2011, 19.21Gravatar

    Var snälla och diskutera det där programmet i något annat forum än min blogg.

    Jag har för övrigt inte provat programmet eller kört någon viruskoll på det. Ett bra exempel på säkerhetstänk är att låta bli att ladda hem exe-filer på upload-sajter som anonyma människor länkar till i kommentarfält på bloggar. Jag tar bort länken ur kommentaren nu.

  19. Jesper, 3 februari 2011, 23.17Gravatar

    Ny guide tillgänglig. Den här guiden är för gammal och fungerar dåligt. Här kan du läsa årets upplaga. Kommentarfältet för det här inlägget stängs nu.

Detta inlägg får inte kommenteras