{"version": 2, "width": 100, "height": 32, "timestamp": 1790246914, "idle_time_limit": 5.0, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
[0.022209, "o", "\u001b[1;35mPyFFmpegCore 0.3.2 — public artifact to privacy-safe proof\u001b[0m\r\nEverything below runs now in this terminal; the media is synthetic and stays local.\r\n"]
[6.036663, "o", "\r\n\u001b[1;36m$ python3 -m venv demo-env\u001b[0m\r\n"]
[11.46659, "o", "\r\n\u001b[1;36m$ demo-env/bin/python -m pip install pyffmpegcore==0.3.2\u001b[0m\r\n"]
[12.891324, "o", "Collecting pyffmpegcore==0.3.2 (from -r /var/folders/7b/80dmndy11t904kbw93kk1z180000gp/T/tmp.m7TbvFhw9s (line 1))\r\n"]
[13.034719, "o", "  Downloading pyffmpegcore-0.3.2-py3-none-any.whl (100 kB)\r\n"]
[13.076629, "o", "Installing collected packages: pyffmpegcore\r\n"]
[13.17535, "o", "Successfully installed pyffmpegcore-0.3.2\r\n"]
[17.230964, "o", "\r\n\u001b[1;36m$ demo-env/bin/pyffmpegcore --version\u001b[0m\r\n"]
[18.744687, "o", "pyffmpegcore 0.3.2\r\n"]
[21.772494, "o", "\r\n\u001b[1;36m$ demo-env/bin/pyffmpegcore doctor\u001b[0m\r\n"]
[23.308117, "o", "PyFFmpegCore CLI 0.3.2\r\nPlatform: Darwin 25.6.0 (arm64)\r\nPython: 3.14.6 (/private/tmp/pyffmpegcore-terminal-demo.XWSNaN/demo-env/bin/python)\r\nffmpeg: OK (/opt/homebrew/bin/ffmpeg)\r\n  ffmpeg version 9.0.1 Copyright (c) 2000-2026 the FFmpeg developers\r\nffprobe: OK (/opt/homebrew/bin/ffprobe)\r\n  ffprobe version 9.0.1 Copyright (c) 2007-2026 the FFmpeg developers\r\nCapabilities: 190 encoders, 527 decoders, 481 filters, 184 muxers, 365 demuxers\r\nProtocols: 37 input, 30 output\r\n"]
[23.308195, "o", "Subtitles: encoders=ass,mov_text,srt,webvtt, burn-filter=no\r\nHardware acceleration: videotoolbox\r\nOptional core filters missing: drawtext, subtitles\r\n"]
[27.340334, "o", "\r\n\u001b[1;36m$ demo-env/bin/pyffmpegcore smoke-test --keep-dir media\u001b[0m\r\n"]
[29.08568, "o", "Smoke test: PASS\r\nSynthetic input: mpeg4 320x180 (64.8 KB)\r\nVerified thumbnail: 160x90 (3.6 KB)\r\n"]
[29.085715, "o", "Artifacts: /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media\r\n"]
[33.115251, "o", "\r\nMake the one-second synthetic input longer so structured progress is visible.\r\n\r\n\u001b[1;36m$ ffmpeg -stream_loop 59 -i media/synthetic-input.mp4 -t 60 -c copy media/demo-input.mp4\u001b[0m\r\n"]
[37.222976, "o", "\r\n\u001b[1;36m$ demo-env/bin/pyffmpegcore profile run web/mp4-compatible --input media/demo-input.mp4 --output media/web.mp4 --explain\u001b[0m\r\n"]
[38.678594, "o", "Plan 1.0 — convert\r\nOverwrite policy: refuse\r\nTimeout: none\r\nInputs:\r\n  /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/demo-input.mp4\r\nExpected outputs:\r\n  /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4\r\nArgument vectors (display only; no shell is used):\r\n  1. convert: ffmpeg -n -nostdin -progress pipe:1 -nostats -i /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/demo-input.mp4 -map '0:v:0?' -map '0:a:0?' -map_metadata 0 -map_chapters 0 -c:v libx264 -c:a aac -pix_fmt yuv420p -movflags +faststart /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4\r\nSelected streams:\r\n  video\r\n  audio\r\nOperations and trade-offs:\r\n  apply profile web/mp4-compatible v1\r\n  select the first video and first audio streams when present\r\n  preserve compatible container metadata and chapters\r\n  video codec: libx264\r\n  audio codec: aac\r\n  pixel format: yuv420p\r\n  hardware acceleration: none; use the software path\r\nRequired capabilities:\r\n  encoder:libx264\r\n  encoder:aac\r\n  muxer:mp4\r\nWarnings:\r\n  Only "]
[38.678643, "o", "the first video and first audio streams are selected. Other video or audio streams, subtitles, data streams, and attachments are omitted. Use --preserve-all-streams when the output container supports their codecs.\r\n\r\nPreflight PASS — convert\r\n[OK] ffmpeg: Executable: /opt/homebrew/bin/ffmpeg\r\n[OK] capability/encoder:libx264: Available\r\n[OK] capability/encoder:aac: Available\r\n[OK] capability/muxer:mp4: Available\r\n[OK] input//private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/demo-input.mp4: Input is readable\r\n[OK] output//private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4: Output parent is writable: /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media\r\n[OK] collision//private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4: No blocking output collision\r\n[OK] disk//private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4: Free space 162488074240 bytes; estimate 3802982\r\n[OK] container//private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4: Muxer available: mp4\r\n"]
[44.710465, "o", "\r\n\u001b[1;36m$ demo-env/bin/pyffmpegcore profile run web/mp4-compatible --input media/demo-input.mp4 --output media/web.mp4 --receipt media/web.receipt.json\u001b[0m\r\n"]
[46.756444, "o", "\rProgress:  36.5% (21.90s)"]
[47.26638, "o", "\rProgress:  66.9% (40.17s)"]
[47.776389, "o", "\rProgress:  96.6% (57.95s)"]
[47.85024, "o", "\rProgress: 100% complete  \r\n"]
[48.072623, "o", "Output: /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.mp4\r\nContainer: mov,mp4,m4a,3gp,3g2,mj2\r\nDuration: 60.02 seconds\r\nSize: 2.5 MB\r\nVideo: h264 320x180\r\nAudio: aac\r\n"]
[48.072713, "o", "Receipt: /private/tmp/pyffmpegcore-terminal-demo.XWSNaN/media/web.receipt.json\r\n"]
[54.10269, "o", "\r\n\u001b[1;36m$ demo-env/bin/pyffmpegcore receipt validate media/web.receipt.json\u001b[0m\r\n"]
[55.284422, "o", "Valid receipt: schema 1.0, 1 item(s)\r\n"]
[59.312548, "o", "\r\n\u001b[1;32mPASS\u001b[0m — public install, preflight, plan, progress, output, and receipt all verified.\r\nNo upload. No telemetry. Content hashing stayed off.\r\n"]
[63.330815, "o", "Recording complete — replay the commands against any local media file.\r\n"]
