mylikes786
Registered Member
- Oct 31, 2013
- 81
- 7
I have a script to convert video and add water mark on video
i dont want any change in bitrate, frequncy etc. i just want add watermark on video
can any one edit it and remove option for converstion. i want only watermark option
i dont want any change in bitrate, frequncy etc. i just want add watermark on video
can any one edit it and remove option for converstion. i want only watermark option
PHP:
<?php
include"init.php";
?>
<?php
if (isset($_GET['upload'])) {
?>
<h2>Upload a video file <?php echo isset($_GET['direct']) ? ' ( Direct ) ' : (isset($_GET['url']) ? '( url ) ' : ''); ?>
</h2>
<?php
if (isset($_GET['direct'])) {
if (isset($_POST['upload'])) {
$file = $_FILES['file'];
if ($file['error'] == 0 && $file['size'] > 0) {
$name = $default_destination . str_replace(".", "-", substr($file['name'], 0, strripos($file['name'], "."))) . "." . substr($file['name'], strripos($file['name'], ".") + 1);
if (in_array(strtolower(pathinfo($name, 4)), $allowed_extensions, true)) {
if (!is_file($name)) {
move_uploaded_file($file['tmp_name'], $name);
echo "<strong>" . htmlspecialchars(basename($name)) . "</strong> has been uploaded.
<br />You may now load the file using the <a href='?loader'>loader</a>";
} else {
echo"That file is already uploaded... try another file name";
}
} else {
echo"Extension isn't allowed";
}
} else {
echo"Error in uploading.. Try again.";
}
} else {
?>
<form method='post' enctype='multipart/form-data' action='?upload&direct'>
<input type='file' name='file' />
<input type='submit' name='upload' value='upload' />
<br /><strong>Allowed extensions:</strong> <?php echo strtolower(implode(",", $allowed_extensions)); ?>
</form>
<?php
}
} elseif (isset($_GET['url'])) {
if (isset($_POST['url'])) {
$url = $_POST['url'];
$name = isset($_POST['name']) ? basename($_POST['name']) : basename($url);
$name = preg_replace("@[^a-z0-9\.]@is", "-", $name);
if (in_array(strtolower(pathinfo($name, 4)), $allowed_extensions, true)) {
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo copy($url, $default_destination . $name) ? htmlspecialchars($name) . " has been UPLOADED... You may now load the file using the <a href='?loader'>loader</a>" : "NOT DONE";
} else {
error("URL ISN'T VALID: " . $url);
}
} else {
error("EXTENSION ISN'T ALLOWED : " . pathinfo($name, 4));
}
} else {
?>
<form method='POST' action='?upload&url'>
<b>Remote URL</b> : <input type='text' name='url' value='' size='60' />
<br /><b>Filename</b> : <input type='text' name='name' value='' size='20' />
<br />Allowed extensions: <?php echo strtolower(implode(",", $allowed_extensions)); ?>
<br /><input type='submit' value='Fetch' />
</form>
<?php
}
} else {
echo"
<center><a href='?upload&direct'>Direct upload</a>",
" <strong>OR</strong> ",
"<a href='?upload&url'>Fetch a link</a></center>
<strong>Direct upload:</strong> Upload a file from your computer.
<br />
<strong>URL upload:</strong> Upload a file from a http link.";
}
} elseif (isset($_GET['loader'])) {
$dh = opendir($default_destination);
if ($dh) {
echo "<h3>List of files</h3>";
while ($file = readdir($dh)) {
if ($file != "." && $file != ".." && in_array(strtolower(pathinfo($file, 4)), $allowed_extensions, true)) {
echo "
<b>$file</b> (SIZE:" . size(filesize($default_destination . $file), 2) . ")
<br />
<a href='?process&file=$file'>Load</a>
<a href='?getscr&file=$file'>Screenshot</a>
<a href='$default_destination$file'>Link</a><br />
<hr noshade />
<br />
";
}
}
closedir($dh);
} else {
error("CAN'T OPEN FOLDER FOR LISTING FILES.");
}
?>
<?php
} elseif (isset($_GET['getscr']) && isset($_GET['file'])) {
$file = basename($_GET['file']);
if (!is_file($default_destination . $file)) {
error("No such file exists !", true);
} else {
$file = $default_destination . $file;
$exec_cmd = "ffmpeg -i " . escapeshellarg($file) . " 2>&1";
ob_start();
passthru($exec_cmd);
$contents = ob_get_contents();
ob_end_clean();
//echo $contents;
$duration = 0; // Duration in seconds;
if (preg_match('@Duration: ([0-9]+?):([0-9]+?):([0-9]+?)\.([0-9]+?),@i', $contents, $match)) {
$duration = $match[1] * 3600 + $match[2] * 60 + $match[3];
}
//echo $duration;
$mid_dist = ceil($duration / 2);
if (isset($_GET['dist']) && $_GET['dist'] > 0 && $_GET['dist'] <= $duration) {
$dist = intval($_GET['dist']);
} else {
$dist = $mid_dist;
}
//echo $dist;
$imgfile = $default_destination . "ss/" . basename($file) . "_" . $dist . ".jpg";
if (!is_dir($default_destination . 'ss')) {
mkdir($default_destination . 'ss', 0755) or exit('Unable to create directory: ' . $default_destination . 'ss');
}
if (!is_file($imgfile)) {
$exec_cmd = "ffmpeg -i " . escapeshellarg($file) . " -an -ss " . escapeshellarg($dist) . " -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg " . escapeshellarg($imgfile) . " 2>&1";
$contents = '';
ob_start();
passthru($exec_cmd);
$contents = ob_get_contents();
ob_end_clean();
//echo $contents;
}
echo "<img src='$imgfile' />
<br />
<strong>Filename</strong>: " . basename($file) . "
<br />
<strong>Video duration</strong>: " . $duration . " seconds
<div id='slider1' class='slider'>
<div class='handle'>»</div>
</div>
<script type='text/javascript'>
var slider = new Slider('slider1', {
callback: function(value)
{
document.getElementById('dist').value = Math.round($duration * value);
}});
slider.setValue(" . ($dist / $duration) . ");
</script>
<form method='GET'>
<input type='hidden' name='getscr' value='1' />
<input type='hidden' name='file' value='" . basename($file) . "' />
<input type='submit' value='Generate Screenshot' /> at <input type='text' id='dist' name='dist' size='3' value='$dist' /> seconds
</form>
";
}
} elseif (isset($_GET['process']) && isset($_GET['file'])) {
$file = basename($_GET['file']);
if (!is_file($default_destination . $file)) {
error("No such file exists !", true);
}
if (isset($_POST['submit'])) {
$ext = strtolower($_POST['ext']);
if (!in_array($ext, $allowed_extensions, true)) {
error("NO / INVALID OUTPUT EXTENSION SELECTED", true);
}
$sizeX = escapeshellarg(intval($_POST['sizeX']));
$sizeY = escapeshellarg(intval($_POST['sizeY']));
$vbr = escapeshellarg(intval($_POST['vbr']));
$abr = escapeshellarg(intval($_POST['abr']));
$afreq = escapeshellarg(intval($_POST['afreq']));
$channel = escapeshellarg(intval($_POST['channel']));
$fname_old = escapeshellarg($default_destination . $file);
$fname_new = $default_destination . $_POST['name'] . "." . $ext;
if (is_file($fname_new)) {
error("OUTPUT FILE ALREADY EXISTS. GO BACK AND CHOOSE ANOTHER NAME", true);
}
$fname_new = escapeshellarg($fname_new);
if (is_file($fname_new)) {
error("CHOOSE DIFFERENT FILE NAME FOR OUTPUT BECAUSE IT ALREADY EXISTS", true);
}
$cmd = "mencoder $fname_old -o $fname_new -ovc xvid -xvidencopts bitrate=$vbr -vf scale=$sizeX:$sizeY -oac mp3lame -lameopts cbr:mode=$channel:br=$abr -af resample=$afreq -srate $afreq";
if ($ext == 'mp3') {
$cmd = "ffmpeg -i $fname_old -vn -acodec libmp3lame $fname_new";
}
/* LOGS */
$time = time();
$srt = $default_destination . $time . "_" . md5($watermark) . "_.srt";
$log = $default_destination . $time . "_.txt";
if (isset($_POST['watermark']) && strlen($_POST['watermark']) > 0) {
$watermark = preg_replace("@[^a-z0-9 \.]@is", "", $_POST['watermark']);
if (strlen($watermark) > 0) {
$content = "1\n00:00:0,001 --> 00:09:00,000\n$watermark";
file_put_contents($srt, $content);
$cmd = $cmd . ' -sub ' . escapeshellarg($srt) . ' -font verdana.ttf -subpos 98';
}
}
ob_start();
passthru($cmd);
$content = "Conversion initiated by: $_SESSION[user] \n\nConversion cmd: " . $cmd . "\n\n" . ob_get_contents();
ob_end_clean();
file_put_contents($log, $content);
echo"
<b>Conversion successful<b/>.
<br />
\"" . basename($fname_old) . " was converted to \"" . basename($fname_new) . " successfully.
<br /><br />
<a href='?lister'>view list </a> <a href='$log'>View conversion log</a>";
} else {
?>
<h4>LOADED FILE : <?php echo $file; ?> </h4>
<b>INSTRUCTIONS</b> :
<ul type="circle">
<li> ENTER VIDEO CONVERSION OPTIONS PROPERLY.
<li> WAIT FOR SOMETIME AFTER SUBMITTING THIS FORM ( VIDEO CONVERSION TAKES A LOT OF TIME )
<li> LEAVE WATERMARK TEXT BOX EMPTY IF YOU DON'T WANT TO WATERMARK.
<li> DON'T PUT TOO HIGH AUDIO/VIDEO BITRATE.
<li> DON'T RESUMIT FORM IN ANY CASE.
</ul>
<form action='?process&file=<?php echo $file; ?>' method='post'>
<b>OUTPUT FILE NAME</b> : <input type='text' name='name' value='' size='50' /> ( Use a simple filename. )
<br /><b>OUTPUT FORMAT</b> : <?php foreach ($allowed_extensions as $ext)
echo "<input type='radio' name='ext' value='$ext' /> <b>$ext</b> "; ?>
<br /><b>VIDEO BITRATE</b> : <input type='text' name='vbr' value='112' size='5' /> ( For eg if 112k then fill 112 )
<br /><b>AUDIO BITRATE</b> : <input type='text' name='abr' value='32' size='5' /> ( For eg if 32k then fill as 32)
<br /><b>SIZE X</b> : <input type='text' name='sizeX' value='320' size='5'/> ( For eg if 320x240 then 320 in this and 240 in the box below )
<br /><b>SIZE Y</b> : <input type='text' name='sizeY' value='240' size='5' />
<br /><b>AUDIO FREQUENCY</b> : <input type='text' name='afreq' value='22050' size='5' /> ( For eg. 22050 )
<br /><b>CHANNEL</b> : <select name='channel'><option value='1'>Mono</option><option value='2' selected='selected'>Stereo</option></select>
<br /><b>WATERMARK TEXT</b> : <input type='text' name='watermark' value='' size = '50' /> ( Leave blank for no watermarking )
<p align='center'><input type='submit' name='submit' value='Convert video' /></p>
</form>
<?php
}
} elseif (isset($_GET['logs'])) {
$dh = opendir($default_destination);
if ($dh) {
echo "<h3>Conversion logs</h3>";
while ($file = readdir($dh)) {
if ($file != "." && $file != ".." && strtolower(pathinfo($file, 4)) == 'txt') {
$time = date("d.m.Y h:i:s", str_replace("_.txt", "", $file));
echo "<a href='$default_destination$file' target='_blank'>view</a> <b>$file</b> - TIME:$time - SIZE:" . size(filesize($default_destination . $file), 2) . "
<br />";
}
}
closedir($dh);
} else {
error("CAN'T OPEN FOLDER FOR LISTING FILES.");
}
} else {
?>
<b>WELCOME....</b>
<ul type='circle'>
<li> THIS PHP SCRIPT USES MENCODER/FFMPEG FOR VIDEO CONVERSION.
<li> COPY VIDEOS FROM A REMOTE URL OR UPLOAD FROM YOUR PC.
<li> VIEW LIST OF FILES.
<li> LOAD YOUR FILE FOR CONVERSION.
<li> ENTER PROPER CONVERSION OPTIONS.
<li> SUBMIT FORM / CONVERSION WILL BEGIN.
<li> WAIT FOR CONVERSION TO FINISH, DO NOT RELOAD THE PAGE.
<li> AGAIN VIEW LIST OF FILES.
<li> OBTAIN DIRECT LINK OF CONVERTED FILE.
<li> WATERMARKING ALL VIDEOS IS NOT RECOMMENDED. 3GP WATERMARKING SHOULD BE AVOIDED.
<li> CONVERT VIDEOS ONE BY ONE / DON'T OVERLOAD YOUR SERVER :P.
</ul>
<?php
}
echo $footer;
?>