ffmpeg mp4 и файлы webm сохраняются в стандартную папку, но только webm в подключенную папку

Поэтому я запускаю команду ffmpeg на моем сервере Linux с помощью команды php exec:

exec("(nohup nice -n 19 " . $ffmpegPath . " -y -i " . $srcFile . " -f mp4 -pass 1 -passlogfile " . $video_pass_log . " -vcodec libx264 -cpu-used 0 -threads 1 -profile:v baseline -vf \"movie=/var/www/vhosts/examplesite.com/httpdocs/images/ae-ffmpeg.png [logo]; [in] scale=".$srcWidth.":floor(ow*(".$srcWidth."/ow)/dar/hsub)*hsub+2[scale]; [scale][logo] overlay=main_w-overlay_w-1:main_h-overlay_h-1 [out]\" ".$options." -r 25 -g 25 -keyint_min 25 -b:v ".$bitrate."k -an " . $destFile . ".mp4 && " . $ffmpegPath . " -y -i " . $srcFile . " -f mp4 -pass 2 -passlogfile " . $video_pass_log . " -vcodec libx264 -cpu-used 0 -threads 1 -profile:v baseline -ac 2 -ab 128k -vf \"movie=/var/www/vhosts/examplesite.com/httpdocs/images/ae-ffmpeg.png [logo]; [in] scale=".$srcWidth.":floor(ow*(".$width."/ow)/dar/hsub)*hsub+2[scale]; [scale][logo] overlay=main_w-overlay_w-1:main_h-overlay_h-1 [out]\" ".$options." -r 25 -g 25 -keyint_min 25 -b:v ".$bitrate."k " . $destFile . ".mp4 && " . $mp4boxpath . " -tmp /tmp -isma -inter 500 " . $destFile . ".mp4 && rm -f " . $video_pass_log . "* && " . $ffmpegPath . " -y -i " . $srcFile . "  -vcodec libvpx -cpu-used 0 -threads 1 -acodec libvorbis -vf \"movie=/var/www/vhosts/examplesite.com/httpdocs/images/ae-ffmpeg.png [logo]; [in] scale=".$srcWidth.":floor(ow*(".$srcWidth."/ow)/dar/hsub)*hsub+2[scale]; [scale][logo] overlay=main_w-overlay_w-1:main_h-overlay_h-1 [out]\" ".$options." -ac 2 -ab 128k -r 25 -g 25 -keyint_min 25 -b:v ".$bitrate."k -f webm " . $destFile . ".webm) > /dev/null 2>/dev/null &");

Я вполне уверен, что команда ffmpeg exec подойдет, потому что странная вещь в том, что если я изменю путь назначения преобразованного видео на "нормальную" папку на моем веб-сайте, то оба файла сохранятся, что хорошо, но затем, когда я изменю путь к месту, где у меня есть подключенная папка, сохранится только файл webm.

Моя обычная папка находится по адресу http://examplesite.com/tmp/ а моя подключенная папка - http://examplesite.com/files/

Довольно странно, что у webm-видео нет проблем с сохранением в смонтированную папку, а с mp4-видео... и, как я уже сказал, оба файла сохраняются в папке 'tmp'

Разрешения как для обычных, так и для смонтированных папок установлены в 777 для целей тестирования, а папки для смонтированных дисков - такими же, как и для всех других папок на моем сайте.

Любые идеи о том, как я могу это исправить?

1 ответ

Решение

После попытки выполнить команду exec с двумя пропущенными командами pass и mp4 все заработало нормально. Затем я попробовал два прохода, задаваясь вопросом, была ли это проблема с файлом журнала проходов, и это тоже сработало. Очевидно, что именно MP4Box вызвал проблему. После некоторого чтения я узнал, что MP4Box не будет сохранять из одного раздела в другой.

ВНИМАНИЕ: MP4Box может создать файл в этом временном каталоге, а затем переименовать его в выходное имя. Если конечная папка назначения и временная папка не находятся в одном и том же разделе диска, MP4Box не сможет переименовать файл. Это относится ко всем операциям редактирования, использующим существующий входной файл и сохраняющим результат в этот же файл (без использования ключа -out для указания другого выходного имени файла).

Источник: http://gpac.wp.mines-telecom.fr/mp4box/mp4box-documentation/

Папка tmp, которую я использовал для двухпроходной команды ffmpeg, а также MP4Box, находилась в другом разделе, чем моя конечная папка назначения.

Другие вопросы по тегам