Hallo ihr PHP`ler,
ich komme zu euch weil ich langsam etwas verzweifle.
Aber zuerts einmal das Problem:
Ich schreibe gerade ein kleines PHP-Script das Videos automatisch konvertieren soll. Hierzu möchte ich gerne den Befehl exec() benutzen, welcher eine Batch-Datei aufrufen soll, die wiederrum die Videos konvertiert.
Soweit die Aufgabe. Leider habe ich das Problem, dass sich gar nichts tut. Ich erwarte jetzt, dass sich ein CMD-Fenster öffnet, in dem dann die Operationen ausgeführt werden, die in der Batch-Datei stehen...
Hier ist einmal der PHP-Code:
PHP-Code:
convertVideo();
function mysqlConnect(){
require_once('mysqlSettings.php');
$mysql = mysql_connect($dbserver, $dbuser, $dbpw) or die(mysql_error());
mysql_select_db($dbname, $mysql) or die(mysql_error());
return $mysql;
}
function convertVideo(){
mysqlConnect();
if ($handle = opendir('../uploads')) {
while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$fileArray[] = $file;
}
}
closedir($handle);
}
for ($x=0;$x<count($fileArray);$x++) {
$mysql = "select * from videos where filename ='".$fileArray[$x]."'";
$mysqlQuery = mysql_query($mysql);
while($mysqlRow = mysql_fetch_array($mysqlQuery)){
$filename = explode('.',$mysqlRow['filename']);
$convertArray[] = 'C:\Progs\xampp\htdocs\streaming\convert\convert.bat C:\Progs\xampp\htdocs\streaming\uploads\ '.$fileArray[$x].' '.$filename[0].' '.$mysqlRow['userid'].'';
}
}
for ($x=0;$x<count($convertArray);$x++) {
$videoExec = exec($convertArray[$x]);
print_r($videoExec);
echo $convertArray[$x];
echo '<br>';
}
}
Die Batch-Datei wird also folgendermaßen aufgerufen:
C:\Pfad\zur\Batch-Datei\convert.bat Pfad\zum\Video Videoname Ausgabename User
Die Attribute werden dementsprechen in der Batch-Datei angenommen:
PHP-Code:
@echo off
cls
rem ## %1 = Pfad
rem ## %2 = Datei
rem ## %3 = Datei-OutputName
rem ## %4 = User
rem ## Veriablen festlegen
set input=%1
set file=%2
set output=%3
set user=%4
rem ## Codec Festlegen
set vcodec=libx264
rem ## Bitraten festlegen
set bitrateHigh=500000
set bitrateLow=100000
rem ## Auflösungen festlegen
set resolutionHigh=480x360
set resolutionLow=320x240
rem ## Hohe Qualität
ffmpeg.exe -i %input%%file% -y -vcodec %vcodec% -b %bitrateHigh% -s %resolutionHigh% %input%%user%%output%_%user%_convertedHigh.flv
rem ## Niedrige Qualität
ffmpeg.exe -i %input%%file% -y -vcodec %vcodec% -b %bitrateLow% -s %resolutionLow% %input%%user%%output%_%user%_convertedLow.flv
rem ## Datei aus Upload-Ordner löschen
rem del %input%%file%
Wenn ich die PHP-Datei jetzt ausführe, bekomme ich nur die Ausgaben von dem Array, welches ich an exec() übergebe (gebe das zum Testen mit echo() aus).
Code:
C:\Progs\xampp\htdocs\streaming\convert\convert.bat C:\Progs\xampp\htdocs\streaming\uploads\ 00_fußball.avi 00_fußball user123
C:\Progs\xampp\htdocs\streaming\convert\convert.bat C:\Progs\xampp\htdocs\streaming\uploads\ 00_TESTVID.avi 00_TESTVID user123
Ich mache das ganze auf meinem eigenem Rechner, mit Hlilfe von XAMPP. Ich nutze daher die PHP-Version 5.2.9. Safe-Mode ist deaktiviert.
Ich hoffe ich konnte mich einigermaßen verständlich ausdürcken

Villeicht könnt ihr mir damit ja weiterhelfen!
Danke schonmal im vorraus!
Bis bald
Nichofix