Video küçük

2 Cevap php

Ben insanların videonun bağlantısını gönderebilirsiniz bir site üzerinde çalışıyorum. Sonra ben sadece embed. Ancak, benim sunucu videoları kaydetmeden videoları küçük olsun istiyorum. Ben vidoes liste, ben bunun yerine tüm videoları gömme küçük resimlerini kullanın böylece.

Benim hizmet PHP kullanır. Video SWF formatında olduğunu varsayalım.

veya etiketi şey olduğunu ben 'grap' üzerlerine olabilir? veya PHP, ben uzaktan uzaktan videonun resmini (veya çerçeve) alabilirsiniz bir şey var mı?

Herhangi bir fikir?

2 Cevap

Sen 'ffmpeg kullanabilirsiniz. onu aramak için PHP kullanarak.

shell_exec  ("ffmpeg -i \"$FILENAME.flv\" -ss 00:00:04 -f image2 \"$FILENAME.jpg\"");

Ben bunu test nedenle ilk deneyin ettik söylemek üzgünüm.

EDIT: Sadece eğlence için, ben bir işlev yapmak. İşte:

<?php
 
function GetThumbnailFileName($FileName, $ScreenShortSecond = 10) {
    $VDOLastModifiedDate = filemtime($FileName);
    $Thumbnail_FileName  = sprintf("%s-(%s::%02d).jpg", $FileName, $VDOLastModifiedDate, $ScreenShortSecond);
     
    if (!file_exists($Thumbnail_FileName)) {
        $FFMPEG_Command = sprintf(
            "ffmpeg -i \"%s\" -y -ss \"00:00:%02d\" -f image2 \"%s\" > /dev/null 2>&1",
            $FileName, 0 + $ScreenShortSecond, $Thumbnail_FileName
        );
        system($FFMPEG_Command);
    }
     
    if (!file_exists($Thumbnail_FileName))
        return null;
     
    return $Thumbnail_FileName;
}
 
$FileName  = "Test.flv";
$Thumbnail = GetThumbnailFileName($FileName);
if ($Thumbnail != null)
     echo "Thumbnail file is: \"$Thumbnail\"\n";
else echo "Fail creating a Thumbnail of \"$FileName\".";
 
?>

Bu fonksiyon aynı zamanda üzerlerine önbelleğe ve aynı zamanda VDO değiştirilirse güncelleme resim yeniden emin olun.

Hoşlanmak

Ben yukarıda bazı parçacıkları ve diğer bazı kaynaklar kullanılarak çalışma var, burada benim kod bazıları:

    private function videoScreenshot($originalFile, $newFile, $percentage = 10)
    {
        // Check ffmpeg is configured
        $config = Nutshell::getInstance()->config;
        $ffmpeg_dir = $config->plugin->Plupload->ffmpeg_dir;
        if(!$ffmpeg_dir) return;

        // Get the potision a percentage of the way in the video
        $duration = $this->getVideoDuration($originalFile);
        $position = ($duration * ($percentage / 100));

        // save the screenshot
        $command = "\"{$ffmpeg_dir}ffmpeg\" -i \"$originalFile\" -ss $position -f image2 \"$newFile\"";
        shell_exec($command);
    }

    private function getVideoDuration($filename, $seconds = true)
    {
        $config = Nutshell::getInstance()->config;
        $ffmpeg_dir = $config->plugin->Plupload->ffmpeg_dir;
        if(!$ffmpeg_dir) return;

        ob_start();
        $command = "\"{$ffmpeg_dir}ffmpeg\" -i \"$filename\" 2>&1";
        passthru($command);
        $result = ob_get_contents();
        ob_end_clean();

        preg_match('/Duration: (.*?),/', $result, $matches);
        $duration = $matches[1];

        if($seconds)
        {
            $duration_array = explode(':', $duration);
            $duration = $duration_array[0] * 3600 + $duration_array[1] * 60 + $duration_array[2];
        }
        return $duration;
    }

Kendi sınıfında bu işlevleri kullanmak için gidiyoruz Açıkçası eğer, satırları değiştirmeniz gerekir

    $config = Nutshell::getInstance()->config;
    $ffmpeg_dir = $config->plugin->Plupload->ffmpeg_dir;

kendi konfigürasyon seçenekleri ile.

Tam plugin ve framework github mevcuttur, belirli bir dosya bu pasajı dan here.