このプロジェクトは動画処理サービスです。 ユーザーは動画ファイルをサーバーにアップロードし、動画を加工することができます。 TCPを用いてクライアントとサーバー間の通信を行います。
- 動画の圧縮: 動画を自動的に圧縮し、サイズを削減しつつ高画質を維持。
- 動画の解像度変更: ユーザーが選択した解像度に動画を変換。
- 動画のアスペクト比変更: ユーザーが指定したアスペクト比に動画を変換。
- 動画からの音声変換: 動画から音声を抽出し、MP3ファイルを生成。
- 特定時間範囲のGIF/WEBM作成: ユーザーが指定した時間範囲の動画をGIFまたはWEBMに変換。
- Python 3.10.9
- FFMPEG
サーバーとクライアントのスクリプトをそれぞれ別ターミナルで実行します。
# ffmpegを使用するため事前にインストールが必要
brew install ffmpeg
# サーバーの実行
python3 server.py
# クライアントの実行
python3 client.py
- 別ターミナルでサーバー側とクライアント側を実行
- 編集したい動画を同ディレクトリに配置(今回はcat.mp4を配置)
- クライアント側で編集したい動画のファイル名を入力
- クライアント側でどういった編集をしたいか選択(今回はgifに編集するを選択)
- クライアント側でどこからどこまでgifにするか必要情報を入力
- サーバーへファイルのアップロードが開始
- アップロードされたファイルはInputフォルダに格納
- アップロードが完了したら編集開始
- 編集後のファイルはOutputフォルダに格納
- 編集が完了したこととどこに編集後のファイルが格納されているかクライアントに通知
![](https://private-user-images.githubusercontent.com/83833293/294737109-5d518b46-2982-4412-adf7-07522b4f6449.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjA1NDEyNDMsIm5iZiI6MTcyMDU0MDk0MywicGF0aCI6Ii84MzgzMzI5My8yOTQ3MzcxMDktNWQ1MThiNDYtMjk4Mi00NDEyLWFkZjctMDc1MjJiNGY2NDQ5LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA5VDE2MDIyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMxMmQ3OGQwZDRiMzVkYmE3NjdhNDY2Y2UxZmZlYmU5NDUzNDQyMWEwMjI4ODcxNTk0NzdiMjgyOTA0ODdiYzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.1WVGlCL5dLzK84fWDZDnQPO85DfpEbeFIRez9jE-Mmw)