動画圧縮サービス
このサービスは、動画圧縮サービスです。
サービスの実行には、ターミナルという黒い画面にコマンドを入力します。
このサービスは、動画からオーディオやGIFなど異なるフォーマットを作成したり解像度を変換したい!という場面に使えます。
基本的な機能として、下記のような機能を提供しています。
- 動画ファイルを圧縮する(圧縮度をlow,medium,highの3段階から選択できます)
- 動画の解像度を変更する
- 動画の縦横比を変更する
- 動画をオーディオに変換する
- 指定した時間範囲からGIFを作成する
説明で登場する用語について補足します。
用語の意味がわからない時は、下記表を確認してください。
用語 | 意味 |
---|---|
ターミナル | コンピュータに対してテキストベースのコマンド入力と出力を行うインターフェースのことです。 このインターフェースは、コマンドラインインターフェース(CLI)とも呼ばれます。 デモで表示されている黒い画面のことです。 |
コマンド | コンピュータに対して特定の操作を実行するよう指示するテキストベースの命令です。 コマンドを入力することで、コンピュータは、コマンドの意味を読み取りアクションをおこします。 |
このサービスを実行するには、下記ソフトウェアを事前にインストールしておく必要があります。
インストールされていない場合は、インストール/使用方法/使用例で記載されているコマンドが実行できませんので
必ずインストールしてから進めてください。
Gitがインストールされていない場合は、下記手順でインストールしてください。
-
ターミナルを起動する。
使用するOSによりターミナルの名称が異なりますので注意してください。
(例. Windows:コマンドプロンプト,mac:ターミナル) -
Gitがインストールされているか確認する。
git version 2.34.1
のように表示された場合は、Gitがインストールされています。
以降の手順はスキップしてください。
また、ターミナルは引き続き使用しますので開いたままにしてください!
git --version
- システムを更新する
sudo apt-get update
- Gitをインストールする
sudo apt install git
- Gitがインストールされたことを確認する。
git version 2.34.1
のように表示されていれば、Gitのインストールは完了です!
git --version
Pythonの公式サイトからあなたのPCのOSに合わせて、ダウンロードしてください。
ダウンロードしたファイルを使用してインストールできます。
Pythonがインストールされているかは、下記コマンドで確認することができます。
Python 3.10.12
のように表示されていれば、Pythonはインストールされています。
python3 --version
FFmpegは、ビデオおよびオーディオの変換、エンコード、ストリーミングなどの機能を提供しているライブラリです。
Download FFmpegからダウンロードすることもできます。
下記手順でインストールしてください。
- FFmpegがインストールされているか確認する。
ffmpeg version/configurationなどが表示された場合は、FFmpegがインストールされています。
以降の手順はスキップしてください。
ffmpeg -version
- システムを更新する
sudo apt-get update
- FFmpegをインストールする
sudo apt install ffmpeg
- FFmpegがインストールされたことを確認する。
ffmpeg version/configurationなどが表示されていれば、FFmpegのインストールは完了です!
ffmpeg -version
Ubuntuを利用している場合は、MP4ファイルが再生できないことがあります。
その場合は、下記記事を参考にしてエンコーダーをインストールしてください。
Ubuntu 22.04でMP4ファイルが再生できない場合の対処法
このサービスをあなたのPCで実行するために、クローンします。
クローンとは、このサービスの実行に必要なファイル(リポジトリのコンテンツ)をあなたのPCのローカル環境へコピーすることです。
下記手順でクローンしてください。
- リポジトリをクローンする
git clone https://github.com/Aki158/Video-Compressor-Service.git
- クローンしたリポジトリへ移動する
cd Video-Compressor-Service
- inputとoutputフォルダに入っている不要なファイルを削除する
- インプット用の動画を用意してinputフォルダに格納する
- 1つ目のターミナル(サーバ用ターミナルとする)を起動する
- サーバ用ターミナルに下記コマンドを入力する
python3 server.py
- 2つ目のターミナル(クライアント用ターミナルとする)を起動する
- クライアント用ターミナルに下記コマンドを入力する
python3 client.py
Type in a file to upload:
と表示されたら、Inputのパスを入力する
推奨 : inputフォルダのファイルパス- 下記指示が表示されたら、利用したい機能を0から4の中から選択して入力する
Please enter a number from 0 to 4
0 : 動画ファイルを圧縮する
1 : 動画の解像度を変更する
2 : 動画の縦横比を変更する
3 : 動画をオーディオに変換する
4 : 時間範囲からGIFを作成する
- その後、追加で指示が表示されたら、指示に従い入力する
- サーバ用ターミナルが動き出したら、クライアント用ターミナルに
File generated.
と表示されるまで待つ Do you want to continue ?
と表示されたら、サービスを続けるか選択する(0 : 終了する/1 : 続ける)- outputフォルダにダウンロードされた動画を確認する
一通りの手順のイメージはデモを参考にしてください。
- inputとoutputフォルダに入っている不要なファイルを削除する。
クローンしてきた状態だと、サンプルファイルが残っています。
今回は、inputフォルダ内のファイルは、以降の手順で使用するのでそのままにして、outputフォルダのファイルをすべて削除しました。 - インプット用の動画を用意してinputフォルダに格納する。
今回は、既にinputフォルダに入っているサンプルファイルを使用するので格納はしません。 - 1つ目のターミナル(サーバ用ターミナルとする)を起動する
- サーバ用ターミナルに下記コマンドを入力する
python3 server.py
- 2つ目のターミナル(クライアント用ターミナルとする)を起動する
- クライアント用ターミナルに下記コマンドを入力する
python3 client.py
Type in a file to upload:
と表示されたら、Inputのパスを入力する
推奨 : inputフォルダのファイルパス
inputフォルダに入っているinput.mp4を使用したいので、input/input.mp4
と入力します。- 下記指示が表示されたら、利用したい機能を0から4の中から選択して入力する
Please enter a number from 0 to 4
0 : 動画ファイルを圧縮する
1 : 動画の解像度を変更する
2 : 動画の縦横比を変更する
3 : 動画をオーディオに変換する
4 : 時間範囲からGIFを作成する
動画をオーディオに変換したいので3
を入力します。 - その後、追加で指示が表示されたら、指示に従い入力する。
手順8.で3
を入力した場合、追加の指示がなかったので、スキップします。 - サーバ用ターミナルが動き出したら、クライアント用ターミナルに
File generated.
と表示されるまで待つ。 Do you want to continue ?
と表示されたら、サービスを続けるか選択する(0 : 終了する/1 : 続ける)。
終了したいので、0
を入力します。- outputフォルダにダウンロードされた動画を確認する。
outputフォルダにoutput_audio.mp3
というファイルが入っていることを確認できました。
カテゴリ | 技術スタック |
---|---|
開発言語 | Python |
インフラ | Ubuntu |
VirtualBox | |
その他 | Git |
Github | |
FFmpeg |
機能 | 内容 |
---|---|
メッセージの表示 | サービスの進行に必要なメッセージを表示します。 |
サーバへのファイルアップロード | ユーザーが入力したパスを読み取ります。 ファイルが問題なければ、サーバへファイルをアップロードします。 下記のような場合には、ファイルのアップロードが出来ずメッセージを表示します。 ・ファイルサイズが4GBを超える場合: File must be below 4GB. ・ファイルの拡張子がmp4でない場合: File extension must be mp4. |
サービスに必要な入力の要求 | サービスを利用する際は、いくつかの指示が表示されます。 利用するサービスによって指示は異なります。 サービスに必要な入力が完了すると、そのデータをサーバへ送信します。 |
サービスの実行 | サーバは、クライアントからサービスに必要なデータを受信すると、サービスを実行します。 サービスは、FFmpegライブラリと実行に必要なデータを利用して実現させています。 サービスの実行が完了するとoutputフォルダに動画がダウンロードされます。 その後、サーバは、サービスの完了メッセージをクライアントへ送信します。 |
サービスを続けるかの確認 | サービスを続けるか確認します。 続ける場合は、アップロードされたファイルをそのまま使用し、サービスに必要な入力の要求を行います。 |
サーバへアップロードしたファイルの削除 | サービスを続けるかの確認で終了するを選択した場合、クライアントは、終了通知をサーバへ送信します。 サーバは、終了通知を受け取るとアップロードファイルされていたファイルを削除します。 |
- デスクトップアプリケーションとして利用できるようにする