From 3713a80a0f7433255867a08b04401cbdee988a7a Mon Sep 17 00:00:00 2001 From: sijanec Date: Sun, 27 Dec 2020 23:27:52 +0100 Subject: naredil download v preteklost --- README.md | 54 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 24 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 5595ff3..f7e9f02 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,12 @@ z uporabo programa se strinjate z naslednjimi stavki: - opomba: nekateri metapodatki veljajo omejeno časa (video URL) * prenos sličice oddaje: `rtv4d-dl slicica-oddaja [datoteka]` - primer: `rtv4d-dl slicica-oddaja 89614963 89614963.jpg` -* prenos zadnjih dveh ur prenosa v živo: `rtv4d-dl zivo [dolž.] [dato.]` - - primer: `rtv4d-dl zivo tv.slo1 9999999 tv.slo1.ts` (prenese vse) +* prenos zadnjih dveh ur prenosa v živo: `rtv4d-dl zivo [2] [3] [4] [5]` + - primer: `rtv4d-dl zivo slo1 slo1 9999999 9999999` (prenese vse) + - arg. 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 [datoteka]` + - primer: `rtv4d-dl podnapisi 15486024 15486024.vtt` # dodatne informacije: * pisanje v STDOUT: kot pot datoteke napišite `/dev/stdout` @@ -41,6 +45,7 @@ z uporabo programa se strinjate z naslednjimi stavki: ## 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 # o * program je spisan 100% v C programskem jeziku @@ -54,8 +59,7 @@ z uporabo programa se strinjate z naslednjimi stavki: naj mi pošlje `Makefile` ## formatiranje kode -* K&R komentarji -* GNUC +* 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 @@ -74,30 +78,32 @@ z uporabo programa se strinjate z naslednjimi stavki: * 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 + + primer: [https://ž.ga/tvslo1](https://ž.ga/tvslo1) v VLC network stream * RTV za avdio/radio v živo že ponuja možnost poslušanja brez javascripta, imajo namreč icecast2 strežnik na [mp3.rtvslo.si](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. + 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 -* prenos v živo ima zblojene timestampe. vsaka TS datoteka je ali 4 sekunde ali - 5 sekund. sicer bi bilo vse v redu, če bi chunklist datoteka vsebovala več - kot dve uri posnetkov. Kljub temu, da streaming strežnik takoj ne zbriše - datotek in da imajo datoteke imena po vrsti, je nemogoče predvideti, katera - datoteka je potrebna ob določenem času. +* 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 so na voljo samo - naslednji programi: `tv.slo1`, tv.slo2`, `tv.slo3`, `tv.kp1`, `tv.mb1`, - `tv.mmctv`. programe lahko dodajate samo s spremembo izvorne kode. -* argument dolžina je število sekund od trenutnega časa do največjega zamika. - nastavitev 4 bo torej prenesla najmanj zadnje štiri sekunde. Ker TS datoteke - nimajo enake dolžine, bo pač preneseno toliko podatkov, da bo shranjeno enako - ali več sekund, kot je bilo navedenih. Če je specificiranih več kot za dve - uri sekund, oziroma več, kolikor jih ima chunklist z dolžinami, bo program - predvidel, da je vsaka datoteka dolga štiri sekunde. Ko na CDN strežniku ni - toliko sekund, kot jih uporabnik želi, bo to napisano kot OPOZORILO, naložilo - pa se bo vse, kar je na voljo. Brez argumenta dolžine se torej naloži vse, kar - CDN strežnik trenutno ima, recimo 10 ur v najvišji resoluciji 1080p. - - za bolj natančno štetje dolžin, ko se chunklist tabela konča, bi bilo - potrebno najti ali narediti sistem za pridobivanje dolžin iz TS datotek. + ž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. -- cgit v1.2.3