Php ffmpeg exec

С кодом

$a = exec('"ffmpeg" -y -i "test.mp4" -ab 128k -s 640x480 -vcodec mpeg4 -acodec:a copy "output.mp4" 2>&1 ', $output, $error);

Входной файл был 82.21 МБ, выходной файл был 13,74 МБ

Выходной файл генерируется, но качество видео очень низкое, и на мобильном устройстве видео не отображается, только воспроизводится звук

Может кто-нибудь, пожалуйста, помогите мне с правильной командой ffmpeg для преобразования видеофайла, чтобы выходной файл был с разрешением 640*480, звуком 128Kbps, выходной файл должен быть MP4 контейнерный видеокодек H.264 Аудиокодек AAC

Спасибо шилпа

используя libx264 получил ошибку, которая говорит

 [52] => Stream mapping:
    [53] =>   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    [54] =>   Stream #0:1 -> #0:1 (aac (native) -> aac (libfdk_aac))
    [55] => Error while opening decoder for input stream #0:0 : Resource temporarily unavailable

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

ffmpeg-php version  0.6.0-svn
ffmpeg-php built on     Oct 30 2014 22:27:42
ffmpeg-php gd support   enabled
ffmpeg libavcodec version   Lavc52.72.2
ffmpeg libavformat version  Lavf52.64.2
ffmpeg swscaler version     SwS0.11.0

Directive   Local Value Master Value
ffmpeg.allow_persistent 0   0
ffmpeg.show_warnings    0   0

1 ответ

Некоторая действительно хорошая информация о кодировке h264 здесь: https://trac.ffmpeg.org/wiki/Encode/H.264

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

Пытаться:

ffmpeg -i test.mp4 -vf scale=640:480 -c:v libx264 -c:a libfdk_aac -ab 128k out.mp4

Если это работает для вас, вы можете изменить настройки кодирования для libx264, используя параметры в ссылке выше. Вы также можете изменить свой аудио кодек, если это поможет.

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