There are various cases where the file or metadata has been altered in some way, or maybe it's not the same file that was originally imported.
During the relink, FCP is comparing two sets of metadata:
- The metadata recorded in the library when the file was first imported
- The metadata present in the on-disk file being relinked
If there is a mismatch in any of several criteria, it will reject the relink.
This particular error is "The selected file is shorter than the range used in [clip name] in [project/event name]."
That is raised if the media identifier is different (meaning the content actually changed) between the file imported and the relink target. In some cases it will permit the relink but since it believes the file has changed, it does an additional check: FCP iterates all media component references that use this asset. For each one in a compound clip, multicam, or synced clip, it computes the clip's used time range and verifies that the new file's media range fully covers it.
I believe there are cases where it will permit relinking to a shorter clip, but not if the clip is used in a timeline and its duration is shorter than the timeline clip's. This may be that case.
To further study this requires comparing the on-disk clip's metadata as shown in MediaInfo to the clip metadata stored in the library. MediaInfo is available in the Mac App Store.
To examine the library's metadata for that clip, I have written a command-line Python script for this, named fcpxml-single-clip-metadata.py. It dumps all available metadata recorded about that clip at the time it was first imported. It does not write anything to your disk -- it only reads a clip XML file you give it. https://we.tl/t-9GyW3iktRx
To use the script:
- Export a *clip* XML of the red missing media clip you are trying to relink. Select the clip in the FCP Event Browser and do File>Relink Files>Original Media
- Change your terminal session to whatever directory you placed the .py script. you can do that by issuing the cd command in terminal, then drag/dropping the folder from Finder on top of the terminal, then pressing Enter. E.g, 'Documents,' or 'Downloads.' That saves some typing.
- In terminal, grant execute permission to the Python script: chmod +x fcpxml-single-clip-metadata.py
- To run it: python3 fcpxml-single-clip-metadata.py
- It will prompt you for the pathname to the .fcpxmld bundle. You can drag/drop from Finder on top of the terminal window. That saves typing the pathname + filename. It will accept either the new .fcpxmld bundle format or the older .fcpxml format.
- It will print to your terminal screen all available metadata about that clip. You can copy/paste to an editor for better searching, although you can do CMD+F and search within the terminal window.
- The task is compare the metadata info such as duration, clip name, number of audio channels, etc. to the metadata given for that same file by MediaInfo.
- In most cases, comparing those two sets of metadata will reveal a conflicting item. In some cases, the filename, original import folder, etc, returned by the Python script will help remember what happened to the clip.