# Reproduce the silent-video diagnostic controls Measured on 29 October 2026. This experiment uses one existing real video and constructed audio tracks. It does not measure AI model failure rates. The full numeric results, hashes, tool versions and limitations are in `measurements.json`. You need FFmpeg, ffprobe and Python on your command line. Work in a new empty directory. The commands create local files and do not upload your video or call a generation service. Use ordinary double quotes as shown; no shell-specific line continuation is required. ## 1. Get and verify the source The source is the site's existing product-video fixture: `https://imgmov.com/seo/2026-09-04-ai-image-and-video/product-agnes-video.mp4` ```sh python -c "from urllib.request import urlretrieve; urlretrieve('https://imgmov.com/seo/2026-09-04-ai-image-and-video/product-agnes-video.mp4', 'source.mp4')" python -c "from pathlib import Path; import hashlib; print(hashlib.sha256(Path('source.mp4').read_bytes()).hexdigest())" ``` Expected SHA-256: ```text 7b2e64fbd62b5a071487ec87771efc1b5fc8aea2059b52cdb16b078a4e033305 ``` Stop if the hash differs: the file may have changed and it is no longer this experiment's exact source. The source has H.264 video at 704 x 704, 24 fps, 124 frames and a 5.166667-second video duration. It also has an AAC stereo track at 32 kHz. Record your versions and inspect the actual source: ```sh ffmpeg -version ffprobe -version ffprobe -v error -show_streams -show_format -of json source.mp4 ``` This run used FFmpeg `7.1-essentials_build-www.gyan.dev` and ffprobe `2023-02-13-git-2296078397-essentials_build-www.gyan.dev`. Other builds may change encoded bytes, padding or displayed statistics. The JSON records the tested versions; do not claim a byte-for-byte match on a different build. ## 2. Create the controls without re-encoding the picture The first control removes the original audio stream: ```sh ffmpeg -hide_banner -i source.mp4 -map 0:v:0 -c:v copy -an -movflags +faststart no-audio.mp4 ``` The second keeps the same picture and adds an all-zero AAC audio track: ```sh ffmpeg -hide_banner -i source.mp4 -f lavfi -i "anullsrc=r=48000:cl=mono" -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 128k -t 5.166667 -movflags +faststart silent-track.mp4 ``` The third adds a 440 Hz synthetic tone encoded as AAC. This is a signal control, not a generated voice or soundtrack. Keep playback volume low if you choose to listen. ```sh ffmpeg -hide_banner -i source.mp4 -f lavfi -i "sine=frequency=440:sample_rate=48000" -map 0:v:0 -map 1:a:0 -c:v copy -c:a aac -b:a 128k -t 5.166667 -movflags +faststart audible-tone.mp4 ``` The optional fourth control keeps a very quiet but nonzero 440 Hz tone in float PCM. This demonstrates the difference between threshold silence and exact zeros: ```sh ffmpeg -hide_banner -i source.mp4 -f lavfi -i "sine=frequency=440:sample_rate=48000,volume=0.00008" -map 0:v:0 -map 1:a:0 -c:v copy -c:a pcm_f32le -t 5.166667 -movflags +faststart quiet-nonzero-tone.mov ``` Compare the encoded video packet hashes. Substitute each control's filename for `source.mp4`; all five files matched in this run: ```sh ffmpeg -hide_banner -i source.mp4 -map 0:v:0 -c:v copy -f hash -hash sha256 - ``` Expected video packet result: ```text SHA256=7a10c15c1262ed88ad1ca6ca77a9bf163fa52c2569a1f11a42a7f0eb006014af ``` ## 3. Check whether an audio stream exists Replace `input.mp4` with a source or control filename: ```sh ffprobe -v error -select_streams a -show_entries stream=index,codec_name,sample_rate,channels,duration -of json input.mp4 ``` `no-audio.mp4` returns an empty `streams` array. That is different from a file containing a silent audio track. A probe or decode error is not an empty-stream finding. ## 4. Measure the first audio stream ```sh ffmpeg -hide_banner -nostats -i input.mp4 -map 0:a:0 -vn -af astats=metadata=0:reset=0 -f null - ffmpeg -hide_banner -nostats -i input.mp4 -map 0:a:0 -vn -af volumedetect -f null - ffmpeg -hide_banner -nostats -i input.mp4 -map 0:a:0 -vn -af silencedetect=noise=-60dB:duration=0.5 -f null - ``` These commands analyze the whole first audio stream. Repeat with `0:a:1`, and so on, if your file contains more tracks. They correctly fail to map audio on `no-audio.mp4`; do not interpret that failure as silence. | Control | volumedetect maximum | astats overall peak / RMS | Threshold result at -60 dBFS for at least 0.5 s | | --- | --- | --- | --- | | All-zero AAC | -91.0 dB | -inf / -inf | 0–5.184 s | | 440 Hz AAC tone | -16.3 dB | -16.318709 / -21.091825 dBFS | No interval reported | | Quiet nonzero float-PCM tone | -91.0 dB | -100.002121 / -103.012116 dBFS | 0–5.166667 s | The AAC controls decode to 5.184 seconds because of codec padding, slightly longer than the video. No diagnostic time limit or seek was used. The measured `volumedetect` maximum of -91.0 dB cannot distinguish exact zeros from this very quiet nonzero signal. A threshold-silence interval cannot distinguish them either. `astats` shows finite levels for the quiet control and `-inf` for the all-zero control. A finite level proves nonzero signal, not speech, music, perceptual audibility or useful sound. ## 5. Verify exact zeros independently For a stronger check than rounded printed statistics, decode to float32 samples and count exact nonzero values. The intermediate file avoids binary shell-pipeline differences between platforms: ```sh ffmpeg -v error -i silent-track.mp4 -map 0:a:0 -vn -c:a pcm_f32le -f f32le decoded.f32 python -c "from pathlib import Path; from array import array; import sys; a=array('f'); a.frombytes(Path('decoded.f32').read_bytes()); a.byteswap() if sys.byteorder != 'little' else None; print({'sample_values':len(a),'nonzero_values':sum(x != 0 for x in a),'minimum':min(a),'maximum':max(a)})" ``` The all-zero AAC control yielded **0 nonzero values out of 248,832**. The quiet float-PCM control yielded **247,586 nonzero values out of 248,000**, reaching approximately +/-0.00000999756. Run the decode with a different output filename when comparing controls, or remove your previous intermediate file deliberately. Treat missing statistics, failed decoding, NaN/Inf samples or no decoded samples as errors to investigate. None is evidence of digital silence. ## Limits The downloadable controls contain synthetic audio added to one real video. They show diagnostic distinctions, not how often any AI model fails. This experiment did not test browser playback, device volume, headphones, listening thresholds or production behavior. No sensitive account details, local filesystem paths or executables are included in this evidence package.