Laravel
Docker × LaravelでFFMpegを使う方法を使う方法
いつもご利用ありがとうございます。
この記事には広告が掲載されており、その広告費によって運営しています。
PR
Docker で Laravel の環境構築したときに FFMpeg を使う方法についてまとめました。
FFMpeg を使う方法
アプリケーションコンテナの Dockerfile
FROM php:7.4-fpm-buster
RUN apt-get update
RUN apt-get install -y ffmpeg
アプリケーションコンテナで composer を使ってインストール
// appコンテナ(アプリケーションコンテナ)に入る
docker compose exec app bash
// pbmedia/laravel-ffmpegをインストール
composer require pbmedia/laravel-ffmpeg
config/app.php に追記する
providers と、aliases の配列に、追記します。
// config/app.php
'providers' => [
...
ProtoneMedia\LaravelFFMpeg\Support\ServiceProvider::class,
...
];
'aliases' => [
...
'FFMpeg' => ProtoneMedia\LaravelFFMpeg\Support\FFMpeg::class
...
];
config を変更したら
コマンドで
php artisan config:cache
して反映させましょう。
これで、Docker で構築した Laravel プロジェクト内で、FFMpeg が使えるようになりました。
実装環境
docker-compose のバージョン
version: "3"
アプリケーション用コンテナの Dockerfile
FROM php:7.4-fpm-buster
もし、FFMpeg や FFprobe が見つからないエラーが発生したら?
binary が見つからない等のエラーが出た場合は、
バイナリデータの場所を特定する
アプリケーションコンテナに入って、which コマンドで探しま す。
//「app」コンテナの場合
docker compose exec app bash
which ffmpeg
// /usr/bin/ffmpegと出力されたと仮定する
config でパスを指定する
app コンテナで
php artisan vendor:publish --provider="Pbmedia\LaravelFFMpeg\FFMpegServiceProvider"
これによって、config/laravel-ffmpeg.php が生成され、内容は
<?php
return [
'default_disk' => 'local',
'ffmpeg' => [
'binaries' => env('FFMPEG_BINARIES', 'ffmpeg'),
'threads' => 12,
],
'ffprobe' => [
'binaries' => env('FFPROBE_BINARIES', 'ffprobe'),
],
'timeout' => 3600,
];
このように書かれています。
なので、環境変数でバイナリーのパスを入力します。
docker-compose.yml
app コンテナの enviroment に追記します。
environment:
//追記
- FFMPEG_BINARIES=/usr/bin/ffmpeg
- FFPROBE_BINARIES=/usr/bin/ffprobe
追記したら、ビルドしなおします。
docker compose up -d --build
以上で使えるようになるはずです。
実装方法
やりたい圧縮方法圧縮方法にもよりますが、基本形は
use FFMpeg
~~~~~~
FFMpeg::fromDisk('local')
->open('movie.mp4')
->exportForHLS()
->setSegmentLength(10)
->toDisk('local')
->save('movie2.mp4');
こんな感じで、
- 元ファイルを指定
- 圧縮や編集の指定
- 出力先の指定
をすれば OK です。
色々やろうと思えば、圧縮や編集の指定のところが長くなると思います。
どんなことができるかについては、ドキュメントを参照してみてください。
まとめ
以上です。誰かの参考になればと思います。
このブログは広告のクリックによって支えられています。ありがとうございます。
それでは!
人気記事
フィードバックのお願い
この記事のフィードバックがありましたらYoutubeの適当な動画にコメントしていただいたり、お問い合わせからご連絡ください。