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, используя параметры в ссылке выше. Вы также можете изменить свой аудио кодек, если это поможет.