ПОСЛЕ PHP-FFMpeg не конвертируется (ошибка с ffmpeg)

Я установил ffmpeg на стороне сервера со всеми зависимостями, обновил его. А затем установил PHP-FFMpeg с помощью Composer. Протестировано, что ffmpeg установлен с ssh conexion.

root@host [/opt/ffmpeg]# ffmpeg
ffmpeg version N-81322-ge8b355a Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --disable-yasm
libavutil      55. 28.100 / 55. 28.100
libavcodec     57. 51.100 / 57. 51.100
libavformat    57. 46.100 / 57. 46.100
libavdevice    57.  0.102 / 57.  0.102
libavfilter     6. 51.100 /  6. 51.100
libswscale      4.  1.100 /  4.  1.100
libswresample   2.  1.100 /  2.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options]     outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

Но когда я пытаюсь преобразовать видеофайл с помощью php-скрипта, это приводит к очень длинной ошибке.
PHP-код:

<?PHP
include($_SERVER['DOCUMENT_ROOT']."/vendors/install/vendor/autoload.php");
$ffmpeg = FFMpeg\FFMpeg::create();
$video = $ffmpeg->open($_SERVER['DOCUMENT_ROOT'].'/resources/uploads/96048/ffd3c5e349fa5745159deef163b5c253.wmv');
$video
->filters()
->synchronize();
$format = new FFMpeg\Format\Video\X264();
$format->on('progress', function ($video, $format, $percentage) {
echo "$percentage % transcoded";});
$video
->save($format,$_SERVER['DOCUMENT_ROOT'].'/resources/uploads/96048/ffd3c5e349fa5745159deef163b5c253.mp4');
?>

Ошибка отображается:

<b>Fatal error</b>:  Uncaught exception 'Alchemy\BinaryDriver\Exception\ExecutionFailureException' with message 'ffmpeg failed to execute command '/usr/local/bin/ffmpeg' '-y' '-i' '/home/user/working/resources/uploads/23097/2efeb41a1a7085a1dbd469c4895ac23e.wmv' '-async' '1' '-metadata:s:v:0' 'start_time=0' '-threads' '12' '-vcodec' 'libx264' '-acodec' 'libfaac' '-b:v' '1000k' '-refs' '6' '-coder' '1' '-sc_threshold' '40' '-flags' '+loop' '-me_range' '16' '-subq' '7' '-i_qfactor' '0.71' '-qcomp' '0.6' '-qdiff' '4' '-trellis' '1' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes57ad320a1b685j794u/pass-57ad320a1b716' '/home/user/working/resources/uploads/23097/2efeb41a1a7085a1dbd469c4895ac23e.mp4'' in /home/user/working/vendors/install/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php:100↵Stack trace:↵#0 /home/user/working/vendors/install/vendor/alchemy/binary-driver/src/Alchemy/BinaryDriver/ProcessRunner.php(72): Alchemy\BinaryDriver\ProcessRunner-&gt;doExecutionFailure(''/usr/bin/ffmpe...')↵#1 / in <b>/home/user/working/vendors/install/vendor/php-ffmpeg/php-ffmpeg/src/FFMpeg/Media/Video.php</b> on line <b>168</b><br />↵"

Затем я взял основной код, отображаемый вверх, и запустил его напрямую через ssh.

'/usr/local/bin/ffmpeg' '-y' '-i' '/home/user/working/resources/uploads/23097/2efeb41a1a7085a1dbd469c4895ac23e.wmv' '-async' '1' '-metadata:s:v:0' 'start_time=0' '-threads' '12' '-vcodec' 'libx264' '-acodec' 'libfaac' '-b:v' '1000k' '-refs' '6' '-coder' '1' '-sc_threshold' '40' '-flags' '+loop' '-me_range' '16' '-subq' '7' '-i_qfactor' '0.71' '-qcomp' '0.6' '-qdiff' '4' '-trellis' '1' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes57ad320a1b685j794u/pass-57ad320a1b716' '/home/user/working/resources/uploads/23097/2efeb41a1a7085a1dbd469c4895ac23e.mp4'

И вот ответ, который я получаю:

ffmpeg version N-81322-ge8b355a Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
configuration: --disable-yasm
libavutil      55. 28.100 / 55. 28.100
libavcodec     57. 51.100 / 57. 51.100
libavformat    57. 46.100 / 57. 46.100
libavdevice    57.  0.102 / 57.  0.102
libavfilter     6. 51.100 /  6. 51.100
libswscale      4.  1.100 /  4.  1.100
libswresample   2.  1.100 /  2.  1.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, asf, from '/home/user/working/resources/uploads/23097/2efeb41a1a7085a1dbd469c4895ac23e.wmv':
Metadata:
SfOriginalFPS   : 299700
WMFSDKVersion   : 11.0.6001.7000
WMFSDKNeeded    : 0.0.0.0000
comment         : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
title           : Wildlife in HD
copyright       : © 2008 Microsoft Corporation
IsVBR           : 0
DeviceConformanceTemplate: AP@L3
Duration: 00:00:30.09, start: 0.000000, bitrate: 6977 kb/s
Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, 2 channels, fltp, 192 kb/s
Stream #0:1(eng): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1280x720, 5942 kb/s, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc
Unknown encoder 'libx264'

