Using ffmepg crccheck to verify embedded CRCs of purchased movies is failing. This results in stuttering and freezing when playing video files, and it happens on different frames each time you re-download, so the results are not consistent. Trying different audio or video streams fails in different places.
For instance, EAC3:
[eac3 @ 0000020e00b1d2c0] frame CRC mismatch time=00:00:00.00 bitrate=N/A speed=1.55e-07x elapsed=0:01:11.12
[aist#0:1/eac3 @ 0000020e7f8fea80] [dec:eac3 @ 0000020e00357e00] Error submitting packet to decoder: Invalid data found when processing input
[aist#0:1/eac3 @ 0000020e7f8fea80] [dec:eac3 @ 0000020e00357e00] Terminating thread with return code -1094995529 (Invalid data found when processing input)
frame=108284 fps=1517 q=-0.0 Lq=-0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=1.54e-07x elapsed=0:01:11.36
RESULT: FAIL
—
AAC failure:
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 39995).rate=N/A speed=1.63e-06x elapsed=0:00:06.75
[h264 @ 0000027859b33a40] missing picture in access unit with size 39999
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 40075).
[h264 @ 0000027859b33a40] missing picture in access unit with size 40079
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 40496).
[h264 @ 0000027859b33a40] missing picture in access unit with size 40500
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 29213).
[h264 @ 0000027859b33a40] missing picture in access unit with size 29217
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 30962).
[h264 @ 0000027859b33a40] missing picture in access unit with size 30966
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 29415).
[h264 @ 0000027859b33a40] missing picture in access unit with size 29419
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 25703).
[h264 @ 0000027859b33a40] missing picture in access unit with size 25707
[h264 @ 000002785a319780] Invalid NAL unit size (42212 > 39995).
[h264 @ 000002785a319780] Error splitting the input into NAL units.
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 28899).
[h264 @ 0000027859b33a40] missing picture in access unit with size 28903
[h264 @ 0000027859706640] Invalid NAL unit size (42212 > 40075).
[h264 @ 0000027859706640] Error splitting the input into NAL units.
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 25717).
[h264 @ 0000027859b33a40] missing picture in access unit with size 25721
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 22829).
[h264 @ 0000027859706cc0] fInvalid NAL unit size (42212 > 40496).
r[h264 @ 0000027859b33a40] amissing picture in access unit with size 22833
m[h264 @ 0000027859706cc0] Error splitting the input into NAL units.
e[h264 @ 0000027859b33a40] =Invalid NAL unit size (42212 > 24354).
12[h264 @ 0000027859b33a40] 1missing picture in access unit with size 24358
63[h264 @ 0000027859da6c40] Invalid NAL unit size (-1862388615 > 61153).
f[h264 @ 0000027859da6c40] pError splitting the input into NAL units.
s=1674 q=-0.0 q=-0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=1.51e-06[h264 @ 0000027859b33a40] xInvalid NAL unit size (42212 > 24107).
e[h264 @ 0000027859b33a40] lmissing picture in access unit with size 24111
ap[h264 @ 000002785a542c00] sInvalid NAL unit size (42212 > 29213).
ed[h264 @ 000002785a542c00] =Error splitting the input into NAL units.
0:0[h264 @ 000002785a542fc0] 0Invalid NAL unit size (42212 > 30962).
:0[h264 @ 000002785a542fc0] 7Error splitting the input into NAL units.
.2[h264 @ 0000027859b33a40] 6Invalid NAL unit size (42212 > 21487).
[h264 @ 0000027859b33a40] missing picture in access unit with size 21491
[h264 @ 000002785a543700] Invalid NAL unit size (42212 > 29415).
[h264 @ 000002785a543700] Error splitting the input into NAL units.
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 21639).
[h264 @ 0000027859b33a40] missing picture in access unit with size 21643
[h264 @ 000002785a319300] Invalid NAL unit size (42212 > 25703).
[h264 @ 000002785a319300] Error splitting the input into NAL units.
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 20263).
[h264 @ 0000027859b33a40] missing picture in access unit with size 20267
[h264 @ 00000278596df1c0] Reference 2 >= 2
[h264 @ 00000278596df1c0] error while decoding MB 83 52, bytestream 6520
[vist#0:0/h264 @ 0000027859da8e40] [dec:h264 @ 000002785a318880] Error submitting packet to decoder: Invalid data found when processing input
[vist#0:0/h264 @ 0000027859da8e40] [dec:h264 @ 000002785a318880] Error processing packet in decoder: Invalid data found when processing input
[vist#0:0/h264 @ 0000027859da8e40] [dec:h264 @ 000002785a318880] Task finished with error code: -1094995529 (Invalid data found when processing input)
[vist#0:0/h264 @ 0000027859da8e40] [dec:h264 @ 000002785a318880] Terminating thread with return code -1094995529 (Invalid data found when processing input)
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 20496).
[h264 @ 0000027859b33a40] missing picture in access unit with size 20500
[h264 @ 0000027859b33a40] Invalid NAL unit size (42212 > 24059).
[h264 @ 0000027859b33a40] missing picture in access unit with size 24063
frame=12168 fps=1673 q=-0.0 Lq=-0.0 size=N/A time=00:00:00.00 bitrate=N/A speed=1.51e-06x elapsed=0:00:07.27
Here’s the ffmpeg command for validation, you would replace %INFILE% with your video name.
ffmpeg -hide_banner -nostdin -stats -stats_period 0.5 -v error -xerror -err_detect explode+crccheck -i "%INFILE%" -map 0:v? -map 0:a? -sn -dn -f null -
What it is doing:
-hide_banner hides the startup banner.
-nostdin disables interactive stdin input.
-stats -stats_period 0.5 prints progress stats every 0.5 seconds.
-v error shows only errors in logging.
-xerror makes FFmpeg stop immediately on an error.
-err_detect explode+crccheck tells FFmpeg to verify embedded CRCs where supported, and to abort decoding even on minor detected errors. FFmpeg documents crccheck as “verify embedded CRCs” and explode as “abort decoding on minor error detection.”
-i “%INFILE%” opens your input file.
-map 0:v? -map 0:a? selects video and audio streams from input 0, but the trailing ? makes each map optional so the command will not fail just because a file has no video or no audio.
-sn -dn ignores subtitle and data streams.
-f null - decodes the selected streams and sends the output to the null muxer, which discards everything instead of writing a real file.