Skip to content

Conversation

@MhhhxX
Copy link

@MhhhxX MhhhxX commented Oct 21, 2025

Motivation and context

Searching for relevant frames to annotate in freshly uploaded and especially long videos can be very time consuming without any kind of hint.
To give a help for the worker who annotates the video this PR uses the chapter marks stored inside the metadata of
some video container formats. Chapter marks are shown as clickable ticks underneath the player slider and there are new player buttons to jump the previous/next chapter in the video. A worker can use these navigation features on newly uploaded videos and (immediately) start annotating on relevant frames.
Example:

  1. Record the video you want to annotate
  2. While recording write chapter marks in the video file (for example press a button on the recording device when you see a car you later want to annotate)
  3. Upload the video to cvat and jump to the chapter marks and start annotating
cvat chapters cvat chapter tooltip

How has this been tested?

I extended the rest api test case for TaskMetaData

I tested the ui myself by testing the new buttons and marks in the browser

Checklist

  • I submit my changes into the develop branch
  • I have created a changelog fragment
  • I have updated the documentation accordingly
  • I have added tests to cover my changes
  • I have linked related issues (see GitHub docs)

License

  • I submit my code changes under the same MIT License that covers the project.
    Feel free to contact the maintainers if that's a concern.

@zhiltsov-max zhiltsov-max requested a review from klakhov October 21, 2025 12:28
@klakhov
Copy link
Contributor

klakhov commented Oct 22, 2025

It seems chapter marker can overlap with frame name:
image

@MhhhxX
Copy link
Author

MhhhxX commented Oct 23, 2025

It seems chapter marker can overlap with frame name: image

@klakhov I could show the ticks above the slider like this:
Bildschirmfoto am 2025-10-23 um 10 35 51
What do you think about this?

@klakhov
Copy link
Contributor

klakhov commented Oct 23, 2025

@MhhhxX, Yes, I think it would be better.

@MhhhxX
Copy link
Author

MhhhxX commented Oct 24, 2025

@MhhhxX, Yes, I think it would be better.

Markers are now above the slider.

@MhhhxX
Copy link
Author

MhhhxX commented Nov 26, 2025

The rest-api tests still fail because of the version bump of pyav. I guess this is intentionally restricted in the workflow, isn't it?
The problem is that the chapters functionalities are implemented since version 16.0.1. Therefore an update of pyav is needed for this PR.

@zhiltsov-max
Copy link
Contributor

zhiltsov-max commented Nov 27, 2025

I think we'll need to update our CI and project requirements to python 3.10 for this to move further. Please wait for a PR about this. 3.9 has already EOLed, so we have to do this anyway.

@zhiltsov-max zhiltsov-max mentioned this pull request Nov 27, 2025
6 tasks
@MhhhxX
Copy link
Author

MhhhxX commented Nov 28, 2025

@zhiltsov-max do you know why the consensus e2e test is failing now? The same test ran through before.

@zhiltsov-max
Copy link
Contributor

Some tests can fail sporadically, need to restart a couple of times and check if it helps. We're working on this problem, but haven't fixed it completely yet.

@zhiltsov-max
Copy link
Contributor

Please wait for #10056 to fix the issue with consensus tests.

@archibald1418
Copy link
Contributor

#10056 merged

@zhiltsov-max
Copy link
Contributor

@MhhhxX, it seems there's some loop in the player navigation, could you please check it?

@archibald1418
Copy link
Contributor

This requires at least some basic e2e coverage

@MhhhxX
Copy link
Author

MhhhxX commented Dec 2, 2025

@MhhhxX, it seems there's some loop in the player navigation, could you please check it?

The shortcut test failed locally for me because some of the existing shortcuts moved to a different page on the shortcut overview. I implemented a search function which navigates through all the pages and checks if the shortcut with the description exists on one of the pages.

Actually I couldn't find a loop. The shortcut test now runs through on my machine.

@MhhhxX
Copy link
Author

MhhhxX commented Dec 2, 2025

This requires at least some basic e2e coverage

I implemented some frontend tests for chapters.

@@ -0,0 +1,101 @@
context('Video chapters', () => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
context('Video chapters', () => {
// Copyright (C) CVAT.ai Corporation
//
// SPDX-License-Identifier: MIT
context('Video chapters', () => {

}

cy.wrap($btn).click();
cy.wait(500);
Copy link
Contributor

@archibald1418 archibald1418 Dec 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arbitrary waiting is an anti-pattern. Please try to find a UI state to push off of or use a cy.intercept if there's a request

@sonarqubecloud
Copy link

sonarqubecloud bot commented Dec 2, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants