Пример кода FFMPEG-PHP

Может кто-нибудь помочь мне. Я хочу преобразовать видеофайл в FLV, используя php и ffmpeg. Я попробовал некоторые из существующих решений в stackoverflow, но безуспешно.

exec('ffmpeg -i Videos/robot.avi -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 Videos/robot.flv');

Это мой код, когда я его выполняю, ничего не происходит.


person Tonderai Ratisai    schedule 03.06.2011    source источник


Ответы (3)


Я предполагаю, что ваша команда ffmpeg работает из CLI OK. Если нет, сначала заставьте это работать.

Если вы пытаетесь вывести FLV, созданный на лету с помощью PHP и ffmpeg, попробуйте следующее:

<?php
  header("video/x-flv");
  passthru('ffmpeg -i Videos/robot.avi -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 Videos/robot.flv');
?>

#### РЕДАКТИРОВАТЬ #####

Вот ссылка на документацию ffmpeg, в которой говорится об использовании STDOUT: http://www.ffmpeg.org/ffmpeg-doc.html#TOC41

Я думаю, вы должны быть в состоянии сделать это:

<?php
  header("video/x-flv");
  passthru('ffmpeg -i Videos/robot.avi -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 -f flv pipe:');
?>
person Teddy    schedule 03.06.2011
comment
Привет спасибо за ответ. Я попробовал код: exec('ffmpeg -i Videos/robot.avi -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 Videos/robot.flv'); использую php, но ничего не происходит. Файл не конвертируется. Я не знаю, является ли passthru функцией. Я очень надеюсь, что вы можете мне помочь. - person Tonderai Ratisai; 05.06.2011
comment
passthru() и exec() — почти одно и то же, за исключением того, что passthru() возвращает результаты выполненной вами команды. - person Teddy; 07.06.2011
comment
Кроме того, вы должны изменить свою команду для вывода FLV в STDOUT вместо записи в файл. - person Teddy; 07.06.2011
comment
Википедия может объяснить: en.wikipedia.org/wiki/ - person Teddy; 08.06.2011
comment
STDOUT похож на то, что выводит команда. Вместо того, чтобы записывать FLV в файл, он может просто выводить необработанные данные. Вы хотите, чтобы b/c вам нужно было отправлять необработанные данные через PHP в веб-браузер. - person Teddy; 08.06.2011
comment
Еще раз спасибо за ответ. Изучаем STDOUT, пока мы говорим. Мог бы я внедрить STDOUT с моим существующим кодом? Благодарность - person Tonderai Ratisai; 09.06.2011
comment
Недавно я попробовал более простую команду exec: exec('ffmpeg -i Videos/test.avi Videos/test.flv'); Это все еще не может конвертировать видео. Пожалуйста помоги. Спасибо. - person Tonderai Ratisai; 13.06.2011

Посмотрите на этот пример: https://trac.ffmpeg.org/wiki/PHP

Вы должны сначала запустить его в своем CLI, прежде чем писать PHP-скрипт.

После прочтения примера кажется, что вы хотите использовать

shell_exec("insert ffmpeg command here");

Вот php-класс ffmpeg, который может быть полезен:

https://github.com/olaferlandsen/FFmpeg-PHP-Class

person Evan Butler    schedule 26.10.2015

Мне нужно было «sudo», чтобы запустить его на моей локальной машине. Для видео/x-flv вам нужно: «Тип контента: видео/x-flv». Мой код:

<?php

    header("Content-Type: video/x-flv");
    passthru('sudo ffmpeg -i Videos/robot.avi -ab 96k -b 700k -ar 44100 -s 640x480 -acodec mp3 -f flv pipe:');

?>
person nvrandow    schedule 25.08.2013