Я пытаюсь заставить ffmpeg работать с использованием PHP, в его самом основном формате, просто в качестве теста, прежде чем я буду развивать свой код дальше.
Однако я не могу заставить его работать и не получать сообщений об ошибках или указаний на то, что не так 🙁
я стараюсь:
echo exec("/usr/bin/ffmpeg -y -i /home/xxxxxx/public_html/videos/1746/0765916.avi /home/xxxxxx/public_html/videos/1746/test.mp4");
это создает файл 0kb, но больше ничего 🙁
я не получаю сообщение об ошибке (или что-нибудь еще!)
(у меня включен error_reporting и ничего не отображается в журналах браузера или сервера)
если я добавлю ниже, чтобы получить доступные кодеки:
echo exec("ffmpeg -formats");
это только выводит «хуже».
У меня нет доступа к командной строке, так как я использую общий хостинг-сервер.
У меня был хост, запускающий вышеизложенное из командной строки, и они говорят, что в нем написано «кодек не найден» или слова на этот счет.
Есть ли способ я могу получить любую ошибку вывода в мой файл php, чтобы я мог видеть, что происходит.
Также, как мне установить кодеки, если это проблема (хост установит их, но упомянул, что они никогда не устанавливали кодек на Linux-систему, поэтому был бы признателен, если бы я мог указать им и любую информацию об установке)
Заранее спасибо!
РЕДАКТИРОВАТЬ:
после добавления в код, который предлагает @stewe, это вывод при попытке конвертировать в mp4
(Я могу преобразовать в другие форматы в порядке)
FFmpeg version SVN-r0.5.10-4:0.5.10-1, Copyright (c) 2000-2009 Fabrice
Bellard, et al. configuration: --extra-version=4:0.5.10-1
--prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable-libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad --enable-libdc1394 --enable-shared --disable-static libavutil 49.15. 0 / 49.15. 0 libavcodec 52.20. 1 / 52.20. 1 libavformat 52.31. 0 /
52.31. 0 libavdevice 52. 1. 0 / 52. 1. 0 libavfilter 0. 4. 0 / 0. 4. 0 libswscale 0. 7. 1 / 0. 7. 1 libpostproc 51. 2. 0 / 51. 2. 0 built on
Feb 16 2013 10:07:01, gcc: 4.4.5 Input #0, avi, from
'/home/xxxxx/public_html/videos/1746/0765916.avi':
Duration: 00:01:37.56, start: 0.000000, bitrate: 868 kb/s Stream #0.0:
Video: mpeg4, yuv420p, 480x272 [PAR 1:1 DAR 30:17], 25 tbr, 25 tbn, 25
tbc Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s Output
#0, mp4, to '/home/xxxxx/public_html/videos/1746/test.mp4':
Stream #0.0: Video: mpeg4, yuv420p, 480x272 [PAR 1:1 DAR 30:17],
q=2-31, 200 kb/s, 90k tbn, 25 tbc Stream #0.1: Audio: 0x0000, 48000
Hz, stereo, s16, 64 kb/s Stream mapping: Stream #0.0 -> #0.0 Stream
#0.1 -> #0.1 [mpeg4 @ 0x9fb7880]removing common factors from framerate Unsupported codec for output stream #0.1
Если кто-то может помочь, как решить эту проблему, так как в идеале я хотел бы преобразовать в mp4
Вы получите полный вывод, как это:
echo shell_exec("ffmpeg -formats 2>&1");
2>&1
part перенаправляет stderr в stdout, поэтому вы также получаете сообщения об ошибках.
Разработка FFmpeg очень активный, но вы используете версию SVN-r0.5.10-4: 0.5.10-1. Это невероятно старо и не поддерживается проектом FFmpeg.
Бьюсь об заклад, как только вы получите последнюю версию, она будет работать как положено. Обратите внимание, что после обновления, если ваша новая сборка поддерживает libx264, она будет кодировать видео H.264 для вывода MP4. Ваша текущая гериатрическая сборка выводит видео MPEG-4 Part 2.
Обратите внимание, что вы не можете просто «установить кодек» и ожидать, что FFmpeg будет работать. Вот несколько способов обновления:
Скачать сборку ffmpeg
. Направьте свой сценарий на это. Просто и легко.
компилировать ffmpeg
. Обратитесь к пошаговому руководству по компиляции. Должен работать на общих серверах, если они предоставляют надлежащие пакеты, необходимые для компиляции (gcc
а также make
минимум).
Попросите вашего хоста обновить. Они могут или не могут знать, как это сделать, или они могут предоставить только другую древнюю сборку.