Program za prenos posnetkov arhiva Radiotelevizije Slovenije.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Anton Luka Šijanec a919e15e97 je vdor fix, izdaja ni potrebnma 9 months ago
.gitignore 0.0.5 gitignore 10 months ago
Makefile 0.1.1-6: lahko no. 10 months ago
README.md rtv4d-dl 0.1.2 9 months ago
rtv4d-dl.c je vdor fix, izdaja ni potrebnma 9 months ago
tcp.c rtv4d-dl 0.1.2 9 months ago

README.md

rtv4d-dl: program za prenašanje videoposnetkov iz arhiva TV SLO

namestitev

debian/ubuntu

uporabniki amd64 debian/ubuntu distribucij lahko uporabljajo preprosto namestitev prek upravitelja paketov apt.

wget https://sijanec.eu/pgp-key.txt -qO- | sudo apt-key add -
sudo echo deb http://prog.sijanec.eu/ $(lsb_release -sc) main \>\> /etc/apt/sources.list
sudo apt update
sudo apt install rtv4d-dl

druge platforme

za namestitev na druge POSIX platforme si oglejte //git.sijanec.eu/sijanec/rtv4d-dl/releases. tam so že prevedene binarne datoteke za amd64 arhitekturo.

legalne stvari

z uporabo programa se strinjate z naslednjimi stavki:

  • avtorja ne boste tožili in se strinjate, da je program povsem legalen.
  • program uporabljate na lastno odgovornost.
  • če ni kje drugje avtor napisal drugače ali če to ni zakonsko drugače:
    • ne smete distribuirati programa in izdelovali kopij.
      • razlog: da lahko RTV v teoriji zahteva izbris programa iz Interneta
    • smete ga uporabljati samo za zasebno nekomercialno uporabo.
    • ne smete spreminjate izvorne kode
      • razlog: da lahko RTV kadarkoli blokira program prek user-agent niza.

funkcije

  • prenašanje videoposnetkov iz arhiva kot odklenjene videodatoteke
  • z različico 0.0.1 tudi prenašanje avdioposnetkov!
  • z različico 0.0.3 tudi prenašanje televizijskih prenosov v živo
  • z različico 0.0.4 tudi prenašanje v živo iz tujine
  • z različico 0.1.0 tudi namestitveni paket za debian/ubuntu

možnosti uporabe programa

  • prenos oddaje: rtv4d-dl oddaja <URL/ID oddaje> [izhodna datoteka]
    • primer: rtv4d-dl oddaja 4d.rtvslo.si/arhiv/vreme/89614963
    • primer: rtv4d-dl oddaja 89614963 89614963.mp4
  • prenos metapodatkov oddaje: rtv4d-dl meta-oddaja <URL> [datoteka]
    • primer: rtv4d-dl meta-oddaja 89614963 89614963.txt
    • opomba: nekateri metapodatki veljajo omejeno časa (video URL)
  • prenos sličice oddaje: rtv4d-dl slicica-oddaja <URL> [datoteka]
    • primer: rtv4d-dl slicica-oddaja 89614963 89614963.jpg
  • prenos zadnjih dveh ur prenosa v živo: rtv4d-dl živo [2] [3] [4] [5]
    • primer: rtv4d-dl živo slo1 slo1 9999999 9999999 (prenese vse)
    • argument 2 je program, 3 je izhodni direktorij, 4 je število sekund v preteklost, 5 je število sekund v prihodnost
  • prenos podnapisov oddaje: rtv4d-dl podnapisi <url> [datoteka]
    • primer: rtv4d-dl podnapisi 15486024 15486024.vtt

