FFMPEG installatie [Windows] en gebruik
1. Inleiding
2. FFMPEG installeren
3. Overzicht
4. FFMPEG in combinatie met PHP
5. Slotwoord
1. Inleiding
FFMPEG is een extensie voor PHP om audio- en videodata toegankelijker te maken. Onder andere vimeo maakt gebruik van FFMPEG. Met FMMPEG is het mogelijk om .avi-, .wmv-, ... bestanden te converteren naar bijvoorbeeld .flv, of om een andere audiotrack toe te voegen aan een videobestand. Ook kan de audio van een videobestand door middel van FFMPEG afgezonderd worden.
FFMPEG is standaard niet geinstalleerd in PHP, dus het moet apart geinstalleerd worden. Sommige hostingbedrijven bieden FFMPEG wel aan.
top
2. FFMPEG installeren
De installatie van FFMPEG is redelijk eenvoudig. FFMPEG is ook heel eenvoudig te installeren in bijvoorbeeld WAMP of XAMPP.
Aangezien ik gebruik maak van XAMPP, kan ik enkel een korte samenvatting geven over hiet FFMPEG installeren in XAMP. Voor linux-gebruikers: FFMPEG installatie-tutorial op Linux
Installatie op XAMPP:
Bron: http://www.apachefriends.org/f/viewtopic.php?f=16&t=32688
1. Download van de volgende 2 sites FFMPEG (het zijn andere bestanden, dus beide zip-files moeten gedownload worden)
2. In beide bestanden (eerste bestand: .7z, tweede bestand: .zip) zitten 5 DLL's:
- php_ffmpeg_20050123.dll
- php_ffmpeg_20050212.dll
- php_ffmpeg_20050618.dll
- avcodec.dll
- avformat.dll
Hernoem één van de drie eerste DLL's naar php_ffmpeg.dll en kopieër deze naar de map c:Xampphpextensions.
3. Open php.ini: plaats bij de lijst van extensies onderaan extension=ffmpeg_php.dll bij.
Indien er gebruik wordt gemaakt van de nieuwste versie van xampp, is de extensie php_gd2.dll normaal geactiveerd (dus zonder ; ervoor). Indien dit niet het geval is, moet de ; weggelaten worden.
4. Kopieër de DLL's avcodec.dll en avformat.dll naar de map C:WindowsSystem32, net zoals de DLL pthread2.dll.
5. Herstart Xampp.
6. Plaats in de map htdocs het bestand ffmpeg.exe.
top
3. Overzicht
Standaard wordt een command in FFMPEG op de volgende manier opgebouwd:
path_naar_ffmpeg.exe -i inputbestand -f outputbestand
Er kunnen opties toegevoegd worden aan deze standaardcode:
- -i: het inputbestand
- -f: het outputbestand
- -fs: bestandsgrootte van output limiteren
- -ss: naar een bepaald tijdstip gaan (uu:mm:ss)
- -b: video bitrate (bits/sec) instellen
- -r: framesnelheid (frames/sec) instellen (standaard: 25)
- -vframes: aantal frames dat moet worden opgenomen
- -s: grootte instellen (breedte x hoogte)
- -sameq: kwaliteit behouden (deze optie heeft geen waarde nodig)
- -aspect: aspect ratio instellen
- -ar: audio frequentie (standaard: 44100 Hz)
- -ab: audio bitrate (bits/sec) instellen
- -an: audio uitschakelen
- -ac: aantal audiokanalen instellen (standaard: 1)
- -newaudio: nieuw audiokanaal toevoegen (voeg andere opties voor deze optie toe indien die opties uitgevoerd moeten worden op het nieuwe audiokanaal)
Een voorbeeldcommand:
Conversie van .avi naar .flv, met een canvasgrootte van 320x180 en behoud van kwaliteit. De audio bitrate is 56, de audiofrequentie is 44100 Hz, de video bitrate is 200 en het aantal frames per seconde is 25.
path_naar_ffmpeg.exe -i inputbestand -ab 56 -ar 44100 -b 200 -r 25 -sameq -s 320x240 -f flv outputbestand
Voor meer informatie en extra opties: http://www.iepak.com/34/TopicDetail.aspx
top
4. FMMPEG in combinatie met PHP
FFMPEG kan het best gebruikt worden door er in PHP een klasse rond te schrijven. Als voorbeeld hiervoor heb ik een klasse gemaakt, die een willekeurige video (.avi, .wmv, ...) omzet naar .flv.
<?php
class convert_to_flv {
public $ffmpeg_path;
public $msg;
function __construct() {
$this->ffmpeg_path = 'path_naar_ffmpeg.exe';
}
public function convert($input,$output) {
$commandline = "$this->ffmpeg_path -i $input -ab 56 -ar 44100 -b 200 -r 25 -sameq -s 320x240 -f flv $output";
@exec($commandline);
if(file_exists($output)) {
$this->msg = 'Conversie is gelukt';
echo $this->msg;
} else {
$this->msg = 'Conversie is mislukt';
echo $this->msg;
}
}
}
$obj = new convert_to_flv;
$obj->convert('video.wmv','video.flv');
?>
Een ander voorbeeld van FFMPEG in combinatie met PHP is het maken van een screenshot van een video op een bepaald tijdstip. Ook hiervoor kan een klasse gebruikt worden.
<?php
class convert_to_jpg {
public $ffmpeg_path;
public $mjpeg;
public $msg;
function __construct() {
$this->ffmpeg_path = 'path_naar_ffmpeg.exe';
$this->mjpeg = 'mjpeg';
}
public function convert($input,$output) {
$commandline = "$this->ffmpeg_path -i $input -an -ss 00:00:05 -r 1 -vframes 1 -f $this->mjpeg $output";
@exec($commandline);
if(file_exists($output)) {
$this->msg = 'Conversie is gelukt';
echo $this->msg;
} else {
$this->msg = 'Conversie is mislukt';
echo $this->msg;
}
}
}
$obj = new convert_to_jpg;
$obj->convert('video.wmv','video.jpg');
?>
top
5. Slotwoord
In deze tutorial heb ik de basis van FFMPEG uitgelegd, maar heel veel extra is er ook niet bij. Wat je nog kan doen is de array uitlezen die wordt gemaakt wanneer de commandline wordt uitgevoerd, en daar dan de tijdsduur uit halen, en bijvoorbeeld ook automatisch een screenshot nemen.
FMMPEG biedt je de mogelijkheid om Youtube na te bouwen, maar het is maar een basis. Je moet zelf nog een uploadscript bouwen, etc..
Objecten van ffmpeg_php: het is mogelijk om ook informatie van de video op te halen, bijvoorbeeld de duur van de video.
Een overzicht van alle objecten die mogelijk zijn: http://ffmpeg-php.sourceforge.net/doc/api/.
top
|