Kirjoittaja Aihe: Viivästetty audio stream -onko mahdollista?  (Luettu 3039 kertaa)

odysseus

  • Vieras
Viivästetty audio stream -onko mahdollista?
« : 16.03.12 - klo:16.48 »
No niin, ongelma on seuraava:

Meillä on nettiradio joka pelaa loistavasti Icecast2:n "alla". Nyt kuitenkin pitäisi saada sama live-lähetys uusinnaksi esimerkiksi tunnin kuluttua (tai kahden tunnin) toiseen streamiin (samalle palvelimelle).

Vähän samaan tapaan kuin noilla tv-lautaskanavilla on ohjelmissa kanava+1, niin se näyttää samaa ohjelmaa, mutta tunnin myöhempään, jotta kiireisetkin ehtii katsomaan...

Itse ohjelma lähetetään käyttämällä äänipöydän takana linuxia, jossa on BUTT streameri, ja sen vastaanottaa siis toinen linukka Icecast2-palvelin "toisella puolen maailmankaikkautta", jossa kanavaa voi kuunnella.

Varmaan jotenkin tuon siis saisi palvelimella ohjattua johonkin "nimettyyn putkeen" ja sinne jotain viivettä ja siitä sitten Icecastiin toiseen URL.iin kuunneltavaksi ???

Siis tarve on yksinkertaisetettuna:

1) BUTT stream Icecastiin sekä jotenkin "talteen" tunniksi tai kahdeksi "odottamaan"
2) viivästetty stream toiseen URL:iin Icecastissa, jotta lähetystä voi kuunnella netistä viiveellä(kin) normistreamin lisäksi

Onko kellään hajua miten tuo mahdollisesti onnistuisi?

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #1 : 16.03.12 - klo:17.18 »
Nimettyyn putkeen taitaa mahtua kerralla vain 4kilotavua tai 64kilotavua, joten sinne ei kovin montaa sekuntia audiota tallenneta odottamaan uudelleen lähetystä.

Olisiko mahdollista tallentaa alkuperäistä live-lähetystä palvelimen kovalevylle vaikka .wav tiedostoon, ja sitten kun tunti on kulunut niin alkaa toistamaan tätä tiedostoa toiseen striimiin, siis samalla kun se live-lähetys edelleen nauhoittaa tiedoston loppuun lisää tavaraa?

Tiedostoa kyllä pitäisi pystyä lukemaan alusta samalla kun toinen prosessi lisää loppuun koko ajan uutta tavaraa, mutta esim. se kannattaa selvittää että mahtuuko koko lähetys palvelimen kovalevylle, ym.

odysseus

  • Vieras
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #2 : 17.03.12 - klo:11.22 »
Tuota keinoa minäkin mietin. Icecasthan lähettää (tässä tapauksessa) jo mp3 streamia nettiin, joten sen varmasti saisi talteen, mutta mitenkäs estän, ettei se file siellä kasva ja kasva...

Sitä pitäisi siis tallentaa 2 tuntia ja sitten alkaa lähettämään ja samalla kun se tallentaa uutta, niin pitäisi poistaa vanhaa... ;-)

Jos siis kuuntelisi tuota alkuperäistä streamia ja bufferoisi jotenkin sen johonkin ohjelmaan, joka toistaa sitä. Mihin vain saa 2h bufferia? Ja mitenkäs se bufferi toimii? -eikös esimerkiksi mplayer silti ala soittamaan sitä reaaliaikaisena ja puskuri on vain se hätävara? Pitääpä kokeilla heti kun on aikaa...


ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #3 : 17.03.12 - klo:12.27 »
Tuo menettely on nimeltään "FIFO" eli "First In, First Out".   Lasketaan hieman mitä tuosta tulee datan määräksi vaikka nopeudella 256 kb/s:

256kb/s = 32 kB/s  eli  (3600 * 32) kB/h = 115200 kB/h = 115,2 MB/h

Tarvitset siis tuon perusteella tilaa noin 230 M sille parin tunnin puskurille.   Kyllä tuota muistissakin voisi pyörittää.  Joku C++ mies kirjoittelee tuon käden käänteessä ellei tuota ole jo valmiina jossain. 



Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #4 : 17.03.12 - klo:15.53 »
Ongelmaksi tosiaan muodostuu se että tiedoston alkupäästä ei voi poistaa tavaraa, eli se kasvaa loputtomasti jos live-lähetys jatkuu loputtomasti.

