En la parte de código donde hace el cálculo de la duración (Image::ExifTool::MPEG::Composite) se ve que si el dato de la duración no es numérico, no realiza el cálculo, lo cual es lógico, porque implica mirar todo el fichero.
Como mucho, podrías hacer una estimación como la que él hace: tamaño/bitrate, pero ese bitrate deberás elegirlo. Quizás si añades más -v al exiftool, te dará más información, como por ejemplo el bitrate del primer cuadro, con lo que podrás hacer una estimación.
Y en cuanto a si vale para todos los formatos de vídeo, eso estará indicado en la doc. Desde luego, está actualizado a mayo de este año...