Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- set_time_limit(false);
- /*
- * Copyright (c) 2012 [iPs]TeaM
- * Bruno da Silva (brunoemail@r7.com)
- * Pegar a imagem prévia de um vídeo usando php! Thubnails de forma aleatória
- * www.brunodasilva.com.br
- * www.ips-team.forumeiros.com
- */
- // especificações básicas
- $video = 'Wildlife.wmv'; // aqui você deve alterar para o nome do vídeo. Se for usar em massa, use $_GET
- $resolucao = '800x640'; // aqui altere para o tamanho final da imagem. Lembre-se de arrumar corretamente para evitar erros
- // Evitar que passthru "outpute" a execução
- ob_start();
- // Chamar ffmpeg para pegar o tempo de vídeo
- passthru("ffmpeg -i \"{$video}\" 2>&1");
- // Tratar a resposta de ffmpeg filtrando a duração
- $arrayTime = explode("Duration: ", ob_get_contents());
- $arrayTime = explode('.', $arrayTime[1]);
- // Separar segundos, horas e minutos
- list($h, $m, $s) = explode(":", $arrayTime[0]);
- ob_end_clean();
- // Transformar horas,minutos,segundos em apenas segundos para resultado aleatorio
- $hms = ($h * 3600) + ($m * 60) + $s;
- // Pegar valor aleatório menor que o tempo do vídeo
- $rhms = rand(0, $hms);
- // Usar valor aleatório para transformar em tempo (menor que o tempo total de vídeo)
- $tempo = date('H:i:s', mktime(0,0,$rhms,0,0,0));
- // Chamar passthru. Agora para tirar screenshoot
- passthru("start ffmpeg -ss ". $tempo." -t 1 -s ". $resolucao ." -i ". $video." -f mjpeg tempdata.png -y");
- // ler conteúdo da imagem temporaria salva
- $lerImagem = file_get_contents("tempdata.png");
- // caso imagem for menor que 100 bytes pode significar que a screen shoot não foi tirada de forma correta
- if(strlen($lerImagem) < 100) {
- echo "Erro ao ler arquivo de vídeo";
- } else {
- // Caso ocorrer tudo certo. Definir tipo de arquivo para imagem
- header('Content-Type: image/png');
- // Escrever o conteúdo da imagem
- echo ($lerImagem) ;
- }
- // Deletar arquivo de imagem temporário
- unlink('tempdata.png');
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement