convert

動画ファイルを取り扱う

noteに投稿するときにちょっとの動画でYoutubeに投稿するのは大変なときがある
noteではgif形式を受け付けているので動画をgif形式に変換できれば貼り付けられるので
動画を変換する方法があるのではと思ったのがキッカケである

動画をGIFに変換して投稿するまでの思考展開は以下の通りだ

flowchart TD A([動画を用意する]) --> B[不要な時間帯を切り取る] B[不要な時間帯を切り取る] --> C[動画をgifに変換する] C[動画をgifに変換する] --> D[gifをアップロードする] D[gifをアップロードする] --> E{アップロードできたか?} E ---->|YES| F([投稿完了]) E ---->|No| G[動画変換でfpsとリサイズを調整する] G[動画変換でfpsとリサイズを調整する]---->D[gifをアップロードする]

ソフトウェアと実行環境を記載する

  • ffmpeg
  • Windows11
  • コマンドプロンプト

コマンドプロンプトで実行する
専用のソフトウェアを用意していなくてもコマンドベースで出来るのでちょっとしたことであれば便利である

# 指定した時間で動画を切り取る
ffmpeg -i .\input.mp4 -t 18 -c copy output.mp4

コメント

始めから18秒までの動画に切り取った結果を保存している
“-ss 開始時間”で開始位置を指定できる様だが、開始位置は問題ないタイミングで録画しているので操作が不要だしどの時点から問題ないか開始時刻まで確認するのはめんどくさい
そういうことを気にせず、たくさんの素材を編集するならば動画編集ソフトを使用した方がいい

# mp4 -> gif
ffmpeg -i input.mp4 output.gif

# noteでgifのアップロードを失敗するときはリサイズとfpsで調整する(容量は7MB程度か)
ffmpeg -i input.mp4 -vf scale=600:-1 -r 30 output.gif

コメント

noteでGIFのアップロードを何回かしているが失敗することも多い
オフィシャルの説明が見当たらないので困っているが、おおよその具合は下記の通りである

  • アップロードの容量制限は7MB
  • 画像の横幅は700
  • fpsは10

本当はFullLHDでfpsも24,30,60で投稿したいのだが、ちょっとした確認であるなら10FPSもあれば十分である

動画ではなく音だけ欲しいときに使用する

# mp4 -> mp3
ffmpeg -i input.mp4 output.mp3

タイムラインの切り取り、GIFの変換とリサイズやfpsの調整、音声の抽出を機能としてまとめる
また、より使いやすく、動画ファイルをドラックアンドドロップすることでコマンドを入力することなく使えるようにした

echo off
rem ドラック&ドロップしたファイルパスを表示する

echo "file path is: " %1

rem 動画ファイルの取り扱いを確認する
set /p  input="How do you handle this file ? (t: modify trimming, r:  rescaling and change fps , m: convert mp3 ): "

rem 動画ファイルを取り扱う
if "%input%" == "t" (
    goto option_t
) else if "%input%" == "r" (
    goto option_r
) else if "%input%" == "m" (
    goto option_m
) else (
    exit /b
)

:option_t
rem トリミング
set /p number="to trimming time?: "
set /a trimming_time=%number%
echo.
echo "動画を指定時間: %trimming_time%秒までトリミングして出力します↓"
echo %trimming_time%
ffmpeg -i %1 -t %trimming_time% -c copy %~dp1%~n1_out%~x1
pause
exit /b

:option_r
rem リサイズとfpsの再設定
set /p  number="setting width?: "
set /a setting_width=%number%
set /p  number2="setting fps?: "
set /a setting_fps=%number2%
echo.
echo "動画をgifに横幅: %setting_width%にリサイズし、fps: %setting_fps%で変換します。↓"
ffmpeg -i %1 -vf scale=%setting_width%:-1 -r %setting_fps% %~dp1%~n1_out.gif
pause
exit /b

:goto option_m
rem mp3へ変換する
echo.
echo "mp3に変換します↓"
ffmpeg -i %1 output.mp3

動画投稿するよりはblogを投稿しており、画面の操作など短い録画をアップロードするため、gif形式に変換することを覚えてからはかなり便利になった。
もし、似た目的でWindowsで使える録画機能を知らないときはWindowsの便利な使い方を見るとよい

  • convert.txt
  • 最終更新: 2024/05/19 05:36
  • by educator