sh: ffmpeg: команда не найдена при запуске команды через php

Я установил успешно установленную FFMpeg в корневую часть моего компьютера Centos 6 ( https://trac.ffmpeg.org/wiki/CompilationGuide/Centos ).

На моем рабочем месте apache / php есть / var / www / html

Теперь я успешно выполняю команду ниже в каталоге / var / www / html для захвата фрейма из видеофайла. Он захватывает рамку.

[root@localhost html]# ffmpeg -i video.mpg -an -ss 30 -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg -s 160x100 frame8 2>&1 

Я хочу запустить эту команду через php и использовать функции shell_exec () или exec () php. Мой PHP-код для запуска команды:

 $cmd = "/root/bin/ffmpeg -i /project/app/webroot/videos/video.mpg -ss 00:00:14.435 -f image2 -vframes 1 /project/app/webroot/videothumbnails/example-thumb.jpg"; $locale = 'en_IN.UTF-8'; setlocale(LC_ALL, $locale); putenv('LC_ALL='.$locale); echo shell_exec($cmd); 

Когда я пытаюсь запустить команду через выше php-код, я становлюсь ниже ошибки:

 sh: ffmpeg: command not found 

Пожалуйста, помогите мне решить эту проблему.

Для создания видео Thumbnail мы используем ffmpeg.

В Linux Systems (centos 6.x) процесс установки Ffmpeg и пример Php: –

Этот процесс выполняется в моем centos 6 и создает эскизы с использованием php.

Шаг 1: – Проверьте, существует ли какой-либо существующий ffmpeg или нет на вашем Linux-сервере. Если доступно, удалите эти файлы.

Шаг 2: – Для новой установки ffmpeg следуйте этой ссылке
http://root.uabid.com/compile-ffmpeg-on-centos-6-x/ .

Шаг 3: – После завершения установки проверьте, где установлен ваш ffmpeg.

Команда: whereis ffmpeg

введите эту команду в командной строке linux и проверьте. Например, ваш путь ffmpeg в (/ usr / local / bin / ffmpeg). Используйте этот путь в своем коде.

Php Пример: –

 <?php if($extension === 'mp4' OR $extension == 'MP4' ) { $video = $timestamp.$imagename; $videoname=substr($imagename,0, -4).$timestamp; $image = "sites/default/files/content_images/{$videoname}-thumb.jpg"; var_dump($video); $cmd = "/usr/local/bin/ffmpeg -i /opt/lampp/htdocs/myproject/sites/default/files/content_videos/".$video." -ss 00:00:01.435 -f image2 -vframes 1 /opt/lampp/htdocs/myproject/sites/default/files/content_images/".$videoname."- thumb.jpg"; $cmdstr = $cmd; $locale = 'en_IN.UTF-8'; setlocale(LC_ALL, $locale); putenv('LC_ALL='.$locale); echo exec($cmd); ?> 

Процесс 2: – Это для статических путей файла:

 <?php $cmd = "/root/bin/ffmpeg -i /var/www/html/project/app/webroot/videos/example.mp4 -ss 00:00:01.435 -f image2 -vframes 1 /var/www/html/project/app/webroot/videothumbnails/example-thumb.jpg"; $cmdstr = $cmd; $locale = 'en_IN.UTF-8'; setlocale(LC_ALL, $locale); putenv('LC_ALL='.$locale); echo exec($cmd); ?> 

Надеюсь, это поможет вам и другим.

Попробуйте использовать, чтобы найти двоичный файл ffmpeg. По крайней мере, на Linux-узлах Ubuntu / Debian, which команда должна быть доступна по умолчанию. which возвращает путь к предпочтительному исполняемому файлу любого доступного приложения. Например, which php должен вернуть исполняемый файл установки PHP, который по умолчанию используется для операций CLI. Поэтому which ffmpeg должен возвращать системное местоположение по умолчанию для установки ffmpeg.

 <?php // shell_exec returns the command output or null on error/empty output. $ffmpeg_path = shell_exec('which ffmpeg'); if ($ffmpeg_path != null) { shell_exec($ffmpeg_path . ' -i file.mpg --snip--'); } 

Также убедитесь, что пользователь Linux, работающий с PHP-скриптом, имеет доступ к ffmpeg (например, $ chmod +x ffmpeg ). Если $ sudo which ffmpeg возвращает путь, но $ which ffmpeg не делает, попробуйте переустановить ffmpeg для желаемого пользователя или поиграть с разрешениями.

EDIT: используйте осторожность, с which однако, неизвестно, может ли взломщик заменить исполняемый файл ffmpeg чем-то вредоносным (что приводит к тому, что указанный выше скрипт PHP работает неправильно).