Date: _______________
Tester: _______________
System: _______________
Camera: _______________
MM Version: _______________
- Plugin JAR copied to
mmplugins/folder - FFmpeg installed and accessible
- Micro-Manager starts without errors
- Plugin appears in processor pipeline list
A BeanShell script (test_mp4stream.bsh) automates several core tests:
- Enable MP4Stream in Processor Pipeline
- Configure output path in plugin settings
- Run via Tools → Script Panel → load
test_mp4stream.bsh
The script covers Tests 1-4, 15, and 17 automatically. Manual testing is still recommended for overlay verification and edge cases.
- Set mode: Constant FPS @ 30fps
- Set exposure: ~33ms
- Start Live, record 30 seconds, stop Live
- Verify:
- Log shows "Starting FFmpeg" and "FFmpeg finalized successfully"
- File created:
*_seg001.mp4 - ~900 frames written
- Video plays in VLC
- Δt timestamp visible and correct
- Set mode: Constant FPS @ 30fps
- Set exposure: 10ms (~100fps)
- Start Live, record 10 seconds, stop Live
- Verify:
- Video plays smoothly at 30fps
- Duration ~10 seconds
- Frame count < camera captures (dropping occurred)
- Set mode: Constant FPS @ 30fps
- Set exposure: 500ms (~2fps)
- Start Live, record 10 seconds, stop Live
- Verify:
- Video plays smoothly at 30fps
- Frames appear held/duplicated
- Duration ~10 seconds
- Set mode: Real-time
- Set exposure: 100ms (~10fps)
- Start Live, record 10 seconds, stop Live
- Verify:
- Frame count ≈ 100 (1:1 capture)
- Playback matches real timing
- Set mode: Time-lapse @ 10x
- Set exposure: 1000ms (1fps)
- Start Live, record 60 seconds, stop Live
- Verify:
- Video duration ~6 seconds (60s / 10x)
- Δt overlay shows real elapsed time
- Playback is 10x accelerated
- Start any recording
- Stop Live immediately (<2 seconds)
- Verify:
- Log shows "Live mode stopped - finalizing MP4 immediately"
- File is valid and playable
- No watchdog timeout message
- Enable timestamp, white text, with background
- Record 5 seconds
- Verify:
- Δt visible in top-left
- White text on dark background
- Time increments correctly
- Change to black text, no background
- Record 5 seconds
- Verify:
- Black text visible
- No background box
- Readable on light areas
- Configure pixel size in MM (Devices → Pixel Size Calibration)
- Enable scale bar
- Record 5 seconds
- Verify:
- Scale bar visible in bottom-right
- Label shows correct units (µm or mm)
- Length is reasonable (~15% of image width)
- Clear pixel size calibration (or use uncalibrated objective)
- Enable scale bar
- Start recording
- Verify:
- Log shows warning about missing pixel size
- Scale bar not drawn
- Recording otherwise works
- Configure all settings (paths, mode, overlays)
- Close Micro-Manager completely
- Reopen Micro-Manager
- Open plugin settings
- Verify:
- FFmpeg path persisted
- Output path persisted
- Recording mode persisted
- Overlay settings persisted
- Start recording in Constant FPS mode
- Open settings, change to Real-time mode
- Stop and restart Live
- Verify:
- New segment uses Real-time mode
- Log shows "realtime/VFR"
- Start recording at full resolution
- Change ROI or binning mid-session
- Continue recording
- Verify:
- New segment file created with new resolution
- Both files are valid
- Set Constant FPS @ 30fps
- Record continuously for 10+ minutes
- Monitor system resources
- Verify:
- No memory leaks (Java heap stable)
- File size grows linearly
- Final file is playable
- No errors in log
- Start Live
- Stop Live immediately
- Repeat 5 times
- Verify:
- 5 segment files created (seg001-seg005)
- No crashes or errors
- All files valid (even if short)
- Clear output path in settings
- Start Live
- Verify:
- No recording occurs
- No errors or crashes
- Live view works normally
- Configure multiple objectives with different pixel sizes in MM
- Enable scale bar (auto mode, length=0)
- Record with objective A (e.g., 10×), stop Live
- Switch to objective B with different magnification (e.g., 40×)
- Start Live, record again
- Verify:
- Scale bar label changes appropriately (e.g., 200 µm → 50 µm)
- Log shows different pixelSize values for each segment
- Both videos have correct scale bars
- Start recording at 1×1 binning (full resolution)
- Stop Live
- Change camera binning to 2×2
- Start Live, record again
- Verify:
- New segment created with smaller resolution (e.g., 1608×1608 → 804×804)
- Scale bar adjusts for binned image width
- Both files are valid
| Test | Pass | Fail | Notes |
|---|---|---|---|
| 1. Basic Recording | ✓ | Demo, ORCA-Fusion, Prime 95B | |
| 2. Fast Camera | ✓ | Demo, ORCA-Fusion | |
| 3. Slow Camera | ✓ | Demo, ORCA-Fusion | |
| 4. Real-time Mode | ✓ | Demo, ORCA-Fusion | |
| 5. Time-lapse Mode | ✓ | Demo, ORCA-Fusion | |
| 6. Immediate Finalization | ✓ | Demo | |
| 7. Timestamp Overlay | ✓ | ORCA-Fusion, Prime 95B | |
| 8. Timestamp Colors | ✓ | ORCA-Fusion (white/black) | |
| 9. Scale Bar | ✓ | Multiple objectives, auto-scaling | |
| 10. Scale Bar No Pixel | |||
| 11. Settings Persistence | ✓ | All settings verified | |
| 12. Settings Apply | |||
| 13. Resolution Change | ✓ | Prime 95B via binning | |
| 14. Long Recording | |||
| 15. Rapid Start/Stop | ✓ | Prime 95B (frankenscope log) | |
| 16. No Output Path | |||
| 17. Objective Change | ✓ | Prime 95B: 10×→40× | |
| 18. Binning Change | ✓ | Prime 95B: 1×1→2×2 |
(Additional observations, log excerpts, etc.)