you must know the total travel time
after that you must configure the parameters of frames per second (ftps) and the path animation parameters as frame and Evaluation time.
that is a simple rule of three
also you can calc the length of a Bezier curve please check: http://blenderartists.org/forum/showthread.php?206790-Length-of-a-Bezier-curve-in-2-5 or you can try with my script that will print the lenght in console:
import bpy, bmesh
for area in bpy.context.screen.areas:
if area.type == 'VIEW_3D':
ob1 = bpy.context.active_object # this is the curve
bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False})
bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
bpy.ops.object.convert(target='MESH')
bpy.ops.object.editmode_toggle()
obj = bpy.context.object
me = obj.data
bm = bmesh.from_edit_mesh(me)
edges= [e for e in bm.edges]
total = 0
for edge in edges:
total = (total + edge.calc_length())
print("total: ",total)
bmesh.update_edit_mesh(me, True)
bpy.ops.object.editmode_toggle()
bpy.ops.object.delete(use_global=False)
ob1.select = True
bpy.context.scene.objects.active = ob1