FFMPEG - нулевой размер файла при включенном звуке
-
03-07-2019 - |
Вопрос
У меня возникли несколько проблем с преобразованием видеофайлов из командной строки с помощью FFMPEG.Я использую сервер CentOS, но, к сожалению, у меня нет доступа к командной строке.
Когда я подавляю звук с помощью следующей команды, все работает отлично (за исключением, конечно, отсутствия звука!).
ffmpeg -i $infile -an test.flv
Однако, когда я пытаюсь включить звук в Любой вообще говоря, размер выводимого файла равен нулю КБ.
FFMPEG скомпилирован с поддержкой libmp3lame и libfaac, и установлены необходимые кодеки.Вот конфигурация FFMPEG на сервере:
Версия FFmpeg SVN-Runnknown, Авторское право (c) 2000-2007 Фабрис Беллард и др.конфигурация:--префикс=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --включить-libmp3lame --включить-libogg --включить-libvorbis --включить-libogg --включить-libtheora --включить-libfaad --включить-libfaac --включить-libgsm --включить-xvid --включить-x264 --включить-liba52 --включить-liba52bin --включить-pp --включить-общий --включить-pthreads --включить-gpl --отключить-strip
Вот очень небольшой пример некоторых команд, которые я пробовал, которые приводят к размеру файла 0 КБ:
ffmpeg -i $infile test.flv
ffmpeg -i $infile -vcodec copy -acodec ac3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec mp3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec copy $outfile
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec aac $outfile
Если кто-нибудь может дать какие-либо подсказки о том, что здесь происходит, я был бы очень признателен!
Редактировать - вот результат, когда я перенаправляю stderr в файл
Версия FFmpeg SVN-Runnknown, Авторское право (c) 2000-2007 Фабрис Беллард и др.конфигурация:--префикс=/usr --libdir=/usr/lib --mandir=/usr/share/man --incdir=/usr/include/ffmpeg --включить-libmp3lame --включить-libogg --включить-libvorbis --включить-libogg --включить-libtheora --включить-libfaad --включить-libfaac --включить-libgsm --включить-xvid --включить-x264 --включить-liba52 --включить-liba52bin --включить-pp --включить-shared --включить- pthreads --включить-gpl --отключить-удалить версию libavutil:49.4.0 версия libavcodec:51.40.4 версия libavformat:51.12.1 добавлено 4 июня 2007 г. 11:02:12, gcc:4.1.1 20070105 (Красная шляпа 4.1.1-52)
Ввод #0, mov, mp4, m4a, 3gp, 3g2, mj2, из '/path/to/7b4e37e703ce0a104f027cb9125b1a19.mp4':Продолжительность:00:00:32.4, начало:0.000000, битрейт:поток 122 кб/с #0.0 (jpn):Видео:h263, yuv420p, 176x144, 29.97 кадров в секунду (r) Поток #0.1 (jpn):Аудио:samr / 0x726D6173, 8000 Гц, моно
Вывод #0, flv, в '/path/to/test.flv':Поток #0.0:Видео:flv, yuv420p, 176x144, q=2-31, 200 кб/с, 29.97 кадров в секунду (c) Поток #0.1:Аудио:mp3, 8000 Гц, моно, 64 КБ /с Отображение потоков:Поток #0.0 -> #0.0 Поток #0.1 -> #0.1
Неподдерживаемый кодек (id=73728) для входного потока #0.1
Решение
Какой у вас доступ к серверу - у вас должна быть какая-то возможность запускать на нем команды.
В таком случае, каков вывод ошибки из ffmpeg
?
Возможно, подходящий подробный аргумент рассказал бы вам больше об этой проблеме?
Редактировать:
Давайте посмотрим, сможем ли мы получить вывод stderr.Бежать:
ffmpeg -version
И посмотрите, сможете ли вы получить какой-нибудь результат для этого.Как только вам удастся извлечь некоторые выходные данные stderr, мы сможем исследовать исходную проблему.
Редактировать:
Так что, похоже, ты проигрываешь stderr
- теперь тебе нужно придумать, как его извлечь.
Может быть:
ffmpeg -version 2>&1
сработает ли?
Редактировать:
Как мы к чему-то приближаемся - входной аудиокодек не поддерживается:
Unsupported codec (id=73728) for input stream #0.1
Я не знаю, что Stream #0.1(jpn): Audio: samr / 0x726D6173, 8000 Hz, mono
есть.
Но есть и твоя проблема.
Я предполагаю, что вы, возможно, захотите провести расследование в локальной системе Linux - возможно, так будет легче выявить проблемы.
Редактировать:
От http://www.nabble.com/Convert-3gp-samr-file-td20514476.html похоже, что ffmpeg может быть скомпилирован с поддержкой --enable-libamr-nb
--enable-libamr-wb
.
Является перекомпиляцией ffmpeg
есть вариант?
Другие советы
Я решил эту проблему. Вот мой код:
<?php
define('FFMPEG_LIBRARY', '/usr/local/bin/ffmpeg');
$exec_string = FFMPEG_LIBRARY.' -i robot.avi -an output.flv';
exec($exec_string); //where exec is the command used to execute shell command in php
?>