ffmpegでMP4ファイルの整合性をチェックする

ドップラーセンサーRCWL-0516とラズパイゼロのモジュールカメラで昼間は動画mp4、夜間は静止画像jpgをメール送信で防犯カメラとして使用しているけど

動画が時々再生出来ない形式で送信される、原因不明だが恐らくラズパイゼロのパワー不足と思われる
送信する前に何とか動画をチェックして駄目なら送信しないなどの処理を追加する

ネットで検索するとffmpegで動画ファイルをチェック出来るみたい

ダメ動画ファイル
ll ngremote_hand.mp4
-rw-r–r– 1 root root 611898 6月 7 17:35 ngremote_hand.mp4
ffmpeg -v error -i ngremote_hand.mp4
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x1f5f180] moov atom not found
ngremote_hand.mp4: Invalid data found when processing input

正常動画ファイル
ll remote_hand.mp4
-rw-r–r– 1 root root 656942 6月 7 17:37 remote_hand.mp4
ffmpeg -v error -i remote_hand.mp4
At least one output file must be specified

こんな感じの処理を追加して
if [ ! -e $WORKIMAGE ];then
exit -1
else
OK_NG=`$FFMPEG -v error -i $IMAGE 2>&1 | awk ‘BEGIN{I=”OK”}/Invalid/{I=”NG”};END{printf I}’`
if [ $OK_NG = “NG” ];then
rm $WORKIMAGE
else
$MUA $MAILTO $SUBJECT $MSG $IMAGE
rm $WORKIMAGE
fi
fi

 

Follow me!