convert using ffmpeg without exec

2019-02-11 03:27发布

I have Windows XP, Apache, PHP 5.3 and ffmpeg working fine. I need to convert flv to avi or vice versa without using the exec() command. Is this possible?

Thank you.

edit : i hope someone could edit the ffmpeg source and implement an exec function into the php extension so we could just add the parameters to a function (ex $fmpeg->exec('exec parameters here'); ) so the exec is executed directly from the extension ...

and compile those file :p

标签: php ffmpeg
8条回答
兄弟一词,经得起流年.
2楼-- · 2019-02-11 03:41

You will need to exec somewhere. If you can not do it on your host computer another solution is to have another system download convert and then upload the converted video and repeat. A more idea solution would be post to another online account convert and download. Between those options the first would be scalable.

Neither of these solutions are off the shelf that I know about. They would need to be created.

I believe the reason the format is not processed in an open PHP or Perl is because of potential licensing issues. FLV is not an open source format. So the perl and php frameworks make a exec request to process the video using ffmpeg

查看更多
你好瞎i
3楼-- · 2019-02-11 03:41

Maybe you can connect to ssh in php and execute commands there.

查看更多
趁早两清
4楼-- · 2019-02-11 03:42

There is a version of ffmpeg for PHP:

http://ffmpeg-php.sourceforge.net/

查看更多
老娘就宠你
5楼-- · 2019-02-11 03:43

It's not possible, at least there seems no example where ffmpeg runs without some type of system call (e.g. exec, system) from PHP.

Edit: One option is using the dreaded safe_mode. Refer to the manual on exec:

Note: When safe mode is enabled, you can only execute files within the safe_mode_exec_dir. ...

In theory you can place the ffmpeg binary in an arbitrary directory and give the path of that directory to the safe_mode_exec_dir. That way users will only be able to run executables in that directory. But you must try and see the implications of such a setup in real life...

Regarding your PHP extension request: PHP ffmpeg extension is just an informational one. If you need one that can do things on actual files, you will need to build a new extension based on ffmpeg library.

And if you plan to do this on a shared hosting, you are most probably out of luck. A standard issue shared hosting provider wouldn't provide video functionality like this. Video hosting and processing requires specialized hosting at best.

查看更多
地球回转人心会变
6楼-- · 2019-02-11 03:45

Another option would be to utilize Suhosin. You could then at least limit where exactly the system call can from and in turn limit access to that directory.

Here's an basic example of a vhost.conf config where shell_exec is blocked everywhere in your domain except ffmpeg-folder utilizing Suhosin

<virtualhost *:80>
ServerName your.server
DocumentRoot "/var/your/public_html"
php_admin_value suhosin.executor.func.blacklist "shell_exec, passthru, show_source, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg, exec"

<Directory "/var/your/public_html/ffmpeg-folder">
php_admin_value suhosin.executor.func.blacklist "passthru, show_source, system, pcntl_exec, popen, pclose, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apache_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, escapeshellcmd, escapeshellarg, exec"
</Directory>
</virtualhost>
查看更多
淡お忘
7楼-- · 2019-02-11 04:01

http://ffencoderd.sourceforge.net/index.html

Using a job queue and an XML based communication, videos can be sent so they're encoded.

Sounds like a plan to me.

查看更多
登录 后发表回答