Need ffmpeg help

mylikes786

Registered Member
Joined
Oct 31, 2013
Messages
81
Reaction score
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

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;
?>
 
This is the line of code that needs to be modified:
Code:
 $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";
 
Back
Top