C#

【FFMPEG】FFMPEGを使ってC#で動画をトリミングする

FFMPEGは動画のmp4ファイルなどを加工することができるコマンドラインツールです。

Windowsだけでなく、LinuxやMacなど様々なOSで使うことができます。

そんなFFMEPGを使って動画をトリミングする処理を、C#で制御してみたいと思います。

【検証環境】Windows10 / .NET5 Console

FFMPEGの設定

インストール

下記のダウンロードページを開きます。

https://ffmpeg.org/download.html

「Windows builds by BtnN」を選択します。

「ffmpeg-N-104925-ga8a7c5d502-win64-gpl-shared.zip」をダウンロードします。

環境変数にパスを登録するために、ダウンロードしたZipファイルを解凍し、中身の「bin」フォルダの絶対パスをコピーします。

タスクバーの検索ボックスで「環境変数」と入力すると、【環境変数を編集】が表示されるので、選択します。

Pathを選択した状態で、編集をクリックします。

新規を選択して、コピーしたパスを貼り付け、OKをクリックします。

コマンドプロンプトで「ffmpeg -version」を叩きます。下記のように返ってくれば、準備完了です。

使い方

使い方はこちらのサイトを参考にさせて頂きました。

(例)「E:\sample.mp4」の10秒から30秒間切り出し、「E:\output.mp4」として出力する

ffmpeg -i E:\sample.mp4 -ss 10 -t 30 E:\output.mp4

59秒の動画が、10秒の位置から30秒先まで切り取られていることが確認できました。

動画は下記のサイトでフリー素材をダウンロードできます。

https://pixabay.com/ja/videos/

C#で制御してみる

C#でコマンドを実行するには、Processクラスを利用します。

下記のコードを実行すると、プログラムからFFMPEGを実行できることが確認できました。

using System;
using System.Diagnostics;

namespace testprocess
{
    class Program
    {
        static void Main(string[] args)
        {
            //開始時間
            var start = 10;

            //切り取り時間
            var cut = 30;

            //切り抜き元ファイルパス
            var orgPath = @"E:\sample.mp4";

            //出力ファイルパス
            var outPath = @"E:\output.mp4";

            //Processの生成
            using (var process = new Process())
            {
                // コマンド
                process.StartInfo.FileName = "ffmpeg";

                // コマンド引数
                process.StartInfo.Arguments = $@"-i {orgPath} -ss {start} -t {cut} {outPath}";

                // コマンド実行
                process.Start();

                // コマンド終了まで待機
                process.WaitForExit();
            }

            Console.WriteLine("コマンド完了");
        }
    }
}

C#のコマンド制御についてはこちらこちらのサイトを参考にさせて頂きました。

エンジニアの転職ならこれ!

【第二新卒向け】マイナビジョブ20's

マイナビジョブ20'sは、20代・第二新卒・既卒向けの転職エージェントです。

▼こんな方におすすめ
・はじめて転職しようと思っている
・転職できるだけのスキルが自分にあるか不安
・手厚いサポートを受けたい

【フリーランス向け】 Midworks

Midworksは豊富な案件と「フリーランス」と「正社員」の良いとこ取りをした働き方を実現する手厚い保障が特徴です。

▼こんな方におすすめ
・現在正社員でフリーランスになろうか悩んでいる
・フリーランスとして働いているが、先行きが不安がある  (安定的な案件確保や保障など)
・自分の市場価値を知りたい、見合った案件で参画したい
・今後のキャリアビジョンを踏まえて案件を選びたい