reminett Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 (endret) Godt nyttår! Her kommer en skikkelig nøtt... Vi har en lydkilde som spilles inn kontinuerlig til et valgfritt lydformat på harddisken (det er en logg). Jeg ønsker et webgrensesnitt hvor man kan gå inn og velge å laste ned en definert del av denne loggen. Brukeren skal altså kunne skrive inn startklokkeslett og sluttklokkeslett, og trykke "Last ned", så kommer det en lydfil med logg fra angitt tidsrom. Men hvordan? Jeg tenkte på å lage et PHP-script som igjen kjører et bash-script på linuxboxen som inneholder loggfilen. Noe sånt som at php sender info om start og stopptidspunkt til et script som play´er eller cat´er (elns) fra den kontinuerlige loggfilen til en ny fil (eks wav-fil), som deretter blir sendt til brukeren. Er dette i det hele tatt mulig? Noen smarte hoder med noen ideer her? Takker og bukker! Endret 7. januar 2010 av reminett Lenke til kommentar
JohndoeMAKT Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Det du trenger er en måte å få en tidsreferanse inn i lydstrømmen. I noen lydformater kan du nok timestampe hver frame i en meta-stream, men da er du nok et stykke utenfor hva PHP er optimalt for. Dette er måten jeg hadde gjort det på: -Lagret den aktive logfilen som PCM/WAV, det fordi da bør det ikke være noe særlig problem å lese fra en fil som fortsatt blir skrevet til. -Laget en cron-jobb som transkoder og erstatter ferdige filer fra PCM/WAV til Ogg/Vorbis for å spare plass. -Initialisert en ny loggfil én gang i døgnet. -Lagret i database datofelt fra- og til-tidspunkt for hver fil slik at databasen kan brukes til å finne korrekt fil. -Brukt tidspunktene lagret i databasen til å gi kommandolinjeverktøyet korrekt offset og lengde. Slik jeg ser det er eneste potensielle problem med dette oppførsel av kontinuerlig tilskrevet fil. Jeg hadde brukt ffmpeg bare fordi det er et godt verktøy med aktiv utvikling: ffmpeg -i 2009-01-06.wav -ss 11250 -t 60 -acodec vorbis -ab 160k 2009-01-06-11250-60.ogg Dette skal lagre 60 sekunder fra 11250 sekunders offset i 160kbps Ogg/Vorbis-format. Lenke til kommentar
nomore Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Et alternativ til å lagre tidspunkter i database kan jo være å bruke tidsstempel for når filen ble opprettet? Lenke til kommentar
JohndoeMAKT Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Jeg er lite fan av å bruke filsystem til lagre informasjon. Skal du f.eks hente ut lyden mellom 1234567890 og 1234567900 må du potensielt statte alle råfilene og ut fra det finne den fila som er nyligst opprettet før 1234567890 og om den varer til lengre enn 1234567900. Det kan potensielt være mange hundre spørringer mot filsystemet og mye manuelt arbeid. En SQLite-database kan holde informasjonen flott og denne spørringen henter fila: SELECT filename FROM sourcefiles WHERE start >= 1234567890 AND stop <= 1234567900 ORDER BY created LIMIT 1 ; Lenke til kommentar
nomore Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Ikke uenig der, om trafikken er stor og spørringene blir mange. Lenke til kommentar
JohndoeMAKT Skrevet 7. januar 2010 Del Skrevet 7. januar 2010 Klart, det blir en kompleksitet/transportabilitet vs ytelse-vurdering. Jeg er vant med å lage ting som skal gå fort, fort, fort, så derfor anbefaler jeg database. Lenke til kommentar
reminett Skrevet 7. januar 2010 Forfatter Del Skrevet 7. januar 2010 Tusen takk for raske svar. Denne strategien virker jo veldig fornuftig. Men som du sier, så er spørsmålet hvordan man skal hente logg fra inneværende døgn. Hvordan får jeg ut timestamp, forresten? Noen som kunne tenke seg å skrive et forslag til hvordan scriptet skulle se ut? Lenke til kommentar
JohndoeMAKT Skrevet 8. januar 2010 Del Skrevet 8. januar 2010 Først må du finne ut om du på en eller annen måte kan fastsette start og stop for hver opptaksfil. Hvordan løsningen ellers vil se ut vil være avhengig av det. Hvilket system er det som tar opp lyden? Lenke til kommentar
reminett Skrevet 9. januar 2010 Forfatter Del Skrevet 9. januar 2010 Det har jeg ikke bestemt meg for. Men lyden kommer analogt inn i "line-in" på lydkortet, og det er få krav til lydkvalitet. Lenke til kommentar
JohndoeMAKT Skrevet 9. januar 2010 Del Skrevet 9. januar 2010 På hvilket OS skal dette kjøre? Lenke til kommentar
JohndoeMAKT Skrevet 10. januar 2010 Del Skrevet 10. januar 2010 (endret) Noen som kunne tenke seg å skrive et forslag til hvordan scriptet skulle se ut? I god «jeg har en hammer»-stil: Recorder, executed by cron Set/check mutex lock (sys_get_temp_dir, file_get_contents, file_put_contents) Check if recording interval expired Read capture PID from file Check if process is still running (exec+ps) if running if expired kill process (exec+kill) register file interval end in database else return start new process (proc_open+ffmpeg) register PID (proc_get_status) register file in database (SQLite) Release mutex Extractor, executed by Apache Parse/validate requested interval Ask database for correct file if exists Extract compressed file for interval (exec+ffmpeg) Parse process output and write progress to cache (MC, APC, file, database) Deliver progress to AJAX-process updating message to user Endret 10. januar 2010 av JohndoeMAKT Lenke til kommentar
reminett Skrevet 10. januar 2010 Forfatter Del Skrevet 10. januar 2010 Shit man, dere er raske Det skal kjøre på linux. Har en forkjærlighet til suse, så det blir nok det.. Hmm mye tenking her... Hva skal du ha for å smelle sammen et fungerende script? Lenke til kommentar
JohndoeMAKT Skrevet 10. januar 2010 Del Skrevet 10. januar 2010 Flott platform det. Det bør vel i teorien bare være å kjøre f.eks ffmpeg og bruke /dev/dsp som kilde. Hva jeg skal ha for å lage systemet? Tenker du penger da? Kontakter du bedriften jeg jobber for kan vi sikkert lage det for en 150 000,- :!: Men litt mer seriøst har vi mandag om åtte dager en prosjekt-deadline, så neste uke vil jeg trolig legge inn 50-60 timer, med andre ord blir det lite tid da. Om du har god tid kan jeg muligens uka etter det legge litt tid inn i dette fordi jeg syntes det er litt interessant og at jeg lagde noe ikke så ulikt i høst. Lenke til kommentar
reminett Skrevet 10. februar 2010 Forfatter Del Skrevet 10. februar 2010 Flott platform det. Det bør vel i teorien bare være å kjøre f.eks ffmpeg og bruke /dev/dsp som kilde. Hva jeg skal ha for å lage systemet? Tenker du penger da? Kontakter du bedriften jeg jobber for kan vi sikkert lage det for en 150 000,- :!: Men litt mer seriøst har vi mandag om åtte dager en prosjekt-deadline, så neste uke vil jeg trolig legge inn 50-60 timer, med andre ord blir det lite tid da. Om du har god tid kan jeg muligens uka etter det legge litt tid inn i dette fordi jeg syntes det er litt interessant og at jeg lagde noe ikke så ulikt i høst. Beklager sent svar, jeg har vært veldig opptatt i det siste. Har du lyst å se på et slikt script? Hadde vært utrolig moro å fått det til. Lenke til kommentar
JohndoeMAKT Skrevet 10. februar 2010 Del Skrevet 10. februar 2010 Heisann igjen. Jeg har veldig lite tid for tiden og har et annet system jeg skal lage for en veldedig organisasjon jeg er i styret av ved siden av jobb, men jeg kan hvertfall føre det opp på listen min og se om jeg får tid til å lage de mest avanserte bitene. Så kan eventuelt noen andre fylle inn resten. Lenke til kommentar
reminett Skrevet 10. februar 2010 Forfatter Del Skrevet 10. februar 2010 Heisann igjen. Jeg har veldig lite tid for tiden og har et annet system jeg skal lage for en veldedig organisasjon jeg er i styret av ved siden av jobb, men jeg kan hvertfall føre det opp på listen min og se om jeg får tid til å lage de mest avanserte bitene. Så kan eventuelt noen andre fylle inn resten. Fantastisk. Gleder meg til å se hva du får til Lenke til kommentar
reminett Skrevet 24. februar 2010 Forfatter Del Skrevet 24. februar 2010 Hei! Tror du at du får tatt en titt på dette? Hadde vært moro om det gikk Lenke til kommentar
JohndoeMAKT Skrevet 24. februar 2010 Del Skrevet 24. februar 2010 Desverre lenge til, minst et par seks uker. Jeg har et annet mye høyere prioritert prosjekt jeg driver på med på fritiden, og jobb er det alltid mye av. Lenke til kommentar
reminett Skrevet 24. februar 2010 Forfatter Del Skrevet 24. februar 2010 Kult, åssen prosjekt er det du holder på med? Lenke til kommentar
JohndoeMAKT Skrevet 25. februar 2010 Del Skrevet 25. februar 2010 På jobb: Et system for å transkode videofiler fra flere kunder til flere formater som transporteres til opptil flere servere hvor selve komprimeringsjobben kan gjøres på flere servere i parallell og opprettholde en rettferdig kø mellom kundene og estimere tid til komprimering er ferdig. Det er faktisk veldig kjekt. Privat: En nettside som skal være et samlingssted for tidligere beboere av samme bofellesskap (estimert omtrent 4000 tidligere beboere) med forhåpentligvis en del interaktivitet. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå