David Steinsland – informatikkstudent og webutvikler

Innlegg merket med «php»

Wamp: Hvordan installere ffmpeg (Windows)

| 8 kommentarer »

Noen ganger kan det være ganske ålreit å kunne konvertere videoer via PHP, eller for eksempel hente ut miniatyrbilder fra en film. Da er det også ganske ålreit at ffmpeg finnes.

Med ffmpeg kan du gjøre slike ting lekende lett, men veien der til er ikke alltid like grei. Heldigvis har jeg i den sammenheng laget en liten guide til hvordan du kan gjøre det!

Før vi begynner …

Sørg for at du har:

Når du har de to punktene under kontroll er du klar til å gå videre.

Hva vi trenger

Da er tiden inne for å laste ned ffmpeg-arkivene. Last ned de to arkivene under, og plasser dem f. eks på skrivebordet ditt.

FFmpeg:  http://sourceforge.net/projects/mplayer-win32/files/FFmpeg/(last ned en .7z-fil)
FFmpeg-php: http://sergey89.ru/files/ffmpeg-php/ffmpeg-php-win32-all.zip (kun kompatibel med PHP 5.2.5)

La oss begynne

Pakk ut innholdet fra den første zip-filen, og kopier filen ffmpeg.exe til C:\ffmpeg\. Det er denne filen PHP kommer til å sende kommandoene til.

Pakk så ut innholdet fra det siste arkivet (ffmpeg-php). Her vil det være totalt 5 filer som vi trenger. Kopier filene avcodec-51.dll, avformat-51.dll, avutil-49.dll og pthreadGC2.dll og lim dem inn i: C:\WINDOWS\System32\.

Dersom du kjører et 64-bits operativsystem, må du også legge de samme filene i: C:\WINDOWS\SysWOW64\.

Da gjenstår det én fil igjen, og det er: php_ffmpeg.dll.  Dette er utvidelsefilen for PHP; denne må du plassere i C:\wamp\bin\php\php5.2.5\ext\ som da er PHPs mappe over utvidelser. Siste punktet du må gjøre er å endre PHPs konfigurasjonsfil, php.ini. Denne kan du nå på to måter:

  • Trykke på Wampserver-ikonet i Tray, klikke på PHP og så velge php.ini
  • Gå til C:\wamp\bin\php\php5.2.5\

Åpne konfigurasjonsfilen i en teksteditor (f. eks Notepad), og bla ned til du kommer til «Windows extensions». Her kommer det opp en liste over mange ulike utvidelser; lag en ny linje, og lim inn følgende kode:

extension=php_ffmpeg.dll

Nå trenger du bare starte Wampserver om igjen, ved å trykke på Wampserver-ikonet i tray og deretter velge «Restart all services».

Nå kan du åpne din favoritt-nettleser, og lime inn følgende adresse:

http://localhost/?phpinfo

Dersom installasjonen har vært vellykket, vil du kan kunne finne ffmpeg på den listen (se bilde).

Sluttord

Nå er det bare til å sette i gang med å konvertere videoer, hente ut stillbilder, lyd eller hva det måtte være. Du kan teste installasjonen ved å kjøre følgende kode:

<?php
    $clip = 'clip.mp4'; // Which video to extract from
    $frame = '00:00:10'; // ... and at which frame
    $dimensions = '640x480'; // Image dimensions (width x height)
    $output = 'myscreen.png'; // path to captured image

    $command = 'C:\ffmpeg\ffmpeg.exe -y -i ' . $clip . ' -vframes 1 -ss ' . $frame . ' -an -vcodec png -f rawvideo -s ' . $dimensions . ' ' . $output;
    exec ($command);
?>

Den vil hente ut et bilde fra videoen clip.mp4 ti sekunder ut i filmen, og lagre bildet som myscreen.png. Legg spesielt merke til at vi må spesifisere fulle stien til hvor vi har plassert ffmpeg.exe-filen. De fleste plasser på Internett, så står det som regel bare «ffmpeg», istedenfor full sti; slik må du ikke gjøre det!

Du kan også teste installasjonen ved å skrive denne koden:

<?php
    echo shell_exec ('C:\ffmpeg\ffmpeg.exe -formats');
?>

Om du har innspill, kommentarer eller lignende, så er du velkommen til å kommentere artikkelen!
Video som viser hva jeg gjør — i dårlig kvalitet — er å se under:

Synkronisert nettprat (Live Chat Script)

| 2 kommentarer »

På forhånd: dette er mer en reklamasjonspost enn guide til hvordan en lager det.

Av de produktene jeg har solgt til eller utviklet for kunder, er det én gjengganger som ligger desidert på toppen. Det er nettpraten jeg snakker om. Med tanke på at den ikke utnytter databaser, og krever minimalt med konfigurering, er det i mange hjerter denne tjenesten har falt.

For min egen del er det også veldig lett. Dersom en kunde kommer med en forespørsel til noe han/henne vil ha annerledes, er jobben nærmest gjort på minuttet.

Noen notatverdige funksjonaliteter er som følger:

  • Mulighet for å bruke nettpraten som en privat chat (med to deltagere), eller som en gruppesamtale
  • Brukerne kan endre navn fritt — selvsagt til navn som ikke eksisterer fra før
  • Liste over aktive deltagere (brukere som har skrevet noe den siste timen)
  • Uttrykksikoner og autolinking av nettadresser
  • Hver ukedag før egen fil hvor samtalene føres, noe som i praksis fører til at konversasjonene blir tilbakestilt hver midnatt
  • Spamsikkert da det følger med et Quiz-spørsmål som deltagere er nødt til å svare på
  • Mulighet for å la nye samtaler komme på toppen eller bunnen
  • Dersom noe blir skrevet mens en bruker ikke har nettpraten fokusert, vil det komme en animasjon i tittellinjen som forteller brukeren at det er kommet nye meldinger

Prisen er heller ikke høy, og er ment for å dekke de timene jeg har lagt ned i prosjektet. Utsalgsprisen ligger på 600 kroner, og om ekstra funksjonalitet er ønskelig, vil det blir lagt på timepris.

Du kan selv teste ut praten så mye du vil på følgende adresse:
http://trunk.davidsteinsland.net/chat/

Om det er noe du lurer på — skriv en kommentar, eller send meg en E-post.

Hemmeligheten bak rask og kvalitetsikret programmering

| Ingen kommentarer »

I mange år har jeg strebet meg frem når det gjelder å programmere raske, men omfattende PHP-løsninger. Hver dag fant jeg alltid en bedre måte og gjøre ting på, og midt oppi alt leste jeg om klasser, Singletons, MVC og sikkerhet, som ikke gjorde dagene lettere.

Jeg har hele tiden brydd meg veldig mye om fleksibilitet, ytelse, kvalitet og sikkerhet. Å kombinere alt dette til én løsning er ikke bare-bare. Etter som tiden gikk, startet jeg med tanken om å lage mitt eget rammeverk for mine løsninger, slik jeg lett kunne «hive inn» ferdige moduler uten noen spesiell konfigurering for hvert prosjekt.

Jeg innså fort at jeg hadde tatt vann over hodet, og ble enda mer fortvilet da jeg kikket på de største rammeverkene for PHP. De var store, komplekse, og så veldig overarbeidet ut.

Det faktisk ikke før ved en tilfeldighet, da jeg satt og hørte på et foredrag av Rasmus Lerdorf, der han blant annet tok opp emnet «rammeverk». Han også ergret seg over at de var store, tunge, og faktisk tregere enn å kun konvensjonell PHP. Det var ikke før mot slutten han sa: «Det rammeverket jeg liker best er det som ligner mist på et». Det var CodeIgniter.

Sekunder etter å ha hørt på gründeren bak PHP, navigerte jeg meg til CodeIgniters hjemmeside og lastet ned pakken. Jeg gikk innom «brukerhåndboken» og dens egen Wiki for å sette meg bedre inn i det.

Det gikk et par dager med lesing og lett testing (jeg hadde jo aldri prøvd ut noen skikkelig, og syntaksen var litt små-rar). På dag fire startet jeg med et prosjekt hvor jeg ville laste opp filer, og dele dem med andre.

Rundt én måned senere stod systemet klart, som jeg kallet for Fileshed (filskur: en rote-/samleplass for filer du vil dele med andre, eller med deg selv over ulike PC-er). Selv bruker jeg systemet flittig, da jeg merket det faktisk var nyttig.

Poenget mitt i denne anekdoten er verken å skryte over mine egne prestasjoner eller fremme et spesifikt rammeverk. Det er rett og slett å fremme selve overskriften i artikkelen. Rammeverk har alt du trenger: databaseklasser, inputklasser, sessionklasser … you name it.

For å danne litt kontrast brukte jeg, som tidligere nevnt, rundt én måned på Fileshed – på Logopedane, hvor jeg måtte hardkode hele systemet, brukte jeg rundt 4-5 måneder.

Aldri tvil på kraften til et rammeverk. Du sparer utrolig mye verdifull tid som du heller kan bruke ute i vår fagre natur, eller på kundekommunikasjon om du driver business.