On all platforms except Android you can use the "image" video input module. This is an alternative video capture module which just loops through one or more JPEG images. You request this video module by changing the video configuration string to something like:
-device=Image -image="/path/to/image0.jpeg" -image="/path/to/image1.jpeg"
On Android, one possible alternative if you're building a Java ARToolKit for Android app is to load the image yourself in the Java environment and to push that image to the native tracking routines instead of pushing the image from the camera stream. The simplest place to intercept the pushing of the image is in ARBaseLib/src/org/artoolkit/ar/base/ARToolKit.java's convertAndDetect() method. The 'frame' parameter to arwAcceptVideoImage is a pointer to an NV12-encoded video frame.
If you're using ARToolKit for Unity on Android, the same advice applies, only the location of the arwAcceptVideoImage call is different. Instead it's in the UnityARPlayer classes in file org/artoolkit/ar/unity/CameraSurface in method onPreviewFrame.
Sorry I can't advise of an easier method... ARToolKit for Android isn't really structured for much flexibility in the source of the video stream.