アニメーションGifと静的Gifを区別する方法を探していた時に結構ハマりました。
結論
GIFのバイナリファイルの内部に、 NETSCAPE という文言が含まれていたら、アニメーションGIFであるようです。
以下が判定コード。
isAnimatedGif(arrayBuffer) {
let fileStr = ''
var ba = new Uint8Array(arrayBuffer);
ba.forEach((b) => {
fileStr += String.fromCharCode(b);
})
return fileStr.indexOf("NETSCAPE") != -1
}