Encoderを使用してストリーミング配信を行いました。今回は、ffmpegを使用した動画編集についてご紹介します。前回まで、3回に分けてストリーミング配信に触れてきたのはある目的のために動画ストリーミングとはどういうものかということを事前に把握するためのものでした。ある目的というのは、”スマートフォンで撮影している動画をOculusを使用してライブ視聴する”になります。これまでの調査から、ライブ配信には大きく分けて下記の工程が必要だということがわかりました。上記工程をツールを使用して行っていたのが前回までの記事で、工程とツールでの処理を当てはめると次のようになります。Encoderで同時にリアルタイムエンコードも行いながらサーバー(xampp)に保存。保存した動画をxmoovStreamでストリーミング配信を行い、組み込まれているプレイヤーで再生する」これらをスマートフォンを使用して行う場合、1,2の工程に変更を加える必要があります。PC用のツールであり、android/iOSでは使用することが出来ないためです。ほとんどのスマートフォンにはカメラが標準搭載されているため、動画撮影に関しては問題有りません。動画のエンコードには大きな負荷がかかるため、スマートフォンのスペックでは処理遅延が発生する可能性があり、あまり現実的ではないと考えました。その為、今回はスマートフォンでフレーム毎の画像を保存し、それらをアップロードした後、サーバー上で動画を生成する方法でスマートフォン→サーバーの動画転送を行いたいと思います。上記方法から、スマートフォンでのライブ配信時の工程はこれまで作成していたものから下記のように変更となります。目的を達成するために、必要な作業が大分まとまってきました。アップロード処理を作成するのも良いですが、受け取り口がないと確認もできないため今回はこの中の内、3を先に作成しようと思います。必要なものは、サーバー環境とffmpegというツールです。ffmpegはとても有名なツールなので、インストール方法は省略します。サーバー環境は、Linuxを使用しました。※xamppでも可能です簡単なアップロード用のファイルを作成します。}}?>これらのファイルをサーバーの公開ディレクトリに置き、index.htmlにアクセスすると、ファイルのアップロード確認が行えます。実際には、php側はもっと詳細な判定処理を入れる必要がありますが、今回の場合は、スマホでのライブ配信という目的を達成するためなので、必ずファイルが添付されてきていること前提としてこのまま進めます。次にアップロードされた画像での動画作成です。実際にどのタイミングで行うかはまだわかっていませんが、画像アップロード終了後、何らかの条件を満たした場合にエンコード処理を実行することになるのではと考えています。ffmpegはコマンドを使用して各種処理を実行するため、動画生成処理はphpから実行することにします。//exec関数を使用すると、引数で渡したコマンドをphpから実行することが出来ます。上記コマンドは、/var/www/html/uploads直下にある2桁の連番画像を使用して、同ディレクトリにvideo.mp4という動画ファイルを生成しています。指定をしているため、フレームレートは15fpsです。“画像アップロード終了後、何らかの条件を満たした場合”について仮に画像が15枚アップロードされるたびに動画生成を行う場合は、下記のようになるのかなと一人で妄想しています。/var/www/html/uploads/video.mp4');}?>このような条件は、実際の処理速度とかを加味して行うチューニングの部分かなと思っているので、今は深く考えないようにします。今後の作業の中で、今回の内容が全然使えなくなる可能性も大いにあり得るため、今は、目的を達成するために必要な工程を順番に終わらせることが重要ですね。スマホでのフレームアップロード処理をどう行うかも全然検討が付いておらず、まだまだ問題は山済みですが、ライブ配信達成のために引き続きいろいろなことを試してみようと思います。以上で、ffmpegを使用した動画編集の紹介は終了となります。最後までご覧いただきありがとうございました。弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。ご興味ある方は、お気軽にお問い合わせ下さい。コメントをキャンセルメールアドレスが公開されることはありません。BlogFeathersFeathersHTMLJavaScript。