Jos olisi sellainen ohjelma joka osaisi nauhoittaa tuota striimiä useampaan tiedostoon, siten että kun yksi tiedosto kasvaa vaikka 50 megan kokoiseksi niin se jatkaa nauhoittamista uuteen tiedostoon, niin sittenhän niitä vanhempia tiedostoja voisi aina poistella. Sitten vain tarvittaisiin joku skripti joka lisää uuden tiedoston soitto-ohjelman soittojonoon aina kun tuo nauhoitusohjelma aloittaa uuden tiedoston nauhoittamisen. Toinen skripti voisi sitten poistella noita vanhempia tiedostoja levyltä.

Tulee mieleen muutama ongelmakohta, mutta jos nämä ratkaisee niin pitäisi toimia:
- löytyykö tuollaista ohjelmaa joka osaa pätkiä nauhoituksen eri tiedostoihin, ja vielä siten että varsinaiseen ohjelmavirtaan ei tule mitään häiritseviä pätkimisiä?
- löytyykö soitto-ohjelma jonka soittojonoon voi lennosta lisätä tiedostoja?
- pystyykö soitto-ohjelma soittamaan eri tiedostoja saumattomasti yhteen, ettei tule edellä mainittuja pätkimisiä ohjelmavirtaan?

Tietenkin jos löytyy joku ohjelma johon voi säätää 2 tunnin puskuroinnin, niin se saattaisi toimia ihan sellaisenaan.

Asmo Koskinen

  • Käyttäjä
  • Viestejä: 4443
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #5 : 17.03.12 - klo:17.20 »
Tietenkin jos löytyy joku ohjelma johon voi säätää 2 tunnin puskuroinnin, niin se saattaisi toimia ihan sellaisenaan.

Streamripper?

http://streamripper.sourceforge.net/

Googlettamalla:

http://stackoverflow.com/questions/338516/delay-a-shoutcast-stream-by-12-hours-linux-bash

Ystävällisin terveisin Asmo Koskinen.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #6 : 17.03.12 - klo:17.24 »
Asmo löysi saman linkin samaan aikaan :)    Tuosta Python toteutuksesta voisi muunnella sopivan.
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #7 : 17.03.12 - klo:21.07 »
Tuo streamripper ja myös Stackoverflow:sta löytyvä Python skripti näyttäisivät toteuttavan tuon nauhoituspuolen, eli ne osaavat nauhoittaa ja pilkkoa striimin erillisiin pieniin tiedostoihin. Ainoa mikä sitten jää puuttumaan on jonkinlainen soitin joka osaisi soittaa nuo tiedostot, ja jonka soittojonoon voisi sitten lisätä uusia tiedostoja lennosta.

Streamripper näköjään näyttäisi vaativan että striimin metatiedoissa mainitaan milloin kappale vaihtuu, se ei muuten osaa pilkkoa striimiä eri tiedostoihin, eli jos live-lähetyksen metatiedoissa ei ole mitään kappaleenvaihtoja niin tämä ei välttämättä toimi. Tuo Python skripti sen sijaan näyttäisi pilkkovan striimin tasakokoisiin tiedostoihin, eli siinä ei ole tällaista ongelmaa.

odysseus

  • Vieras
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #8 : 18.03.12 - klo:13.58 »
Loistovinkkejä... ·..ja hmm, minähän olen C (C++)-mies, joten fifo kyllä onnaa..

Mutta jo nuo kalikat on valmiina, niin alan kokeilemaan tuolta pohjalta.

Ehkä voisi virittää jonkun cron hommelin siihen, että vaikka tunnin välein lisätään uusi file soittolistalle. Samalla se cronjobi voisi sitten poistaa vanhimman veks kovalta. Tilaa on puoli teraa ja palvelin on "oma", eli dedikoitu, joten sinne voi väsätä mitä vaan eikä haittaa vaikka noita datafileja on siellä useampia, kunhan vain levy ei kokonaan täyty.

Kunhan aika antaa myöden, niin palaan asiaan ja jos keksin jotain mullistava, niin laitan konffauksen sitten jakoon tänne. Hommassa menee taatusti muutama viikko, kun olen juuri nyt kireinen toisessa isossa projektissa.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Viivästetty audio stream -onko mahdollista?
« Vastaus #9 : 18.03.12 - klo:19.29 »
Lainaus
Loistovinkkejä... ·..ja hmm, minähän olen C (C++)-mies, joten fifo kyllä onnaa..
Jos teet muistissa tuon niin tulisi mieleen reilun kokoinen rengaspuskuri, säädät lukupointterin halutun määrän kirjoituspoinnterin perään eli viive on portaattomasti säädettävissä.  Saisit tuosta kaikulaitteenkin kun määrittäisit useamman lukupointterin ja lyhyen viiveen.  :)
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.