NAS の ffmpeg を使って webm を mp4 に変換

(2025-09-25)

webm をサーバーに置いてそれに対するリンクを貼ると、パソコンの firefox では閲覧できますが iPad の chrome でも safari でも閲覧できません。

ffmpeg を使って webm を mp4 に変換しようと思ったのですが、長時間の webm だととても時間がかかります。
そこで、ローカルのコンピュータではなくて NAS 上で実行させることにしました。

ffmpeg で webm を mp4 に変換

youtube でダウンロードした長時間の webm を mp4 に変換する場合、例えば 9 時間の環境動画を変換すると以下のような条件でも 3 倍速だと 3 時間かかります。

Terminal window
ffmpeg -i goodnight.webm -vf "scale=960:-1" -c:v libx264 -crf 23 -preset ultrafast -c:a copy output.mp4

こんなことはローカルのプログラムでは無理です。

NAS の ffmpeg

上のようなプログラムを NAS で実行するには ffmpeg の古いバージョンでは無理で、ffmpeg 7 を新たにインストールしました。

NAS に ssh ログインして確認します。

find / -name ffmpeg 2>/dev/null
/usr/bin/ffmpeg
/usr/syno/etc/packages/ffmpeg
/volume1/@appstore/ffmpeg7/share/ffmpeg
/volume1/@appstore/ffmpeg7/bin/ffmpeg
/volume1/@appdata/ffmpeg
/volume1/@apphome/ffmpeg
/volume1/@appshare/ffmpeg
/volume1/@appconf/ffmpeg
/volume1/@tmp/synopkg/lfs/image/AVAIL/SYNO/ffmpeg

複数の ffmpeg があります。デフォルトを ffmpeg 7 にします。

.profile を作成します。

nano ~/.profile
# User profile for saitou
# Add ffmpeg7 from Synology Appstore to PATH
export PATH=/volume1/@appstore/ffmpeg7/bin:$PATH

設定を反映。

source ~/.bashrc

確認します。

ffmpeg -i
ffmpeg version 7.0.2-5 Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 8.5.0 (GCC)

cron で ffmpeg を実行する際には .profle は必要ないのですが、コマンドラインから実行する場合には必要です。

crontab に ffmpeg 7 を設定

sudo -i で昇格して crontab を編集します。

nano /etc/crontab

で開き、以下のように設定します。

MAILTO=""
PATH=/volume1/@appstore/ffmpeg7/bin:/sbin:/bin
#minute hour mday month wday who command

以下のようなシェルスクリプトを作成します。
ファイルのパスは絶対パスにします。

Terminal window
ffmpeg -i \
/volume1/moheno_jstree/jstree/data/youtube/goodnight.webm \
-vf "scale=960:-1" -c:v libx264 -crf 23 -preset ultrafast -c:a copy \
/volume1/moheno_jstree/jstree/data/youtube/output.mp4

このシェルスクリプトをタイムスケジューラで動かせばいいと思います。

-preset ultrafast とするとファイルサイズが巨大になります。私の場合は、9GB が 11 GB になってしまいました。
なので、ここは -preset medium とした方がいいと思います。