FFMPEG - нулевой размер файла при включенном звуке - PullRequest
2 голосов
/ 06 марта 2009

У меня возникли проблемы с преобразованием видеофайлов из командной строки с использованием FFMPEG. Я использую сервер CentOS, но, к сожалению, у меня нет доступа к оболочке.

Когда я подавляю звук с помощью следующей команды, все работает отлично (кроме, конечно, звука нет!)

ffmpeg -i $infile -an test.flv

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

FFMPEG скомпилирован с поддержкой libmp3lame и libfaac, и необходимые кодеки установлены. Вот конфигурация FFMPEG на сервере:

FFmpeg версия SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. конфигурация: --prefix = / usr --libdir = / usr / lib --mandir = / usr / share / man --incdir = / usr / include / ffmpeg --enable-libmp3lame --enable-libogg --enable- libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable- pp --enable-shared --enable-pthreads --enable-gpl --disable-strip

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

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-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. конфигурация: --prefix = / usr --libdir = / usr / lib --mandir = / usr / share / man --incdir = / usr / include / ffmpeg --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libogg - enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable-pp --enable-shared - enable-pthreads --enable-gpl --disable-strip версия libavutil: 49.4.0 версия libavcodec: 51.40.4 версия libavformat: 51.12.1 построена 4 июня 2007 г. 11:02:12, gcc: 4.1.1 20070105 (красный Hat 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) Stream # 0.1: Аудио: mp3, 8000 Гц, моно, 64 кбит / с Отображение потока: Поток # 0.0 -> # 0.0 Поток # 0.1 -> # 0.1

Неподдерживаемый кодек (id = 73728) для входного потока # 0.1

Ответы [ 2 ]

4 голосов
/ 06 марта 2009

Какой у вас доступ к серверу - у вас должна быть возможность запускать команды на нем.

В таком случае, какая ошибка выводится из ffmpeg?

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

EDIT:

Давайте посмотрим, сможем ли мы получить вывод stderr. Run:

ffmpeg -version 

И посмотри, сможешь ли ты получить какой-нибудь вывод для него. После того, как вам удалось извлечь какой-либо вывод stderr, мы можем исследовать исходную проблему.

EDIT:

Похоже, вы теряете stderr - теперь вам нужно решить, как его получить.

Может быть:

ffmpeg -version 2>&1

будет работать?

EDIT:

Как мы к чему-то пришли - входной аудиокодек не поддерживается:

Unsupported codec (id=73728) for input stream #0.1

Я не знаю, что такое Stream #0.1(jpn): Audio: samr / 0x726D6173, 8000 Hz, mono.

Но вот в чем проблема.

Я полагаю, что вы, возможно, захотите исследовать локальную коробку Linux - может быть легче увидеть проблемы.

EDIT:

С http://www.nabble.com/Convert-3gp-samr-file-td20514476.html похоже, что ffmpeg может быть скомпилирован с поддержкой --enable-libamr-nb --enable-libamr-wb.

Является ли перекомпиляция ffmpeg опцией?

0 голосов
/ 23 июля 2009

Я решил эту проблему. Вот мой код:

<?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
?>
...