1

私はPHPに関しては少し初心者です。ファイルを入力し、さまざまな解像度でhtml5ビデオに変換するシンプルな(っぽい)システムを作成しようとしています。

複数のファイルのアップロードなどを処理する方法を整理しましたが、問題が発生しています。

PHPでFFMPEGを実行するようにexecを取得できないようです。

たとえば、これをコマンドライン(Mac OSX 10.8のターミナル)に入力すると、ビデオが正しく変換されます。

ffmpeg -i /Users/charlieryan/Desktop/MOV01785.MPG websample.mov

これにより、変換されたビデオファイルがホームディレクトリに正しく出力されます。

ただし、これをPHPで次のように実行すると、次のようになります。

exec('ffmpeg -i /Users/charlieryan/Desktop/MOV01785.MPG websample.mov');

まったく何も起こりません...私の統計モニターはプロセッサー使用の変更を登録しません、そして私は私のシステムのどこにも出力ファイルを見つけることができません。

私はこれで少し初心者なので、私は何か間違ったことをしていると思いますが、それは何ですか?

ありがとう、

チャーリー

4

5 に答える 5

2

birgireからの多くの助けと多くのいじりの後、私はそれを分類しました。

この問題は、MAMP サンドボックスとの非互換性に起因します。これは次のように解決できます。

ターミナルに移動して、次のように入力します。

sudo nano /Applications/MAMP/Library/bin/envvars

次に、次の行をハッシュ (#) でコメントアウトします。

# DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
# export DYLD_LIBRARY_PATH

そして、次の行をファイルに追加します

export PATH="$PATH:/opt/local/bin"

次に、MAMP に戻ってサーバーを再起動し、ページに戻ると準備完了です。

于 2013-03-03T20:05:29.900 に答える
1

exec()まず、許可されているかどうかを確認する必要があります。

<?php echo exec('echo "exec() is working"');?>

それが機能している場合は、

exec() is working

それがうまくいくなら、あなたは試してみるべきです

exec('/full/path/to/ffmpeg -i /Users/charlieryan/Desktop/MOV01785.MPG websample.mov');
于 2013-03-03T14:20:17.903 に答える
1

私は同じ問題を抱えていました.MAMPを使用している場合、問題はmampのphpが正しいライブラリを見つけられないためです.理由はわかりません..ここにトリックがあります. -システムのphpを使用して、ffmpegを呼び出すphpを実行する必要があります

PHP コード (例: lib.php | index.php):

function callToSysPHP ($videoName) {
    // $cmd = '/path to php/php <your php script> args';
    // In my case 
    $cmd = '/usr/bin/php myffmpeg.php ' . $videoName; 
    shell_exec($cmd);
}

myffmpeg.php で:

 $videoName = $argv[1];
 //$cmd = 'path to your ffmpeg/your ffmpeg command';
 // In my case my ffmpeg cmd looks like
 $cmd =  '/usr/sbin/' . 'ffmpeg -f image2 -framerate 25 -i ./files/pngs/%1d.png -vf scale=480:640 -vcodec libx264 -refs 16 -preset ultrafast ./files/pngs/'. $videoName .'.mp4 2>&1';
 echo '<pre>'; print_r(shell_exec($cmd)); echo '</pre>';

基本的に、mamp php からシステム php を呼び出して、shell_exec() を介して ffmpeg を呼び出す php ファイルを実行します。

これがお役に立てば幸いです。

于 2015-12-04T14:42:57.947 に答える
0

/usr/local/bin/」が ffmepg 実行可能ファイルを見つけることができるディレクトリである場合、これを試してください:

<?php
$cmd = 'PATH="/usr/local/bin/"; ffmpeg -i /your/file/destination/batman.mp4 2>&1';
echo "<pre>".shell_exec($cmd)."</pre>";
?>
于 2016-03-15T21:40:04.243 に答える
0

Windowsマシンにffmpegをインストールしましたか?PHPなしでコマンドラインから同じコマンドを実行するとどうなりますか? そうでない場合は、PHP で何もする必要はありません。

于 2013-03-03T14:15:39.467 に答える