Мой вопрос, что делать дальше? Я потратил впустую 3 дня, чтобы сделать эту работу, и это самое дальнее, что я пришел. Как я могу проверить, установлен ли libx264 corecly? И если он не установлен corectly, как Cand я переустановить или заставить его работать?

После нескольких модификаций

Я использовал уже установленный ffmpeg и удалил несколько команд (которые по умолчанию были одинаковыми), и на этот раз я использовал только командную строку.

Запрос

'/home/user/working/vendors/install/ffmpeg-git-20160813-64bit-static/ffmpeg' '-y' '-i' '/home/user/working/resources/uploads/96048/ffd3c5e349fa5745159deef163b5c253.wmv' '-async' '1' '-metadata:s:v:0' 'start_time=0' '-vcodec' 'libx264' '-c:a' 'aac' '-b:v' '1000k' '-b:a' '128k' '-pass' '1' '-passlogfile' '/tmp/ffmpeg-passes57b053ce14a12ljm8a/pass-57b053ce14ad3' '/home/user/working/resources/uploads/96048/ffd3c5e349fa5745159deef163b5c253.mp4'

Новый результат:

ffmpeg version N-81328-gceab04f-static http://johnvansickle.com/ffmpeg/  Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 5.4.1 (Debian 5.4.1-1) 20160803
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --enable-libass --enable-gnutls --enable-libvidstab --enable-libsoxr --enable-frei0r --enable-libfribidi --disable-indev=sndio --disable-outdev=sndio --enable-librtmp --enable-libmfx --enable-libzimg --cc=gcc-5
libavutil      55. 28.100 / 55. 28.100
libavcodec     57. 51.102 / 57. 51.102
libavformat    57. 46.101 / 57. 46.101
libavdevice    57.  0.102 / 57.  0.102
libavfilter     6. 51.100 /  6. 51.100
libswscale      4.  1.100 /  4.  1.100
libswresample   2.  1.100 /  2.  1.100
libpostproc    54.  0.100 / 54.  0.100
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, asf, from '/home/user/working/resources/uploads/96048/ffd3c5e349fa5745159deef163b5c253.wmv':
Metadata:
SfOriginalFPS   : 299700
WMFSDKVersion   : 11.0.6001.7000
WMFSDKNeeded    : 0.0.0.0000
comment         : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
title           : Wildlife in HD
copyright       : © 2008 Microsoft Corporation
IsVBR           : 0
DeviceConformanceTemplate: AP@L3
Duration: 00:00:30.09, start: 0.000000, bitrate: 6977 kb/s
Stream #0:0(eng): Audio: wmav2 (a[1][0][0] / 0x0161), 44100 Hz, 2 channels, fltp, 192 kb/s
Stream #0:1(eng): Video: vc1 (Advanced) (WVC1 / 0x31435657), yuv420p, 1280x720, 5942 kb/s, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc
-async is forwarded to lavfi similarly to -af aresample=async=1:min_hard_comp=0.100000:first_pts=0.
[libx264 @ 0x442f5c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x442f5c0] ratecontrol_init: can't open stats file
Output #0, mp4, to '/home/user/working/resources/uploads/96048/ffd3c5e349fa5745159deef163b5c253.mp4':
Metadata:
SfOriginalFPS   : 299700
WMFSDKVersion   : 11.0.6001.7000
WMFSDKNeeded    : 0.0.0.0000
comment         : Footage: Small World Productions, Inc; Tourism New Zealand | Producer: Gary F. Spradling | Music: Steve Ball
title           : Wildlife in HD
copyright       : © 2008 Microsoft Corporation
IsVBR           : 0
DeviceConformanceTemplate: AP@L3
Stream #0:0(eng): Unknown: none
Metadata:
start_time      : 0
encoder         : Lavc57.51.102 libx264
Stream #0:1(eng): Unknown: none
Metadata:
encoder         : Lavc57.51.102 aac
Stream mapping:
Stream #0:1 -> #0:0 (vc1 (native) -> h264 (libx264))
Stream #0:0 -> #0:1 (wmav2 (native) -> aac (native))
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

0

Решение

Ваш ffmpeg не был скомпилирован для поддержки кодирования через libx264: он отсутствует --enable-gpl --enable-libx264 в строке конфигурации. Самый простой способ это скачать уже скомпилированный ffmpeg двоичный и укажите свой сценарий на это.

Другие вещи

Ваш ffmpeg имеет --disable-yasm, Это плохо и замедлит процесс.

Ваша команда беспорядок и выглядит как-то с 2006 года. Вы должны использовать пресеты кодирования x264 вместо того, чтобы пытаться объявить легион вариантов. Удалить -refs, -coder, -sc_threshold, -flags +loop, -me_range, -subq, -i_qfactor, -qcomp, -qdiff, а также -trellis потому что они автоматически обрабатываются по умолчанию.

Лучше позволить этому кодировщику автоматически выбирать соответствующее количество потоков, поэтому удалите -threads 12,

Говорят, что поддержка libfaac будет удалена из FFmpeg. Ваша команда использует -acodec libfaac но твой ffmpeg не был скомпилирован для поддержки. Есть лучшие альтернативы, такие как libfdk_aac или нативный кодировщик FFmpeg AAC (-c:a aac).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]