ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
@@ -0,0 +1,13 @@
|
||||
Blender 4.3.2
|
||||
build date: 2024-12-17
|
||||
build time: 02:14:25
|
||||
build commit date: 2024-12-16
|
||||
build commit time: 21:10
|
||||
build hash: 32f5fdce0a0a
|
||||
build branch: blender-v4.3-release
|
||||
build platform: Darwin
|
||||
build type: Release
|
||||
build c flags: -Wall -Werror=implicit-function-declaration -Werror=return-type -Wno-tautological-compare -Wno-unknown-pragmas -Wno-char-subscripts -Wstrict-prototypes -Wmissing-prototypes -Wunused-parameter -Wundef -Wundef-prefix -Werror=unguarded-availability-new -mmacosx-version-min=11.2 -Xclang -fopenmp -I'/Users/blender/git/blender-v430/blender.git/lib/macos_arm64/openmp/include' -std=gnu11 -pipe -funsigned-char -fno-strict-aliasing -ffp-contract=off
|
||||
build c++ flags: -Wall -Wc++20-designator -Wno-tautological-compare -Wno-unknown-pragmas -Wno-char-subscripts -Wno-overloaded-virtual -Wno-sign-compare -Wno-invalid-offsetof -Wno-suggest-override -Wundef -Wundef-prefix -Wunused-parameter -Wmismatched-tags -Werror=unguarded-availability-new -mmacosx-version-min=11.2 -ftemplate-depth=1024 -Xclang -fopenmp -I'/Users/blender/git/blender-v430/blender.git/lib/macos_arm64/openmp/include' -pipe -funsigned-char -fno-strict-aliasing -ffp-contract=off
|
||||
build link flags: -fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework Metal -framework QuartzCore -framework Accelerate -liconv -Wl,-unexported_symbols_list,'/Users/blender/git/blender-v430/blender.git/source/creator/symbols_apple.map' -Xlinker -no_warn_duplicate_libraries
|
||||
build system: CMake
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 275 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 258 KiB |
|
After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 225 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
After Width: | Height: | Size: 240 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 440 KiB |
|
After Width: | Height: | Size: 440 KiB |
|
After Width: | Height: | Size: 192 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 282 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 284 KiB |
|
After Width: | Height: | Size: 330 KiB |
|
After Width: | Height: | Size: 116 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 179 KiB |
|
After Width: | Height: | Size: 94 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 206 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 44 KiB |
@@ -0,0 +1,334 @@
|
||||
{
|
||||
"request": "Cut out the shot of the large white rabbit walking alone in the sunny meadow, slow it to 1.5x duration, and add the subtitle BIG BUNNY along the bottom.",
|
||||
"target": "the single continuous shot showing the large white rabbit walking alone in a sunny green meadow, after the ONE BIG RABBIT title and before the THREE RODENTS title",
|
||||
"coarse_interval_s": 10,
|
||||
"coarse_frames": [
|
||||
{
|
||||
"timestamp_s": 0.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-000.00.png",
|
||||
"sha256": "cdd5c7f27f84347a40eb467c356c5a2fda3facdad9057f246034e355b89dcfdd",
|
||||
"bytes": 1580
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-010.00.png",
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
{
|
||||
"timestamp_s": 20.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-020.00.png",
|
||||
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
|
||||
"bytes": 183618
|
||||
},
|
||||
{
|
||||
"timestamp_s": 30.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-030.00.png",
|
||||
"sha256": "ce5d5733e716607000f9d6aef75dbb9b31279dd50e7db7c6c1e714819624224a",
|
||||
"bytes": 264372
|
||||
},
|
||||
{
|
||||
"timestamp_s": 31.495,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-031.50.png",
|
||||
"sha256": "57e555d305ac18228155454935f9a411a9e21ccc092348997f8e3299d4011b89",
|
||||
"bytes": 40146
|
||||
}
|
||||
],
|
||||
"coarse_result": {
|
||||
"start": 10.0,
|
||||
"end": 20.0,
|
||||
"reason": "The 10.00s frame shows a large white rabbit standing alone in a sunny green meadow with a backdrop of mountains and clouds. The next frame at 20.00s transitions to three rodents in a different setting, indicating the rabbit shot is continuous between these timestamps."
|
||||
},
|
||||
"fine_interval_s": 1,
|
||||
"fine_window": [
|
||||
5,
|
||||
25
|
||||
],
|
||||
"fine_frames": [
|
||||
{
|
||||
"timestamp_s": 5.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-005.00.png",
|
||||
"sha256": "7bf0f2f437e8781ac96e6a27b41f975189c3784dbd3368672d43fd4b2d92813a",
|
||||
"bytes": 451029
|
||||
},
|
||||
{
|
||||
"timestamp_s": 6.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-006.00.png",
|
||||
"sha256": "618ee855deb607995c0be98d0a64db5614c4f851837af105e0672822947fe361",
|
||||
"bytes": 451002
|
||||
},
|
||||
{
|
||||
"timestamp_s": 7.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-007.00.png",
|
||||
"sha256": "40e9724ee1834abee7d12002cd83a4120738b0ffd0a294741c25c2135edb02b8",
|
||||
"bytes": 196294
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-008.00.png",
|
||||
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
|
||||
"bytes": 25229
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-009.00.png",
|
||||
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
|
||||
"bytes": 26259
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-010.00.png",
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-011.00.png",
|
||||
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
|
||||
"bytes": 290263
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-012.00.png",
|
||||
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
|
||||
"bytes": 23585
|
||||
},
|
||||
{
|
||||
"timestamp_s": 13.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-013.00.png",
|
||||
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
|
||||
"bytes": 24310
|
||||
},
|
||||
{
|
||||
"timestamp_s": 14.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-014.00.png",
|
||||
"sha256": "ab5ed49e0a1267d80e53bc524db96a521aedf419d4a2e766463bd58fc2cbd96a",
|
||||
"bytes": 290328
|
||||
},
|
||||
{
|
||||
"timestamp_s": 15.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-015.00.png",
|
||||
"sha256": "101c7a220045bdad559ffabcf2345a307c4b2a8ace71c1f289f861cb5ac8dfcf",
|
||||
"bytes": 337454
|
||||
},
|
||||
{
|
||||
"timestamp_s": 16.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-016.00.png",
|
||||
"sha256": "6b674c7689ae86485ce112daa9a14cbd4334d3c41cbc12bcc8a06b0c34c3d0bd",
|
||||
"bytes": 118937
|
||||
},
|
||||
{
|
||||
"timestamp_s": 17.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-017.00.png",
|
||||
"sha256": "44134f20bffcd9fb57c3ca421a7be03fa2596962423a955140bf44e3d5c2582b",
|
||||
"bytes": 24201
|
||||
},
|
||||
{
|
||||
"timestamp_s": 18.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-018.00.png",
|
||||
"sha256": "bf44d8b974343063293c92d2933edd0e9a711802d44753f5c0c8b4f4cf3406aa",
|
||||
"bytes": 25412
|
||||
},
|
||||
{
|
||||
"timestamp_s": 19.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-019.00.png",
|
||||
"sha256": "7d2fdecd1cff9d025880e069d111c9e8aa0c488dd1e570b62f5147a136543271",
|
||||
"bytes": 78776
|
||||
},
|
||||
{
|
||||
"timestamp_s": 20.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-020.00.png",
|
||||
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
|
||||
"bytes": 183618
|
||||
},
|
||||
{
|
||||
"timestamp_s": 21.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-021.00.png",
|
||||
"sha256": "c9758159919eb5f8612e3af01258d1c7792d446ca5c08add2ff3dcd3b97e7617",
|
||||
"bytes": 96371
|
||||
},
|
||||
{
|
||||
"timestamp_s": 22.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-022.00.png",
|
||||
"sha256": "54b41278b256654341515bee8f7adb3166bdb15c90f3da9f7f47eb72cad77d33",
|
||||
"bytes": 192864
|
||||
},
|
||||
{
|
||||
"timestamp_s": 23.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-023.00.png",
|
||||
"sha256": "3e49ae19ac287a5acdcff0db46d93d3ca77f98d039d9c53f07210466a323b5b3",
|
||||
"bytes": 22428
|
||||
},
|
||||
{
|
||||
"timestamp_s": 24.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-024.00.png",
|
||||
"sha256": "6eb1ae362db441052be6685922270fcd86572c8b223e99a41a519424ac113c0d",
|
||||
"bytes": 24410
|
||||
},
|
||||
{
|
||||
"timestamp_s": 25.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-025.00.png",
|
||||
"sha256": "354595be0073fcaed614da1ff41177f01e54f74b63f5614ed5033a9c00e0a773",
|
||||
"bytes": 211411
|
||||
}
|
||||
],
|
||||
"fine_result": {
|
||||
"start": 9.0,
|
||||
"end": 12.0,
|
||||
"reason": "The large white rabbit is shown alone in a sunny green meadow with mountains and pink clouds at 10.00s and 11.00s, between the 'ONE BIG RABBIT' title (ends at 9.00s) and 'THREE RODENTS' title (starts at 12.00s), with consistent visual elements indicating a single continuous shot."
|
||||
},
|
||||
"ground_truth": {
|
||||
"start": 9.08,
|
||||
"end": 11.2
|
||||
},
|
||||
"start_error_s": 0.08,
|
||||
"end_error_s": 0.8,
|
||||
"reviewer_driven_refinements": [
|
||||
{
|
||||
"round": 1,
|
||||
"prior_interval": [
|
||||
9.0,
|
||||
12.0
|
||||
],
|
||||
"source_frames": [
|
||||
{
|
||||
"timestamp_s": 8.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.00.png",
|
||||
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
|
||||
"bytes": 25229
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.25.png",
|
||||
"sha256": "fc4e9dfec0220c38b50fa199c95332eba6ad403d683042318e059c8cc0d06d57",
|
||||
"bytes": 26862
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.50.png",
|
||||
"sha256": "23520885852103457d35c7f97617da0090763888261c4b5003793c6d6b48b070",
|
||||
"bytes": 27408
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.75.png",
|
||||
"sha256": "a26f15eb86f4d0633cc3f6ed4659e500e3480d6a93703bd961d920d58cb22dcb",
|
||||
"bytes": 27826
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.00.png",
|
||||
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
|
||||
"bytes": 26259
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.25.png",
|
||||
"sha256": "23b0a10b6440ac809301ebdae5ef3e174440c51c1bdbe1e341daa1811b32b6ec",
|
||||
"bytes": 281564
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.50.png",
|
||||
"sha256": "b1534ad39b5d73921220488351b56de61e387f02d0d2d63007bba0947dde64c8",
|
||||
"bytes": 282016
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.75.png",
|
||||
"sha256": "ac5db4099b689927bb0e3b91f6d9a402b5c28576b0c759a8c8430ea090ede3f0",
|
||||
"bytes": 281200
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.00.png",
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.25.png",
|
||||
"sha256": "077c87cb4d94b1d0647968b48fd9ae3dfe73b3b83e7052b718b0c2a1638884e9",
|
||||
"bytes": 290424
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.50.png",
|
||||
"sha256": "1702da4cdbf746a8f5b3b3ea1dbbe20065810e896cf5eead3b4e0e899a95ace6",
|
||||
"bytes": 290739
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.75.png",
|
||||
"sha256": "f4b896f7e565cbe8753020129ce1d2420ef7fa1d7d5e35274a544cb91ecefc05",
|
||||
"bytes": 290790
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.00.png",
|
||||
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
|
||||
"bytes": 290263
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.25.png",
|
||||
"sha256": "bd9c57afa81fbcb2dfd6aa1fafe0e4bfcd3da4e13b69b8086234b26906923bb1",
|
||||
"bytes": 22691
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.50.png",
|
||||
"sha256": "7a00b9b759b7ea49228504de9b4481be13a24b86bba9284899c48ee6c39c24f6",
|
||||
"bytes": 24009
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.75.png",
|
||||
"sha256": "42f8c635d8ec11df1d542340fe5bb977a9d9799878937ecac77366bfa2fd3897",
|
||||
"bytes": 24402
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.00.png",
|
||||
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
|
||||
"bytes": 23585
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.25.png",
|
||||
"sha256": "5459ffd9787260f9f96f16464e7a8842c5535f4a725eaee8d7b6f114a0ff6e45",
|
||||
"bytes": 24966
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.50.png",
|
||||
"sha256": "47974ae09fd7f2f4affdf06dba5aa92e16dca70da873cd1f631171f46e8dccf9",
|
||||
"bytes": 25722
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.75.png",
|
||||
"sha256": "cd6c95353c889323e7af0f0768a65c310ce0d4cc7aa2651b83a528805ddbd10f",
|
||||
"bytes": 26543
|
||||
},
|
||||
{
|
||||
"timestamp_s": 13.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-013.00.png",
|
||||
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
|
||||
"bytes": 24310
|
||||
}
|
||||
],
|
||||
"result": {
|
||||
"start": 9.25,
|
||||
"end": 11.0,
|
||||
"reason": "visual boundary evidence"
|
||||
}
|
||||
}
|
||||
],
|
||||
"final_interval": [
|
||||
9.25,
|
||||
11.0
|
||||
],
|
||||
"final_start_error_s": 0.17,
|
||||
"final_end_error_s": 0.2
|
||||
}
|
||||
@@ -0,0 +1,390 @@
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"experiment": "5-6",
|
||||
"run_id": "exp5-6-real-blender-20260730-055102",
|
||||
"generated_at_utc": "2026-07-29T22:02:57Z",
|
||||
"provider": "ark",
|
||||
"model": "doubao-seed-1-6-250615",
|
||||
"source_url": "https://download.blender.org/peach/trailer/trailer_480p.mov",
|
||||
"source_sha256": "36801b74638c12be9aa587e93cd18edfc9bc51a1c089ab2a19ee42beed9f497d",
|
||||
"blender_binary": "/Applications/Blender.app/Contents/MacOS/Blender",
|
||||
"blender_version": "Blender 4.3.2",
|
||||
"localization": {
|
||||
"predicted": [
|
||||
9.25,
|
||||
11.0
|
||||
],
|
||||
"ground_truth": [
|
||||
9.08,
|
||||
11.2
|
||||
],
|
||||
"errors_s": [
|
||||
0.17,
|
||||
0.2
|
||||
],
|
||||
"reviewer_driven_refinement_rounds": 1
|
||||
},
|
||||
"final_video": {
|
||||
"path": "final.mp4",
|
||||
"sha256": "1b90aaecbddb60ec1bef6b02757c7467a59284f3cb35fb195e5e0c1d512e42b4",
|
||||
"probe": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "h264",
|
||||
"codec_type": "video",
|
||||
"width": 854,
|
||||
"height": 480,
|
||||
"r_frame_rate": "25/1"
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "aac",
|
||||
"codec_type": "audio",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"r_frame_rate": "0/0"
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
|
||||
"duration": "2.645000",
|
||||
"size": "318571"
|
||||
}
|
||||
}
|
||||
},
|
||||
"model_call_count": 13,
|
||||
"gates": {
|
||||
"pinned_real_public_multiscene_source": true,
|
||||
"coarse_real_vision_about_10_seconds": true,
|
||||
"fine_real_vision_every_1_second": true,
|
||||
"start_boundary_error_le_3s": true,
|
||||
"end_boundary_error_le_3s": true,
|
||||
"model_generated_blender_python": true,
|
||||
"actual_blender_execution": true,
|
||||
"reviewer_rejected_bad_edit": true,
|
||||
"reviewer_triggered_correction": true,
|
||||
"reviewer_accepted_corrected_pixels": true,
|
||||
"subtitle_visually_verified": true,
|
||||
"slow_motion_duration_verified": true,
|
||||
"final_format_and_quality": true,
|
||||
"raw_receipts_usage_latency_complete": true
|
||||
},
|
||||
"artifacts": {
|
||||
"blender_logs/corrected-final-attempt-1.log": {
|
||||
"sha256": "80f96d1d2a6a49e260e9809317dc40299e05181394e5b3110141d71b986551b5",
|
||||
"bytes": 593
|
||||
},
|
||||
"blender_logs/corrected-final-attempt-2.log": {
|
||||
"sha256": "2fec44809211c67c31f5885b50ba0dd0625eec50361ad8eb0697fa99b2f8d012",
|
||||
"bytes": 419
|
||||
},
|
||||
"blender_logs/corrected-final-attempt-4.log": {
|
||||
"sha256": "c1605819fd5a3dc505bbbee8a51646d821da2d7e69ca160211fc3d0ff129ba18",
|
||||
"bytes": 5790
|
||||
},
|
||||
"blender_logs/corrected-final-refinement-1-attempt-1.log": {
|
||||
"sha256": "41c72db03b43c429a5f21f1988725285ad35f85ce6ac0706ad5b0947b3caeed2",
|
||||
"bytes": 606
|
||||
},
|
||||
"blender_logs/corrected-final-refinement-1-attempt-2.log": {
|
||||
"sha256": "71c23904c15612460d1ab33812e111a758e0b02da56db2b28eeb079d2f418a0c",
|
||||
"bytes": 3431
|
||||
},
|
||||
"blender_logs/negative-control-attempt-1.log": {
|
||||
"sha256": "dd986adbcefdb8e98a7e4e919d5f9d373c47edb8c6b93db48b933dc17de81f58",
|
||||
"bytes": 5790
|
||||
},
|
||||
"blender_version.txt": {
|
||||
"sha256": "00e6c06c282a7115cc4f1aaf9a3c8ff7e7d09f25f0f15f32568baa0815f662b4",
|
||||
"bytes": 1641
|
||||
},
|
||||
"final.mp4": {
|
||||
"sha256": "1b90aaecbddb60ec1bef6b02757c7467a59284f3cb35fb195e5e0c1d512e42b4",
|
||||
"bytes": 318571
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-008.00.png": {
|
||||
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
|
||||
"bytes": 25229
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-008.25.png": {
|
||||
"sha256": "fc4e9dfec0220c38b50fa199c95332eba6ad403d683042318e059c8cc0d06d57",
|
||||
"bytes": 26862
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-008.50.png": {
|
||||
"sha256": "23520885852103457d35c7f97617da0090763888261c4b5003793c6d6b48b070",
|
||||
"bytes": 27408
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-008.75.png": {
|
||||
"sha256": "a26f15eb86f4d0633cc3f6ed4659e500e3480d6a93703bd961d920d58cb22dcb",
|
||||
"bytes": 27826
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-009.00.png": {
|
||||
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
|
||||
"bytes": 26259
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-009.25.png": {
|
||||
"sha256": "23b0a10b6440ac809301ebdae5ef3e174440c51c1bdbe1e341daa1811b32b6ec",
|
||||
"bytes": 281564
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-009.50.png": {
|
||||
"sha256": "b1534ad39b5d73921220488351b56de61e387f02d0d2d63007bba0947dde64c8",
|
||||
"bytes": 282016
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-009.75.png": {
|
||||
"sha256": "ac5db4099b689927bb0e3b91f6d9a402b5c28576b0c759a8c8430ea090ede3f0",
|
||||
"bytes": 281200
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-010.00.png": {
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-010.25.png": {
|
||||
"sha256": "077c87cb4d94b1d0647968b48fd9ae3dfe73b3b83e7052b718b0c2a1638884e9",
|
||||
"bytes": 290424
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-010.50.png": {
|
||||
"sha256": "1702da4cdbf746a8f5b3b3ea1dbbe20065810e896cf5eead3b4e0e899a95ace6",
|
||||
"bytes": 290739
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-010.75.png": {
|
||||
"sha256": "f4b896f7e565cbe8753020129ce1d2420ef7fa1d7d5e35274a544cb91ecefc05",
|
||||
"bytes": 290790
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-011.00.png": {
|
||||
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
|
||||
"bytes": 290263
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-011.25.png": {
|
||||
"sha256": "bd9c57afa81fbcb2dfd6aa1fafe0e4bfcd3da4e13b69b8086234b26906923bb1",
|
||||
"bytes": 22691
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-011.50.png": {
|
||||
"sha256": "7a00b9b759b7ea49228504de9b4481be13a24b86bba9284899c48ee6c39c24f6",
|
||||
"bytes": 24009
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-011.75.png": {
|
||||
"sha256": "42f8c635d8ec11df1d542340fe5bb977a9d9799878937ecac77366bfa2fd3897",
|
||||
"bytes": 24402
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-012.00.png": {
|
||||
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
|
||||
"bytes": 23585
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-012.25.png": {
|
||||
"sha256": "5459ffd9787260f9f96f16464e7a8842c5535f4a725eaee8d7b6f114a0ff6e45",
|
||||
"bytes": 24966
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-012.50.png": {
|
||||
"sha256": "47974ae09fd7f2f4affdf06dba5aa92e16dca70da873cd1f631171f46e8dccf9",
|
||||
"bytes": 25722
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-012.75.png": {
|
||||
"sha256": "cd6c95353c889323e7af0f0768a65c310ce0d4cc7aa2651b83a528805ddbd10f",
|
||||
"bytes": 26543
|
||||
},
|
||||
"frames/boundary-refinement-1/frame-013.00.png": {
|
||||
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
|
||||
"bytes": 24310
|
||||
},
|
||||
"frames/coarse/frame-000.00.png": {
|
||||
"sha256": "cdd5c7f27f84347a40eb467c356c5a2fda3facdad9057f246034e355b89dcfdd",
|
||||
"bytes": 1580
|
||||
},
|
||||
"frames/coarse/frame-010.00.png": {
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
"frames/coarse/frame-020.00.png": {
|
||||
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
|
||||
"bytes": 183618
|
||||
},
|
||||
"frames/coarse/frame-030.00.png": {
|
||||
"sha256": "ce5d5733e716607000f9d6aef75dbb9b31279dd50e7db7c6c1e714819624224a",
|
||||
"bytes": 264372
|
||||
},
|
||||
"frames/coarse/frame-031.50.png": {
|
||||
"sha256": "57e555d305ac18228155454935f9a411a9e21ccc092348997f8e3299d4011b89",
|
||||
"bytes": 40146
|
||||
},
|
||||
"frames/final-review/frame-000.35.png": {
|
||||
"sha256": "ba21afabc4197a93b06d4d78ed6f2dff568601b2b94425856efaf5606e49b9bb",
|
||||
"bytes": 229388
|
||||
},
|
||||
"frames/final-review/frame-002.25.png": {
|
||||
"sha256": "389dd8b56fbc2d21af80ebb8f55895602050601915d1b19274e04d2e5678be47",
|
||||
"bytes": 245324
|
||||
},
|
||||
"frames/final-review/frame-004.15.png": {
|
||||
"sha256": "261fbc9ee0b8784f1d4a1f84b34489c5baf3824b6467c82a7673e4b836f97cf0",
|
||||
"bytes": 36595
|
||||
},
|
||||
"frames/final-review-refinement-1/frame-000.35.png": {
|
||||
"sha256": "318985a482450fd2a6f49a6fb7c03799fb1667ed7cf976b3a46ad8a8d66ed99c",
|
||||
"bytes": 230155
|
||||
},
|
||||
"frames/final-review-refinement-1/frame-001.32.png": {
|
||||
"sha256": "2513be4492f64f354e1879bfac985b549453051fd99bf32a881d67b87a7313b4",
|
||||
"bytes": 244323
|
||||
},
|
||||
"frames/final-review-refinement-1/frame-002.29.png": {
|
||||
"sha256": "f23ba046874e6929a86e2186ed0be38e7edda7913b288ab3df3b9cd1aa65cd14",
|
||||
"bytes": 245024
|
||||
},
|
||||
"frames/fine/frame-005.00.png": {
|
||||
"sha256": "7bf0f2f437e8781ac96e6a27b41f975189c3784dbd3368672d43fd4b2d92813a",
|
||||
"bytes": 451029
|
||||
},
|
||||
"frames/fine/frame-006.00.png": {
|
||||
"sha256": "618ee855deb607995c0be98d0a64db5614c4f851837af105e0672822947fe361",
|
||||
"bytes": 451002
|
||||
},
|
||||
"frames/fine/frame-007.00.png": {
|
||||
"sha256": "40e9724ee1834abee7d12002cd83a4120738b0ffd0a294741c25c2135edb02b8",
|
||||
"bytes": 196294
|
||||
},
|
||||
"frames/fine/frame-008.00.png": {
|
||||
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
|
||||
"bytes": 25229
|
||||
},
|
||||
"frames/fine/frame-009.00.png": {
|
||||
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
|
||||
"bytes": 26259
|
||||
},
|
||||
"frames/fine/frame-010.00.png": {
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
"frames/fine/frame-011.00.png": {
|
||||
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
|
||||
"bytes": 290263
|
||||
},
|
||||
"frames/fine/frame-012.00.png": {
|
||||
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
|
||||
"bytes": 23585
|
||||
},
|
||||
"frames/fine/frame-013.00.png": {
|
||||
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
|
||||
"bytes": 24310
|
||||
},
|
||||
"frames/fine/frame-014.00.png": {
|
||||
"sha256": "ab5ed49e0a1267d80e53bc524db96a521aedf419d4a2e766463bd58fc2cbd96a",
|
||||
"bytes": 290328
|
||||
},
|
||||
"frames/fine/frame-015.00.png": {
|
||||
"sha256": "101c7a220045bdad559ffabcf2345a307c4b2a8ace71c1f289f861cb5ac8dfcf",
|
||||
"bytes": 337454
|
||||
},
|
||||
"frames/fine/frame-016.00.png": {
|
||||
"sha256": "6b674c7689ae86485ce112daa9a14cbd4334d3c41cbc12bcc8a06b0c34c3d0bd",
|
||||
"bytes": 118937
|
||||
},
|
||||
"frames/fine/frame-017.00.png": {
|
||||
"sha256": "44134f20bffcd9fb57c3ca421a7be03fa2596962423a955140bf44e3d5c2582b",
|
||||
"bytes": 24201
|
||||
},
|
||||
"frames/fine/frame-018.00.png": {
|
||||
"sha256": "bf44d8b974343063293c92d2933edd0e9a711802d44753f5c0c8b4f4cf3406aa",
|
||||
"bytes": 25412
|
||||
},
|
||||
"frames/fine/frame-019.00.png": {
|
||||
"sha256": "7d2fdecd1cff9d025880e069d111c9e8aa0c488dd1e570b62f5147a136543271",
|
||||
"bytes": 78776
|
||||
},
|
||||
"frames/fine/frame-020.00.png": {
|
||||
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
|
||||
"bytes": 183618
|
||||
},
|
||||
"frames/fine/frame-021.00.png": {
|
||||
"sha256": "c9758159919eb5f8612e3af01258d1c7792d446ca5c08add2ff3dcd3b97e7617",
|
||||
"bytes": 96371
|
||||
},
|
||||
"frames/fine/frame-022.00.png": {
|
||||
"sha256": "54b41278b256654341515bee8f7adb3166bdb15c90f3da9f7f47eb72cad77d33",
|
||||
"bytes": 192864
|
||||
},
|
||||
"frames/fine/frame-023.00.png": {
|
||||
"sha256": "3e49ae19ac287a5acdcff0db46d93d3ca77f98d039d9c53f07210466a323b5b3",
|
||||
"bytes": 22428
|
||||
},
|
||||
"frames/fine/frame-024.00.png": {
|
||||
"sha256": "6eb1ae362db441052be6685922270fcd86572c8b223e99a41a519424ac113c0d",
|
||||
"bytes": 24410
|
||||
},
|
||||
"frames/fine/frame-025.00.png": {
|
||||
"sha256": "354595be0073fcaed614da1ff41177f01e54f74b63f5614ed5033a9c00e0a773",
|
||||
"bytes": 211411
|
||||
},
|
||||
"frames/negative-review/frame-000.35.png": {
|
||||
"sha256": "113732852a3ed623001cbef9e71c10af0b5f60753be8b1f41a14a578d97cee8e",
|
||||
"bytes": 21114
|
||||
},
|
||||
"frames/negative-review/frame-002.25.png": {
|
||||
"sha256": "c8965c10e2311c9752fbfccf9b268dff49100ab8e51cda96462ab831e0e6cbce",
|
||||
"bytes": 44712
|
||||
},
|
||||
"frames/negative-review/frame-004.15.png": {
|
||||
"sha256": "9cce535f13d961323b049feee88d0fc73e689502f4679d935d141588139470c8",
|
||||
"bytes": 45469
|
||||
},
|
||||
"localization.json": {
|
||||
"sha256": "8115c752005566290aff8fff47d8f47043fa677523d0293f08b2f1d10331a789",
|
||||
"bytes": 16342
|
||||
},
|
||||
"negative_control.mp4": {
|
||||
"sha256": "f4686fe209f7555644874aa8d1e6a6623a6add5b263f430f3ea2ab2a87b7cc04",
|
||||
"bytes": 209061
|
||||
},
|
||||
"provider_receipts.checkpoint.json": {
|
||||
"sha256": "a93a5d1cbbe403e92b7ecd7bc929d6ce0f6b49c5892b6bade1332ae4410ca09e",
|
||||
"bytes": 88210
|
||||
},
|
||||
"provider_receipts.json": {
|
||||
"sha256": "a93a5d1cbbe403e92b7ecd7bc929d6ce0f6b49c5892b6bade1332ae4410ca09e",
|
||||
"bytes": 88210
|
||||
},
|
||||
"review.json": {
|
||||
"sha256": "f5fc7e6bc94d01eb0daf3f2bea2be8000d029165b011d2d1229323da551285bc",
|
||||
"bytes": 22176
|
||||
},
|
||||
"scripts/corrected-final-attempt-1.py": {
|
||||
"sha256": "22622e294869673f1208a8e9f86d2cccfd927a980b1f126ff3dff1419d8dffeb",
|
||||
"bytes": 2146
|
||||
},
|
||||
"scripts/corrected-final-attempt-2.py": {
|
||||
"sha256": "3494f448c5eedffa860d43d1868c67735d7b2eed3705265cd54d88fb690e5d43",
|
||||
"bytes": 2048
|
||||
},
|
||||
"scripts/corrected-final-attempt-3.py": {
|
||||
"sha256": "ad139c38b88aa73881e1b4a993352c8acfe806143c56f33f3f8a931ca1f79395",
|
||||
"bytes": 2372
|
||||
},
|
||||
"scripts/corrected-final-attempt-4.py": {
|
||||
"sha256": "1b429705696a0cfaf93cad3292fd20ad3418472d552f4e8733be1f1f8bdcd19a",
|
||||
"bytes": 1953
|
||||
},
|
||||
"scripts/corrected-final-refinement-1-attempt-1.py": {
|
||||
"sha256": "2a093b9fd7eab1b389a773407b46154c514d4d2de74405eb981141affa90811f",
|
||||
"bytes": 2117
|
||||
},
|
||||
"scripts/corrected-final-refinement-1-attempt-2.py": {
|
||||
"sha256": "1a5546408058cf73635f6a4f4ca6ce0390420a1a58a7221ad3ed8805f34f5733",
|
||||
"bytes": 2281
|
||||
},
|
||||
"scripts/negative-control-attempt-1.py": {
|
||||
"sha256": "d2b626a4db0e6f47704eb395b76122fa82b389aaddc4040304726d6d6fd045d9",
|
||||
"bytes": 2231
|
||||
},
|
||||
"source.mov": {
|
||||
"sha256": "36801b74638c12be9aa587e93cd18edfc9bc51a1c089ab2a19ee42beed9f497d",
|
||||
"bytes": 11061011
|
||||
},
|
||||
"source_evidence.json": {
|
||||
"sha256": "9c6c34b89b43eef4697a5500fde897b7c5c0930459e677855cd568e6bcdd6164",
|
||||
"bytes": 1379
|
||||
}
|
||||
},
|
||||
"official_complete": true
|
||||
}
|
||||
@@ -0,0 +1,433 @@
|
||||
{
|
||||
"negative_control": {
|
||||
"plan": {
|
||||
"start": 0.0,
|
||||
"end": 3.0,
|
||||
"effects": [
|
||||
"slowmo:1.5",
|
||||
"subtitle:BIG BUNNY"
|
||||
]
|
||||
},
|
||||
"render": {
|
||||
"attempts": [
|
||||
{
|
||||
"attempt": 1,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/negative-control-attempt-1.py",
|
||||
"script_sha256": "d2b626a4db0e6f47704eb395b76122fa82b389aaddc4040304726d6d6fd045d9",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/negative-control-attempt-1.log",
|
||||
"blender_log_sha256": "dd986adbcefdb8e98a7e4e919d5f9d373c47edb8c6b93db48b933dc17de81f58",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 1.842,
|
||||
"accepted": true
|
||||
}
|
||||
],
|
||||
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/negative-control-attempt-1.py",
|
||||
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/negative_control.mp4"
|
||||
},
|
||||
"review": {
|
||||
"pass": false,
|
||||
"target_present": false,
|
||||
"irrelevant_content_present": true,
|
||||
"subtitle_visible": true,
|
||||
"feedback": "All keyframes show title cards with 'THE PEACH OPEN MOVIE PROJECT PRESENTS' and 'BIG BUNNY' on a gray background; no large white rabbit in a sunny green meadow is visible. Target shot (rabbit in meadow) is absent, and irrelevant title card content is present."
|
||||
},
|
||||
"frames": [
|
||||
{
|
||||
"timestamp_s": 0.35,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/negative-review/frame-000.35.png",
|
||||
"sha256": "113732852a3ed623001cbef9e71c10af0b5f60753be8b1f41a14a578d97cee8e",
|
||||
"bytes": 21114
|
||||
},
|
||||
{
|
||||
"timestamp_s": 2.251,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/negative-review/frame-002.25.png",
|
||||
"sha256": "c8965c10e2311c9752fbfccf9b268dff49100ab8e51cda96462ab831e0e6cbce",
|
||||
"bytes": 44712
|
||||
},
|
||||
{
|
||||
"timestamp_s": 4.151,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/negative-review/frame-004.15.png",
|
||||
"sha256": "9cce535f13d961323b049feee88d0fc73e689502f4679d935d141588139470c8",
|
||||
"bytes": 45469
|
||||
}
|
||||
]
|
||||
},
|
||||
"correction_triggered": true,
|
||||
"correction_rounds": [
|
||||
{
|
||||
"round": 0,
|
||||
"kind": "initial_fine_localization",
|
||||
"plan": {
|
||||
"start": 9.0,
|
||||
"end": 12.0,
|
||||
"effects": [
|
||||
"slowmo:1.5",
|
||||
"subtitle:BIG BUNNY"
|
||||
]
|
||||
},
|
||||
"render": {
|
||||
"attempts": [
|
||||
{
|
||||
"attempt": 1,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-1.py",
|
||||
"script_sha256": "22622e294869673f1208a8e9f86d2cccfd927a980b1f126ff3dff1419d8dffeb",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-attempt-1.log",
|
||||
"blender_log_sha256": "80f96d1d2a6a49e260e9809317dc40299e05181394e5b3110141d71b986551b5",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 0.569,
|
||||
"accepted": false
|
||||
},
|
||||
{
|
||||
"attempt": 2,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-2.py",
|
||||
"script_sha256": "3494f448c5eedffa860d43d1868c67735d7b2eed3705265cd54d88fb690e5d43",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-attempt-2.log",
|
||||
"blender_log_sha256": "2fec44809211c67c31f5885b50ba0dd0625eec50361ad8eb0697fa99b2f8d012",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 0.596,
|
||||
"accepted": false
|
||||
},
|
||||
{
|
||||
"attempt": 3,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-3.py",
|
||||
"accepted": false,
|
||||
"error": "Static safety/API validation failed: SyntaxError: unmatched ')' (<unknown>, line 11)"
|
||||
},
|
||||
{
|
||||
"attempt": 4,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-4.py",
|
||||
"script_sha256": "1b429705696a0cfaf93cad3292fd20ad3418472d552f4e8733be1f1f8bdcd19a",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-attempt-4.log",
|
||||
"blender_log_sha256": "c1605819fd5a3dc505bbbee8a51646d821da2d7e69ca160211fc3d0ff129ba18",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 2.702,
|
||||
"accepted": true
|
||||
}
|
||||
],
|
||||
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-4.py",
|
||||
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
},
|
||||
"review": {
|
||||
"pass": false,
|
||||
"target_present": true,
|
||||
"irrelevant_content_present": true,
|
||||
"subtitle_visible": true,
|
||||
"feedback": "The third keyframe (timestamp=4.15s) contains the 'THREE RODENTS' title card on a gray background, which is irrelevant content and not part of the intended large white rabbit meadow shot. The first two keyframes show the target rabbit meadow shot with 'BIG BUNNY' subtitle, but the presence of the unrelated 'THREE RODENTS' title card violates the requirement for all frames to show the intended shot without title cards or unrelated scenes."
|
||||
},
|
||||
"frames": [
|
||||
{
|
||||
"timestamp_s": 0.35,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review/frame-000.35.png",
|
||||
"sha256": "ba21afabc4197a93b06d4d78ed6f2dff568601b2b94425856efaf5606e49b9bb",
|
||||
"bytes": 229388
|
||||
},
|
||||
{
|
||||
"timestamp_s": 2.251,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review/frame-002.25.png",
|
||||
"sha256": "389dd8b56fbc2d21af80ebb8f55895602050601915d1b19274e04d2e5678be47",
|
||||
"bytes": 245324
|
||||
},
|
||||
{
|
||||
"timestamp_s": 4.151,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review/frame-004.15.png",
|
||||
"sha256": "261fbc9ee0b8784f1d4a1f84b34489c5baf3824b6467c82a7673e4b836f97cf0",
|
||||
"bytes": 36595
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"round": 1,
|
||||
"kind": "reviewer_driven_quarter_second_refinement",
|
||||
"prior_interval": [
|
||||
9.0,
|
||||
12.0
|
||||
],
|
||||
"source_frames": [
|
||||
{
|
||||
"timestamp_s": 8.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.00.png",
|
||||
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
|
||||
"bytes": 25229
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.25.png",
|
||||
"sha256": "fc4e9dfec0220c38b50fa199c95332eba6ad403d683042318e059c8cc0d06d57",
|
||||
"bytes": 26862
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.50.png",
|
||||
"sha256": "23520885852103457d35c7f97617da0090763888261c4b5003793c6d6b48b070",
|
||||
"bytes": 27408
|
||||
},
|
||||
{
|
||||
"timestamp_s": 8.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.75.png",
|
||||
"sha256": "a26f15eb86f4d0633cc3f6ed4659e500e3480d6a93703bd961d920d58cb22dcb",
|
||||
"bytes": 27826
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.00.png",
|
||||
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
|
||||
"bytes": 26259
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.25.png",
|
||||
"sha256": "23b0a10b6440ac809301ebdae5ef3e174440c51c1bdbe1e341daa1811b32b6ec",
|
||||
"bytes": 281564
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.50.png",
|
||||
"sha256": "b1534ad39b5d73921220488351b56de61e387f02d0d2d63007bba0947dde64c8",
|
||||
"bytes": 282016
|
||||
},
|
||||
{
|
||||
"timestamp_s": 9.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.75.png",
|
||||
"sha256": "ac5db4099b689927bb0e3b91f6d9a402b5c28576b0c759a8c8430ea090ede3f0",
|
||||
"bytes": 281200
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.00.png",
|
||||
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
|
||||
"bytes": 288771
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.25.png",
|
||||
"sha256": "077c87cb4d94b1d0647968b48fd9ae3dfe73b3b83e7052b718b0c2a1638884e9",
|
||||
"bytes": 290424
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.50.png",
|
||||
"sha256": "1702da4cdbf746a8f5b3b3ea1dbbe20065810e896cf5eead3b4e0e899a95ace6",
|
||||
"bytes": 290739
|
||||
},
|
||||
{
|
||||
"timestamp_s": 10.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.75.png",
|
||||
"sha256": "f4b896f7e565cbe8753020129ce1d2420ef7fa1d7d5e35274a544cb91ecefc05",
|
||||
"bytes": 290790
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.00.png",
|
||||
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
|
||||
"bytes": 290263
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.25.png",
|
||||
"sha256": "bd9c57afa81fbcb2dfd6aa1fafe0e4bfcd3da4e13b69b8086234b26906923bb1",
|
||||
"bytes": 22691
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.50.png",
|
||||
"sha256": "7a00b9b759b7ea49228504de9b4481be13a24b86bba9284899c48ee6c39c24f6",
|
||||
"bytes": 24009
|
||||
},
|
||||
{
|
||||
"timestamp_s": 11.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.75.png",
|
||||
"sha256": "42f8c635d8ec11df1d542340fe5bb977a9d9799878937ecac77366bfa2fd3897",
|
||||
"bytes": 24402
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.00.png",
|
||||
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
|
||||
"bytes": 23585
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.25,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.25.png",
|
||||
"sha256": "5459ffd9787260f9f96f16464e7a8842c5535f4a725eaee8d7b6f114a0ff6e45",
|
||||
"bytes": 24966
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.5,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.50.png",
|
||||
"sha256": "47974ae09fd7f2f4affdf06dba5aa92e16dca70da873cd1f631171f46e8dccf9",
|
||||
"bytes": 25722
|
||||
},
|
||||
{
|
||||
"timestamp_s": 12.75,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.75.png",
|
||||
"sha256": "cd6c95353c889323e7af0f0768a65c310ce0d4cc7aa2651b83a528805ddbd10f",
|
||||
"bytes": 26543
|
||||
},
|
||||
{
|
||||
"timestamp_s": 13.0,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-013.00.png",
|
||||
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
|
||||
"bytes": 24310
|
||||
}
|
||||
],
|
||||
"refinement": {
|
||||
"start": 9.25,
|
||||
"end": 11.0,
|
||||
"reason": "visual boundary evidence"
|
||||
},
|
||||
"plan": {
|
||||
"start": 9.25,
|
||||
"end": 11.0,
|
||||
"effects": [
|
||||
"slowmo:1.5",
|
||||
"subtitle:BIG BUNNY"
|
||||
]
|
||||
},
|
||||
"render": {
|
||||
"attempts": [
|
||||
{
|
||||
"attempt": 1,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-1.py",
|
||||
"script_sha256": "2a093b9fd7eab1b389a773407b46154c514d4d2de74405eb981141affa90811f",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-1.log",
|
||||
"blender_log_sha256": "41c72db03b43c429a5f21f1988725285ad35f85ce6ac0706ad5b0947b3caeed2",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 0.588,
|
||||
"accepted": false
|
||||
},
|
||||
{
|
||||
"attempt": 2,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
|
||||
"script_sha256": "1a5546408058cf73635f6a4f4ca6ce0390420a1a58a7221ad3ed8805f34f5733",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-2.log",
|
||||
"blender_log_sha256": "71c23904c15612460d1ab33812e111a758e0b02da56db2b28eeb079d2f418a0c",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 1.285,
|
||||
"accepted": true
|
||||
}
|
||||
],
|
||||
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
|
||||
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
},
|
||||
"review": {
|
||||
"pass": true,
|
||||
"target_present": true,
|
||||
"irrelevant_content_present": false,
|
||||
"subtitle_visible": true,
|
||||
"feedback": "All frames show the large white rabbit in the sunny green meadow (target present). No title cards ('ONE BIG RABBIT' or 'THREE RODENTS') or unrelated scenes are visible (no irrelevant content). The 'BIG BUNNY' subtitle is clearly overlaid near the bottom in all frames."
|
||||
},
|
||||
"frames": [
|
||||
{
|
||||
"timestamp_s": 0.35,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-000.35.png",
|
||||
"sha256": "318985a482450fd2a6f49a6fb7c03799fb1667ed7cf976b3a46ad8a8d66ed99c",
|
||||
"bytes": 230155
|
||||
},
|
||||
{
|
||||
"timestamp_s": 1.323,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-001.32.png",
|
||||
"sha256": "2513be4492f64f354e1879bfac985b549453051fd99bf32a881d67b87a7313b4",
|
||||
"bytes": 244323
|
||||
},
|
||||
{
|
||||
"timestamp_s": 2.295,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-002.29.png",
|
||||
"sha256": "f23ba046874e6929a86e2186ed0be38e7edda7913b288ab3df3b9cd1aa65cd14",
|
||||
"bytes": 245024
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"corrected_final": {
|
||||
"plan": {
|
||||
"start": 9.25,
|
||||
"end": 11.0,
|
||||
"effects": [
|
||||
"slowmo:1.5",
|
||||
"subtitle:BIG BUNNY"
|
||||
]
|
||||
},
|
||||
"render": {
|
||||
"attempts": [
|
||||
{
|
||||
"attempt": 1,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-1.py",
|
||||
"script_sha256": "2a093b9fd7eab1b389a773407b46154c514d4d2de74405eb981141affa90811f",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-1.log",
|
||||
"blender_log_sha256": "41c72db03b43c429a5f21f1988725285ad35f85ce6ac0706ad5b0947b3caeed2",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 0.588,
|
||||
"accepted": false
|
||||
},
|
||||
{
|
||||
"attempt": 2,
|
||||
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
|
||||
"script_sha256": "1a5546408058cf73635f6a4f4ca6ce0390420a1a58a7221ad3ed8805f34f5733",
|
||||
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-2.log",
|
||||
"blender_log_sha256": "71c23904c15612460d1ab33812e111a758e0b02da56db2b28eeb079d2f418a0c",
|
||||
"blender_exit_code": 0,
|
||||
"blender_latency_s": 1.285,
|
||||
"accepted": true
|
||||
}
|
||||
],
|
||||
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
|
||||
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
},
|
||||
"review": {
|
||||
"pass": true,
|
||||
"target_present": true,
|
||||
"irrelevant_content_present": false,
|
||||
"subtitle_visible": true,
|
||||
"feedback": "All frames show the large white rabbit in the sunny green meadow (target present). No title cards ('ONE BIG RABBIT' or 'THREE RODENTS') or unrelated scenes are visible (no irrelevant content). The 'BIG BUNNY' subtitle is clearly overlaid near the bottom in all frames."
|
||||
},
|
||||
"frames": [
|
||||
{
|
||||
"timestamp_s": 0.35,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-000.35.png",
|
||||
"sha256": "318985a482450fd2a6f49a6fb7c03799fb1667ed7cf976b3a46ad8a8d66ed99c",
|
||||
"bytes": 230155
|
||||
},
|
||||
{
|
||||
"timestamp_s": 1.323,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-001.32.png",
|
||||
"sha256": "2513be4492f64f354e1879bfac985b549453051fd99bf32a881d67b87a7313b4",
|
||||
"bytes": 244323
|
||||
},
|
||||
{
|
||||
"timestamp_s": 2.295,
|
||||
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-002.29.png",
|
||||
"sha256": "f23ba046874e6929a86e2186ed0be38e7edda7913b288ab3df3b9cd1aa65cd14",
|
||||
"bytes": 245024
|
||||
}
|
||||
],
|
||||
"probe": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "h264",
|
||||
"codec_type": "video",
|
||||
"width": 854,
|
||||
"height": 480,
|
||||
"r_frame_rate": "25/1"
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "aac",
|
||||
"codec_type": "audio",
|
||||
"sample_rate": "48000",
|
||||
"channels": 2,
|
||||
"r_frame_rate": "0/0"
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
|
||||
"duration": "2.645000",
|
||||
"size": "318571"
|
||||
}
|
||||
},
|
||||
"expected_slowed_duration_s": 2.625,
|
||||
"observed_duration_s": 2.645
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 9.0
|
||||
END_SECONDS = 12.0
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.sequence_editor_clear()
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Create video and audio strips
|
||||
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1,
|
||||
frame_start=1 - start_frame)
|
||||
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2,
|
||||
frame_start=1 - start_frame)
|
||||
|
||||
# Trim media to interval
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Apply slowmotion to video
|
||||
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3,
|
||||
frame_start=1, frame_end=1 + dur_frames, seq1=movie)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle with background
|
||||
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4,
|
||||
frame_start=1, frame_end=1 + render_dur)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Configure render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.image_settings.file_format = 'MPEG4'
|
||||
scene.render.image_settings.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,59 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
|
||||
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
|
||||
FPS = 25
|
||||
START_SECONDS = 9.000
|
||||
END_SECONDS = 12.000
|
||||
|
||||
# Calculate timing values
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.sequence_editor_clear()
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and audio strips
|
||||
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1, frame_start=1 - start_frame)
|
||||
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2, frame_start=1 - start_frame)
|
||||
|
||||
# Set trim for both strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect to movie
|
||||
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3, frame_start=1, frame_end=1 + dur_frames, seq1=movie)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text strip
|
||||
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4, frame_start=1, frame_end=1 + render_dur)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
scene.render.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,91 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 9.0
|
||||
END_SECONDS = 12.0
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS))))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Clear existing scene data
|
||||
bpy.ops.sequencer.select_all(action='SELECT')
|
||||
bpy.ops.sequencer.delete()
|
||||
scene = bpy.context.scene
|
||||
|
||||
# Create sequence editor
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and audio strips
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
|
||||
# Set trim for both media strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add slowmotion effect to video
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
|
||||
# Extend video duration to match slowed render time
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text with background box
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Configure render settings
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
|
||||
# Configure output format
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Set render frame range
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,55 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 9.000
|
||||
END_SECONDS = 12.000
|
||||
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
scene = bpy.context.scene
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and audio strips
|
||||
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1, frame_start=1 - start_frame)
|
||||
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2, frame_start=1 - start_frame)
|
||||
|
||||
# Set trim for both strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect for slow motion
|
||||
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3, frame_start=1, frame_end=1 + dur_frames, seq1=movie)
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
speed.use_default_fade = False
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text strip
|
||||
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4, frame_start=1, frame_end=1 + render_dur)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0, 0, 0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,82 @@
|
||||
import bpy
|
||||
|
||||
# Configuration
|
||||
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
|
||||
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
|
||||
FPS = 25
|
||||
START_SECONDS = 9.250
|
||||
END_SECONDS = 11.000
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.sequence_editor_clear()
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie and sound strips
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
|
||||
# Trim media strips
|
||||
for strip in (movie, sound):
|
||||
strip.frame_offset_start = start_frame
|
||||
strip.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect to movie
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.image_settings.file_format = 'MPEG4'
|
||||
scene.render.image_settings.codec = 'H264'
|
||||
scene.render.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Execute render
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,89 @@
|
||||
import bpy
|
||||
|
||||
# Configuration
|
||||
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
|
||||
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
|
||||
FPS = 25
|
||||
START_SECONDS = 9.250
|
||||
END_SECONDS = 11.000
|
||||
RENDER_SIZE = (854, 480)
|
||||
|
||||
# Calculate timing
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Setup scene
|
||||
scene = bpy.context.scene
|
||||
scene.render.fps = FPS
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
|
||||
# Clear default objects
|
||||
bpy.ops.object.select_all(action='SELECT')
|
||||
bpy.ops.object.delete()
|
||||
|
||||
# Create sequence editor
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie strip
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
movie.frame_offset_start = start_frame
|
||||
movie.frame_final_duration = dur_frames
|
||||
|
||||
# Add sound strip
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound.frame_offset_start = start_frame
|
||||
sound.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect to movie
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Render settings
|
||||
scene.render.resolution_x = RENDER_SIZE[0]
|
||||
scene.render.resolution_y = RENDER_SIZE[1]
|
||||
scene.render.resolution_percentage = 100
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Render animation
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,88 @@
|
||||
import bpy
|
||||
|
||||
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
|
||||
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/negative_control.mp4"
|
||||
FPS = 25
|
||||
START_SECONDS = 0.000
|
||||
END_SECONDS = 3.000
|
||||
|
||||
# Calculate timing parameters
|
||||
start_frame = int(round(START_SECONDS * FPS))
|
||||
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
|
||||
render_dur = int(round(dur_frames * 1.5))
|
||||
|
||||
# Scene setup
|
||||
scene = bpy.context.scene
|
||||
scene.render.fps = FPS
|
||||
scene.render.fps_base = 1.0
|
||||
scene.render.resolution_x = 854
|
||||
scene.render.resolution_y = 480
|
||||
scene.render.resolution_percentage = 100
|
||||
|
||||
# Render settings
|
||||
scene.render.image_settings.file_format = 'FFMPEG'
|
||||
scene.render.ffmpeg.format = 'MPEG4'
|
||||
scene.render.ffmpeg.codec = 'H264'
|
||||
scene.render.ffmpeg.audio_codec = 'AAC'
|
||||
scene.render.filepath = OUTPUT_PATH
|
||||
|
||||
# Sequence editor setup
|
||||
se = scene.sequence_editor_create()
|
||||
|
||||
# Add movie strip
|
||||
movie = se.sequences.new_movie(
|
||||
name='clip',
|
||||
filepath=INPUT_PATH,
|
||||
channel=1,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
movie.frame_offset_start = start_frame
|
||||
movie.frame_final_duration = dur_frames
|
||||
|
||||
# Add sound strip
|
||||
sound = se.sequences.new_sound(
|
||||
name='audio',
|
||||
filepath=INPUT_PATH,
|
||||
channel=2,
|
||||
frame_start=1 - start_frame
|
||||
)
|
||||
sound.frame_offset_start = start_frame
|
||||
sound.frame_final_duration = dur_frames
|
||||
|
||||
# Add speed effect
|
||||
speed = se.sequences.new_effect(
|
||||
name='slowmo',
|
||||
type='SPEED',
|
||||
channel=3,
|
||||
frame_start=1,
|
||||
frame_end=1 + dur_frames,
|
||||
seq1=movie
|
||||
)
|
||||
speed.use_default_fade = False
|
||||
speed.speed_control = 'MULTIPLY'
|
||||
speed.speed_factor = 1.0 / 1.5
|
||||
|
||||
# Extend movie duration for slowmo
|
||||
movie.frame_final_duration = render_dur
|
||||
|
||||
# Add subtitle text
|
||||
text = se.sequences.new_effect(
|
||||
name='subtitle',
|
||||
type='TEXT',
|
||||
channel=4,
|
||||
frame_start=1,
|
||||
frame_end=1 + render_dur
|
||||
)
|
||||
text.text = 'BIG BUNNY'
|
||||
text.location = (0.5, 0.12)
|
||||
text.align_x = 'CENTER'
|
||||
text.align_y = 'BOTTOM'
|
||||
text.use_box = True
|
||||
text.box_color = (0.0, 0.0, 0.0, 0.6)
|
||||
|
||||
# Set render frame range
|
||||
scene.frame_start = 1
|
||||
scene.frame_end = render_dur
|
||||
|
||||
# Render the animation
|
||||
bpy.ops.render.render(animation=True)
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"url": "https://download.blender.org/peach/trailer/trailer_480p.mov",
|
||||
"title": "Big Buck Bunny trailer (Blender Foundation Peach Open Movie Project)",
|
||||
"license": "Creative Commons Attribution 3.0",
|
||||
"license_url": "https://creativecommons.org/licenses/by/3.0/",
|
||||
"sha256": "36801b74638c12be9aa587e93cd18edfc9bc51a1c089ab2a19ee42beed9f497d",
|
||||
"probe": {
|
||||
"programs": [],
|
||||
"stream_groups": [],
|
||||
"streams": [
|
||||
{
|
||||
"index": 0,
|
||||
"codec_name": "h264",
|
||||
"codec_type": "video",
|
||||
"width": 853,
|
||||
"height": 480,
|
||||
"r_frame_rate": "25/1"
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"codec_name": "aac",
|
||||
"codec_type": "audio",
|
||||
"sample_rate": "48000",
|
||||
"channels": 6,
|
||||
"r_frame_rate": "0/0"
|
||||
}
|
||||
],
|
||||
"format": {
|
||||
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
|
||||
"duration": "32.995000",
|
||||
"size": "11061011"
|
||||
}
|
||||
},
|
||||
"naturally_occurring_scenes": true,
|
||||
"ground_truth": {
|
||||
"start": 9.08,
|
||||
"end": 11.2,
|
||||
"target": "the single continuous shot showing the large white rabbit walking alone in a sunny green meadow, after the ONE BIG RABBIT title and before the THREE RODENTS title",
|
||||
"method": "Human-labeled target shot bounded by ffmpeg scene-change frames; source inspection found transitions at 9.08 and 11.20 seconds.",
|
||||
"ffmpeg_scene_threshold": 0.35
|
||||
}
|
||||
}
|
||||