Видео, преобразованное в FLV с использованием FFMPEG, получает размер 0 - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь конвертировать AVI файл в формат FLV, используя FFMPEG на сервере, но это вызывает у меня проблемы. При преобразовании файл преобразуется в формат flv, но без данных (файл размером 0 КБ). Пробовал отлаживать код но не смог. FFMPEG установлен в CentOS, в пути / usr / bin / ffmpeg, и я использую следующую команду для преобразования:

$srcFile = "/home/mydomain/public_html/demo/test/sample.avi";
$destFile = "/home/mydomain/public_html/demo/test/sample_again.flv";

$ffmpegPath = "/usr/bin/ffmpeg";
$flvtool2Path = "/usr/local/bin/flvtool2";

$command = $ffmpegPath . " -y -i " . $srcFile .  " -ar 32000 -ab 32000 -f flv -s 320x240 ".
$destFile . " | " . $flvtool2Path . " -U stdin " . $destFile;

exec($command, $output);
print_r($output);

Я пытался сделать:

exec("which ffmpeg");

И он дал мне путь / usr / bin / ffmpeg, но при выполнении кода я получил следующую ошибку:

Array ( 
[0] => ERROR: undefined method `timestamp' for nil:NilClass 
[1] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flv/stream.rb:285:in `lasttimestamp' 
[2] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flv/stream.rb:274:in `duration' 
[3] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:181:in `add_meta_data_tag' 
[4] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:137:in `update' 
[5] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:47:in `send' 
[6] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:47:in `execute!' 
[7] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:46:in `each' 
[8] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:46:in `execute!' 
[9] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:206:in `process_files' 
[10] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2/base.rb:44:in `execute!' 
[11] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2.rb:168:in `execute!' 
[12] => ERROR: /usr/local/cpffmpeg/lib/ruby/site_ruby/1.8/flvtool2.rb:228 
[13] => ERROR: /usr/local/bin/flvtool2:2:in `require' 
[14] => ERROR: /usr/local/bin/flvtool2:2 
) 

В чем может быть проблема. Это проблема Flvtool2, если да, то что это. Пожалуйста, предложите что-нибудь

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

Не похоже, что что-то действительно проходит через трубу. Ваша командная строка ffmpeg указывает фактический выходной файл вместо - ( т.е. , STDOUT), поэтому ffmpeg записывает видео в файл, а затем flvtool пытается прочитать из STDIN, который не имеет видео.

0 голосов
/ 10 ноября 2011

Можете ли вы var_dump ($ command) затем запустить эту команду в оболочке (как пользователь, под которым работает apache)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...