Ultrasound instances playing at 1 FPS — missing Frame Time tag? How to define coercion or improve GIF playback?

10 views
Skip to first unread message

shubham tripathi

unread,
Jul 3, 2025, 3:42:21 PM7/3/25
to dcm4che

Hello everyone,

We're currently working with Ultrasound (US) DICOM files stored in a dcm4chee-arc-light archive and are running into an issue where some instances appear to play back extremely slowly — effectively 1 frame per second — when rendered or downloaded as a GIF using the DCM4CHEE REST API (/instances/{uid}/frames/{frameNumber}/rendered).

After some investigation, we noticed that the affected DICOM files are missing the (0018,1063) Frame Time tag, which we believe is likely causing the playback engine to fall back to a default low frame rate, resulting in sluggish visualization.

We believe that setting a reasonable default Frame Time (e.g., based on the number of frames (0028,0008) in the instance) might help generate more natural-looking GIFs at ~30 FPS.

This brings us to a few questions:

  1. Is it possible to define a coercion rule in DCM4CHEE that checks whether (0018,1063) is present at the time of upload, and if not, calculates and inserts a default value based on the number of frames (e.g., 1000 / numFrames for an assumed 1-second total duration)?

  2. If so, where and how do we define such coercion rules — through Keycloak, JSON config, or another mechanism? Would this be better implemented using a Lua script or XSLT, and how do we properly reference these scripts?

  3. Are there any other ways to improve playback speed or set frame rate hints, either at ingest time or during rendering/export? For instance:

    • Modifying the rendering behavior of the DCM4CHEE API itself?

    • Using metadata overlays to drive playback speed?

    • Pre-processing the files before upload?

    • Post processor like ffmpeg.


Thank you in advance.

Reply all
Reply to author
Forward
0 new messages