dodatne informacije:

  • pisanje v STDOUT: kot pot datoteke napišite /dev/stdout, pri oknih pa con
  • program se poveže na *.rtvslo.si, spremenite izvorno kodo za drugo infrastrukturo
  • živo: za možne programe in razlago dolžine glej dodatno o prenosu v živo
  • če RTV strežnik ne ponuja enotne .mp4 datoteke za oddajo ampak zgolj HLS, se bo oddaja shranila kot kosi prenosa v živo (datoteka.mp4 => datoteka/....m3u8)
    • take datoteke lahko kasneje združite z ukazom cat datoteka/*.ts | ffmpeg -i - -c:v copy -c:a copy datoteka.mp4

trenutna izdaja programa:

  • program je bil nazadnje ročno testiran 29. januarja 2021 in takrat je DELOVAL.
  • različica: 0.1.2

dnevnik sprememb:

  • 0.0.2 - 13. december 2020: sedaj pravilno naloži samo največjo kvaliteto, pred tem se naloži naključna kvaliteta.
  • 0.0.3 - 24. december 2020: dodano prenašanje VTT podnapisov in prenosov v živo
  • 0.0.4 - 30. december 2020: dodani alternativni strežniki za prenos v živo iz tujine
  • 0.0.5 - 5. januar 2021: dodana podoknica z uporabo cygwin in ignoriranje binarnih prevedenih datotek iz git repozitorija - so pod izdajami.
  • 0.0.6 - 10. januar 2021: če RTV narobe pošlje gzipano vsebino, se ji program izogne, ne bom več gradil okenskih datotek
  • 0.1.0 - 11. januar 2021: paket za debian/ubuntu
  • 0.1.1 - 11. januar 2021: standardizacija Makefile
  • 0.1.2 - 29. januar 2021: dodano nalaganje geoblokiranih datotek prek HLS

o

  • program je spisan 100% v C programskem jeziku
  • ne potrebuje nobenih knjižnic, razen seveda standardnih POSIX.
  • navodila za grajenje (samo pod GNU Compiler Collection): make

formatiranje kode

  • K&R komentarji, GNUC
  • levi zaviti oklepaj na isti vrstici kot funkcija, desni na svoji vrstici
  • vrstica max. 80 znakov, upoštevajoč, da tabulator šteje za dva
  • presledek za imenom funkcije in argumenti, vendar le ob deklaraciji
  • enojni presledki za spacing so lahko izpuščeni, da nista potrebni dve vrstici
  • tabulator za indentacijo, tabulator naj je izrisan kot dva presledka
  • IF z enim stavkom naj nima zavitih oklepajev, razen, če je to nujno (f f e e)
  • preprocesorske funkcije naj delujejo kot en blok kode, pazi pri aritmetiki ()

še za narediti

  • dodati podporo za varno povezavo, sedaj gre vsa komunikacija z RTV4D kot HTTP.
    • nizka prioriteta, bolje obdržati formo brez knjižnjic
  • narediti mehanizem za avtomatsko posodobitev binarne datoteke
    • namesto HTTP se bo uporabljajo preprosto podpisovanje, BREZ KNJIŽNIC
  • ugotoviti mehanizem rotacije/ponovne uporabe identifikatorjev kosov v živo, glej dodatno o prenosu v živo.

predvajanje v živo

  • ker predvajanje v živo na RTVSLO trenutno potrebuje Javascript, bi bilo uporabno narediti minimalističen HTTP/RTP strežnik, ki bi delal zahteve na RTV in kot izhod uporabniku ponudil pretok.
    • opomba: seveda predvajanje v živo deluje na VLC predvajalniku v formatu m3u8
  • RTV za avdio/radio v živo že ponuja možnost poslušanja brez javascripta, imajo namreč icecast2 strežnik na mp3.rtvslo.si, tako da tega po mojem ni potrebno izdelati še v rtv4d-dl.
  • RTV4D arhiv ponuja samo videokvalitete do 720p (1280x720 pikslov). Pri prenosu v živo pa je maksimalna velikost 1080p (1920x1080 pisklov). Če torej hočemo dobiti kvalitetno vsebino, jo moramo posneti, preden gre v arhiv.

dodatno o prenosu v živo

  • ne vemo, koliko sekund posnetkov hrani strežnik, zato predvidevamo, da je vsak kos dolg toliko, kot tisti v kazalu, če pa imajo tisti v kazalu različne dolžine, pa se izbere najkrajša in se zaokroži na celo sekundo na dol.
  • za avtomatsko pridobitev vseh videoprogramov, ki so na voljo kot prenosi v živo, bi bilo potrebno narediti podporo za HTTPS, zato je treba poznati kratice programov na pamet: slo1, slo2, slo3, kp1, mb1, mmctv.
  • če je število sekund v preteklost večje od vsebine, ki jo ima strežnik v kazalu, bo shranjena vsa vsebina, ki je na strežniku za nazaj (~10 ur).
  • če je število sekund v prihodnost večje od 0, bo program čakal, da izide nov delček pretoka, in ga naložil sproti, vse do izpolnjene kvote.
  • program najprej naloži v preteklost, nato v prihodnost, med nalaganjem v prihodnost ga sicer lahko prekinete, vendar to naredite med tem, ko poteka čakanje na nov segment, ne med nalaganjem segmenta ali tik po nalaganju.
  • prenos v živo se shrani kot m3u8 playlist in mpeg ts datoteke. te datoteke se lahko normalno združi v eno z ukazom cat *.ts > zdruzene.ts in se odpre kar zdruzene.ts v VLC predvajalniku. VLC podpira tudi direktno odprtje playlist.m3u8 datoteke in branje po kosih.
  • če program ni bil prekinjen, bo po končanem prenosu v stdout napisal metapodatke pretoka v živo.
  • težava: vsake toliko časa bo strežnik številko kosa rotiral nazaj. to prepreči snemanje neskončno v prihodnost in program bo ostal v krogu.
  • za omogočanje snemanja iz tujine se gostiteljska imena pretočnih strežnikov zamenjajo s slovenskimi. če slovenski strežniki niso več aktualni, program ne bo delal. v tem primeru me kontaktirajte in med prevajanjem (angl. compilation) nastavite zastavico RTV_NASTAVITEV_BREZ_LOKACIJSKIH_SPREMEMB.