Youtubeへ動画を上げています。
主には、バイク、スノーボード、観光などの動画をGoProで流しで撮影しています。
仲間内などで閲覧する用に、非公開でYouTubeにアップしています。
このとき、GoProではいくつかのファイルに分かれ、SDカードに動画が保存されています。
動画編集は動画編集ですが、ただ単に連結させ、通しでみたいときに不便です。
動画連結スクリプト
ffmpegのインストールはgoogle先生や、諸兄の方々にお任せするとして、
以下のbatファイルを動画ファイルたちがいるディレクトリで実行することで、
一つのmp4にしてくれます。
ffmpegを使い、機械的に連結させますので、無劣化で処理が可能です。
追記ffmpegインストール
私の環境では、「ffmpeg-master-latest-win64-gpl-shared」をダウンロードし、
Cドライブ直下に展開、パスを通します。
バージョンは下記の通りです。
>ffmpeg -version
ffmpeg version N-107137-gfee765c207-20220619 Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.2.0 (crosstool-NG 1.24.0.533_681aaef)
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20220619
libavutil 57. 27.100 / 57. 27.100
libavcodec 59. 33.100 / 59. 33.100
libavformat 59. 25.100 / 59. 25.100
libavdevice 59. 6.100 / 59. 6.100
libavfilter 8. 41.100 / 8. 41.100
libswscale 6. 6.100 / 6. 6.100
libswresample 4. 6.100 / 4. 6.100
libpostproc 56. 5.100 / 56. 5.100
私の環境では上記で動いていますが、「ffmpeg-master-latest-win64-gpl.zip」がいいようです。
私の環境では「ffmpeg-master-latest-win64-gpl」では、動かなかったため、「ffmpeg-master-latest-win64-gpl-shared」を使っています。
下記が参考になります。
公式サイト
公式サイトから、「Windows」→「Windows builds by BtbN」→「ffmpeg-master-latest-win64-gpl.zip」をダウンロードし、中身をCドライブ直下に展開します。
PCのパスを通します。
設定からシステムを開きます。
システムの詳細設定をクリックします。
環境変数をクリックします。
Cの直下においたffmegのbinのパスを入力します。
画像中では、私のPCの設定「C:\ffmpeg-master-latest-win64-gpl-shared\bin」になっています。
これで準備完了です。
スクリプトの内容
1.ディレクトリ内のMP4ファイル名一覧を「日時順で」取得
ファイル名順では、撮影された順番でないので、わけがわからなくなります。
2.ファイル名一覧「temptxt」に書き出し
3.「temptxt」の中身をffmpegが認識できる連結リストを「filelist.txt」に出力
4.連結し、「output.mp4」に出力
処理時間がわかるように、処理開始時、処理終了時の日時を出力する。
下記を.batファイルにして、動画フォルダに保存し、ダブルクリック実行する。
@echo off
echo %date% %time%
dir /od *.mp4 /B > temptxt
for /f %%a in (temptxt) do (
rem 出力
echo file '%%a'>>filelist.txt
)
ffmpeg -f concat -i filelist.txt -c copy output.mp4
cd
echo %date% %time%
pause
角度問題
GoProはジャイロセンサーを備えており、親切に動画の向きを変えてくれる。
しかし、PC上で見ると、天地や左右が入れ替わっていたりする。
このため、上記のスクリプトでは、単純連結のため、角度が統一された動画たちにしか使えない。
備忘録:動画のトリミング
ドラレコの動画なんかも同じくファイル区切られるので、応用できる。
ただ、GPS情報など除外して、アップしたいときがある。
画角のトリミング
これでちょうど、下部のGPS情報は画角の外に出すことができる。
上から982ピクセル、幅は全幅(1920)で出力する。
ffmpeg -i hogehoge.mp4 -vf crop=1920:982:0:0: hogeout.mp4
長さのトリミング
15秒の位置から、10秒出力する。
ffmpeg -i hogehoge.mp4 -ss 15 -t 10 -c copy hogeout.mp4
追記デイトナドラレコ用
デイトナのドラレコのデータに対しては、上記で連結できますが、youtubeにアップすることができませんでした。
正しくは、アップロードはできたものの、処理を拒まれるという状態でした。
これは、どうやから、コーデックの問題のようで、変換しながら連結するプログラムです。
REM デイトナのドラレコ用
@echo off
echo %date% %time%
dir /od *.mp4 /B > temptxt
for /f %%a in (temptxt) do (
rem 出力
echo file '%%a'>>filelist.txt
)
ffmpeg -f concat -i filelist.txt -c:v copy -c:a aac output.mp4
cd
echo %date% %time%
pause