I have an AVI video and need to know if someone has cut some parts from it in the past.
Is there any software that can help do such a check?
I'd say, you can't know for sure.
Take a look at the AVI file format:
RIFF RIFF HEADER
|-AVI AVI CHUNK
|-hdrl MAIN AVI HEADER
| |-avih AVI HEADER
| |-strl STREAM LIST[One per stream]
| | |-strh STREAM HEADER[Requiered after above]
| | |-strf STREAM FORAMT
| | |-strd OPTIONAL -- STREAM DATA
| | |-strn OPTIONAL -- STREAM NAME
|-movi MOVIE DATA
| |-rec RECORD DATA[SEE BELOW]
| |-[data subchunks] RAW DATA[SEE BELOW]
|-idx1 AVI INDEX
|-[index data] DATA
An AVI (which is in essence a RIFF file) contains of multiple chunks.
hdr
)movi
)idx
)The movie data is to be found where it says RAW DATA
(under the movi
chunk). The index data is entirely optional, but it can be used to specify where to find which part of the video. This allows seeking in the video.
Now, suppose you cut parts from an AVI file with a full index. Then you observe this file. There are three possibilities:
The file has a correctly built index chunk: This would mean the file is intact and you can not say if it was cut at all. It can't be distinguished from the original file (except for the file size).
The file has no index chunk at all: This would be a hint that the file was edited somehow, but the editor failed to write an index. It's not a proof that a file was edited, but a very strong hint. In order to have a "complete" file, you'd need to reindex it and generate the index chunk.
The file has a broken index chunk: This would mean somebody manually edited the file, either chopping off bytes from the end or corrupting it in any other way.
Now the only question left is: How do I know if there's an index chunk? I can't try it out, maybe AviFiXP has an option to verify this. There's also DivFix++ which can check for errors.
To summarize, you can't really tell it from just looking at the file. A broken or missing index might be a hint, but not a full proof.