VSE: indicate missing media in timeline/playback #116821

Open
opened 2024-01-05 17:21:32 +01:00 by Aras Pranckevicius · 27 comments

(feature/improvement request from talking with @ZedDB)

  • Add an option (on by default) to indicate in VSE timeline, which strips are missing media (movies/images/audio). Like some special clearly visible color, perhaps an icon etc.
  • Add an option (on by default) to not ignore missing media in the displayed/rendered output, but rather show something that is hard to miss. Magenta stripes/checkerboard, sine wave tone for audio, etc.

Both of these are primarily because in a shared production, someone might not easily notice that some media is missing. Quoting:

I think that the most requested one (because we had a lot of file sharing issues this production) is to have the strip turn
red if their files can not be found. In addition to that, have it draw something annoying like a flashing background and
"source file not found" instead of drawing nothing when the timeline is over the strip with missing source data. Basically
we had a few cases where people didn't realize that they had missing files and started working not realizing that something
was wrong.

More detail:

  • Missing audio tone should not be the same used to censor swearing; some sort of lower tone maybe.
  • Missing media indication should not only be done in playback, but in rendered result as well. Some people render the animation and view it externally.
_(feature/improvement request from talking with @ZedDB)_ - Add an option (on by default) to indicate in VSE timeline, which strips are missing media (movies/images/audio). Like some special clearly visible color, perhaps an icon etc. - Add an option (on by default) to not ignore missing media in the displayed/rendered output, but rather show something that is hard to miss. Magenta stripes/checkerboard, sine wave tone for audio, etc. Both of these are primarily because in a shared production, someone might not easily notice that some media is missing. Quoting: > I think that the most requested one (because we had a lot of file sharing issues this production) is to have the strip turn > red if their files can not be found. In addition to that, have it draw something annoying like a flashing background and > "source file not found" instead of drawing nothing when the timeline is over the strip with missing source data. Basically > we had a few cases where people didn't realize that they had missing files and started working not realizing that something > was wrong. More detail: - Missing audio tone should not be the same used to censor swearing; some sort of lower tone maybe. - Missing media indication should not only be done in playback, but in rendered result as well. Some people render the animation and view it externally.
Aras Pranckevicius added the
Type
To Do
label 2024-01-05 17:21:32 +01:00
Aras Pranckevicius self-assigned this 2024-01-05 17:21:33 +01:00
Aras Pranckevicius added this to the Video Sequencer project 2024-01-05 17:21:35 +01:00

This was how it used to look when source media was missing in Scene strips:
image

This is how it is looking in 4.0:
image

I don't know who and why it was changed, but IMO covering the entire header area is problematic, since the header color is an indication of the strip type. Without this indication, if ex. more strip types get thumbnails(they should), then all strips with missing media will look the same. And that is a problem.

The thin red line has the saturation level of the selected items and will therefore stand out. This should be enough indication, as long it is still visible at all zoom levels.

And currently, is there actually a bug where the red line isn't drawn if all strip texts are switched off.

IMO, should all strips have the same kind of missing media indication.

This was how it used to look when source media was missing in Scene strips: ![image](/attachments/fc9816c1-6460-4ca0-a288-a750d07d44d6) This is how it is looking in 4.0: ![image](/attachments/5bd3ed01-9347-4e64-92f9-8f8e68bae393) I don't know who and why it was changed, but IMO covering the entire header area is problematic, since the header color is an indication of the strip type. Without this indication, if ex. more strip types get thumbnails(they should), then all strips with missing media will look the same. And that is a problem. The thin red line has the saturation level of the selected items and will therefore stand out. This should be enough indication, as long it is still visible at all zoom levels. And currently, is there actually a bug where the red line isn't drawn if all strip texts are switched off. IMO, should all strips have the same kind of missing media indication.
Author
Member

I don't know who and why it was changed, but IMO covering the entire header area is problematic

When it was looking like in your shot? I just tested all the way back to 3.0, and it the missing data red area is the whole "title bar".

IMO, should all strips have the same kind of missing media indication.

Should they? To me it sounds like these are separate and different problems. E.g. a scene strip missing a scene is "the blend file is broken and needs to be fixed". Whereas a movie strip referencing a file that does not exist, in an existing project is more likely a "you have renamed a file" or "the file is on a network share that is down", i.e. the fix is outside the blender (or a temporary issue, like network being down).

> I don't know who and why it was changed, but IMO covering the entire header area is problematic When it was looking like in your shot? I just tested all the way back to 3.0, and it the missing data red area is the whole "title bar". > IMO, should all strips have the same kind of missing media indication. Should they? To me it sounds like these are separate and different problems. E.g. a scene strip missing a scene is "the blend file is broken and needs to be fixed". Whereas a movie strip referencing a file that does not exist, in an existing project is more likely a "you have renamed a file" or "the file is on a network share that is down", i.e. the fix is **outside the blender** (or a temporary issue, like network being down).

IMO, should all strips have the same kind of missing media indication.

Should they? To me it sounds like these are separate and different problems. E.g. a scene strip missing a scene is "the blend file is broken and needs to be fixed". Whereas a movie strip referencing a file that does not exist, in an existing project is more likely a "you have renamed a file" or "the file is on a network share that is down", i.e. the fix is outside the blender (or a temporary issue, like network being down).

We could also call it Broken Strip Indicator and keep it consistent across strip types.

> > IMO, should all strips have the same kind of missing media indication. > > Should they? To me it sounds like these are separate and different problems. E.g. a scene strip missing a scene is "the blend file is broken and needs to be fixed". Whereas a movie strip referencing a file that does not exist, in an existing project is more likely a "you have renamed a file" or "the file is on a network share that is down", i.e. the fix is **outside the blender** (or a temporary issue, like network being down). > We could also call it Broken Strip Indicator and keep it consistent across strip types.

I would agree with @tintwotin, that scene data missing blocks and files should be represented in the same way.
Just a note, that in future strips may be using datablocks for movies and image sequences, because we want to have 3 point editing system.

I would agree with @tintwotin, that scene data missing blocks and files should be represented in the same way. Just a note, that in future strips may be using datablocks for movies and image sequences, because we want to have 3 point editing system.
Author
Member

Alright. So then, should it be:

  1. red "title bar" just like it is for e.g. broken scene strips,
  2. striped red overlay (see screenshots at #116869) just like my current PR, and switch "broken scene strips" to also use that,
  3. red "line at the top" like in @tintwotin's image from previous message, that I can't find which, if any, Blender version did it like that, or
  4. something else?

From what I can tell, most other video applications turn the whole strip "some sort of red" in the timeline to indicate the broken state. I guess that's more visible in complex timelines than just a "red line at top". I quite like striped diagonal overlay, but I also know nothing about video workflows.

Alright. So then, should it be: 1) red "title bar" just like it is for e.g. broken scene strips, 2) striped red overlay (see screenshots at #116869) just like my current PR, and switch "broken scene strips" to also use that, 3) red "line at the top" like in @tintwotin's image from previous message, that I can't find which, if any, Blender version did it like that, or 4) something else? From what I can tell, most other video applications turn the whole strip "some sort of red" in the timeline to indicate the broken state. I guess that's more visible in complex timelines than just a "red line at top". I quite like striped diagonal overlay, but I also know nothing about video workflows.

I would be fine with either option. Personally I think red stripes as in #116869 are fine as they are hard to overlook, though it makes filename bit hard to read. On the other hand even full red title bar is quite hard to overlook.

I would be fine with either option. Personally I think red stripes as in #116869 are fine as they are hard to overlook, though it makes filename bit hard to read. On the other hand even full red title bar is quite hard to overlook.

Some images from Google. Looking at these, the Final Cut way actually makes most sense to me, since it is coloring the content area of the strip red. And that makes sense since it is the content missing, and not the strip. Doing it this way, both the readability of the header text and the header color is preserved(however, the red color still needs to be visible when the strip is very narrow in height).

(A note: in most NLEs the tracks are specified specific kind of strip types, so audio is only in audio tracks etc. which means you can look at the track to see the strip type. In Blender all strip types can be in any channel, which is why the strip type color is important in Blender)

Moderation edit: Removed screenshots. Please check https://devtalk.blender.org/t/copyright-guidelines-for-devtalk/17331

Some images from Google. Looking at these, the Final Cut way actually makes most sense to me, since it is coloring the content area of the strip red. And that makes sense since it is the content missing, and not the strip. Doing it this way, both the readability of the header text and the header color is preserved(however, the red color still needs to be visible when the strip is very narrow in height). (A note: in most NLEs the tracks are specified specific kind of strip types, so audio is only in audio tracks etc. which means you can look at the track to see the strip type. In Blender all strip types can be in any channel, which is why the strip type color is important in Blender) Moderation edit: Removed screenshots. Please check https://devtalk.blender.org/t/copyright-guidelines-for-devtalk/17331

During the development of this feature Aras and I purposely didn't use the "missing data block" error indicator because:

  1. If you hide the text field in the overlay it will not be displayed
  2. "Missing data block" is a different error that will require a different solution from the user.
  3. It is more likely that the unexpected error is missing media files on disk than data blocks
  4. As Richard pointed out, it harder to ignore the stripes as they go against the general flow and direction of the timeline strips.

I personally think that is it is best to keep the data block error separate as if you open up a big edit that somehow has both errors, it can be quite easy for the user to get confused and think that they have more messed up media files when instead they need to fix things from inside Blender.

IE:
For missing media, the most likely solution if to fix it outside Blender. Either by shuffling around files structures or making sure that you are properly connected to a network drive.

For missing data blocks, the solution is most likely done inside of Blender. Either by assigning a datablock to something that didn't have a data block defined in the first place or linking/appending the relevant block to the .blend file.
Even if the proper solution is to shuffle around .blend files, I think it good to make the distinction in the UI so people can at a glance know "Oh, I need to fix media files" or "Oh, I need to fix .blend files".

Edit:
Note that I have already run this past some artists in the Blender studio and they are fine and agree with this.

During the development of this feature Aras and I purposely didn't use the "missing data block" error indicator because: 1. If you hide the text field in the overlay it will not be displayed 2. "Missing data block" is a different error that will require a different solution from the user. 3. It is more likely that the unexpected error is missing media files on disk than data blocks 4. As Richard pointed out, it harder to ignore the stripes as they go against the general flow and direction of the timeline strips. I personally think that is it is best to keep the data block error separate as if you open up a big edit that somehow has both errors, it can be quite easy for the user to get confused and think that they have more messed up media files when instead they need to fix things from inside Blender. IE: For missing media, the most likely solution if to fix it outside Blender. Either by shuffling around files structures or making sure that you are properly connected to a network drive. For missing data blocks, the solution is most likely done inside of Blender. Either by assigning a datablock to something that didn't have a data block defined in the first place or linking/appending the relevant block to the .blend file. Even if the proper solution is to shuffle around .blend files, I think it good to make the distinction in the UI so people can at a glance know "Oh, I need to fix media files" or "Oh, I need to fix .blend files". Edit: Note that I have already run this past some artists in the Blender studio and they are fine and agree with this.

Then how about coloring the content area of the strip in two different colors for missing data-block and missing file?
For the preview, the same colors could be used.

Then how about coloring the content area of the strip in two different colors for missing data-block and missing file? For the preview, the same colors could be used.
Contributor

Remember that user can assign any color to strip, and different themes use different color presets, so any color we pick can potentially be lost in some theme somewhere. There needs to be something recognizable besides color that communicates this. Thats why I like original proposal with zebra strips best

Remember that user can assign any color to strip, and different themes use different color presets, so any color we pick can potentially be lost in some theme somewhere. There needs to be something recognizable besides color that communicates this. Thats why I like original proposal with zebra strips best

Then the diagonal zebra stripes should only be in the content area of the strip and in two colors(if separating data-block from missing file is necessary).

Then the diagonal zebra stripes should only be in the content area of the strip and in two colors(if separating data-block from missing file is necessary).

We should make sure that the error is as visible as possible and so it is not easily confused with something else. Therefore striping the whole strip area is the best solution.

It is not possible to have missing datablocks and missing media data at the same time either so the errors should never overlap.

I think the current solution makes it quite clear what you are dealing with at a glance:
screenshot.png

If you only have the error in the content area, it will be much easier to confuse the error for something else IMO.

We should make sure that the error is as visible as possible and so it is not easily confused with something else. Therefore striping the whole strip area is the best solution. It is not possible to have missing datablocks and missing media data at the same time either so the errors should never overlap. I think the current solution makes it quite clear what you are dealing with at a glance: ![screenshot.png](/attachments/a6883cd9-7170-4626-ada1-e03287ffe4c3) If you only have the error in the content area, it will be much easier to confuse the error for something else IMO.

When looking for missing files, it is essential to be able to read the path in the strip header, and you can't read the path text if the stripes are covering that area.

When looking for missing files, it is essential to be able to read the path in the strip header, and you can't read the path text if the stripes are covering that area.

In our production test files, there is usually not enough room to be able to see the path in the strip header: image

So I think in practice most people will probably click on the stips and read the path from the n-panel.

If the strip is long enough, then I think it is readable enough if you select it:
image

In our production test files, there is usually not enough room to be able to see the path in the strip header: ![image](/attachments/fc956e48-4249-4578-9bba-923eea2c56cd) So I think in practice most people will probably click on the stips and read the path from the n-panel. If the strip is long enough, then I think it is readable enough if you select it: ![image](/attachments/c9bea313-b92b-4947-855e-8c87feffccf1)
Contributor

What if we also do drop-shadow on strip title when error to make it more readable

What if we also do drop-shadow on strip title when error to make it more readable

Checking several file paths with this look will drive most people insane:
image

(Also, isn't that color is too much Barbie? Why not a plain red?)

Checking several file paths with this look will drive most people insane: ![image](/attachments/9d64d2ab-8a4d-4350-ad2e-94c0688656ed) (Also, isn't that color is too much Barbie? Why not a plain red?)
3.8 KiB

I do agree that there could (or should be) do some improvements to how text is displayed on the strips.
However I think this is not related to this specific missing media issue.
In my example where I used meta strips you can see that it is already quite easy to get hard to read text even without the stripes.

So I think we should probably split that out and make an other task/PR for that.

I do agree that there could (or should be) do some improvements to how text is displayed on the strips. However I think this is not related to this specific missing media issue. In my example where I used meta strips you can see that it is already quite easy to get hard to read text even without the stripes. So I think we should probably split that out and make an other task/PR for that.

This doesn't work. And it is very much related to this suggested change:
image

I think you should aim for a solution which:

  • Preserves the readability of the strip header text.
  • Preserves the readability of the strip type color.
  • Do not make warnings optional.
  • Visually links the Preview of the broken strip with the broken strip indication via. ex. color.
This doesn't work. And it is very much related to this suggested change: ![image](/attachments/ffed50ff-997f-41f7-abaa-1c6d803db58c) I think you should aim for a solution which: - Preserves the readability of the strip header text. - Preserves the readability of the strip type color. - Do not make warnings optional. - Visually links the Preview of the broken strip with the broken strip indication via. ex. color.
3.9 KiB

The feature has already gone through a few rounds of artist feedback.
For example:

Preserves the readability of the strip header text.

Readability of the strip header were not of a higher priority than marking the strip as broken.
Especially since the header is usually not readable either way in production edits.
That is the feedback I got from multiple artists.
Even as it is now, they didn't think it was too horrible to read the text of the active strip.

Preserves the readability of the strip type color.

Same as above. Especially since the strip color can be changed by the user so it can't reliably be used to identify the type of strip.
The artist were also able to identify the strip color without much of an issue even with the stripes.

Do not make warnings optional.

This was also specifically requested in the feedback we got from artists. Sometimes they want to work on something and not be annoyed by warnings in case they need to do something ASAP.

Visually links the Preview of the broken strip with the broken strip indication via. ex. color.

The color was initally going to be red. However after feedback it was changed to purple to match how we display missing textures. The stripe color was kept red as the general consensus was that it made more sense in the timeline to have red to indicate errors.

The feature has already gone through a few rounds of artist feedback. For example: > Preserves the readability of the strip header text. Readability of the strip header were not of a higher priority than marking the strip as broken. Especially since the header is usually not readable either way in production edits. That is the feedback I got from multiple artists. Even as it is now, they didn't think it was too horrible to read the text of the active strip. > Preserves the readability of the strip type color. Same as above. Especially since the strip color can be changed by the user so it can't reliably be used to identify the type of strip. The artist were also able to identify the strip color without much of an issue even with the stripes. > Do not make warnings optional. This was also specifically requested in the feedback we got from artists. Sometimes they want to work on something and not be annoyed by warnings in case they need to do something ASAP. > Visually links the Preview of the broken strip with the broken strip indication via. ex. color. The color was initally going to be red. However after feedback it was changed to purple to match how we display missing textures. The stripe color was kept red as the general consensus was that it made more sense in the timeline to have red to indicate errors.

Pls, include the UI team in the design decisions, such as these.

Pls, include the UI team in the design decisions, such as these.

Pls, include the UI team in the design decisions, such as these.

I have.
I've gotten a green light from Julian already.

> Pls, include the UI team in the design decisions, such as these. I have. I've gotten a green light from Julian already.

@JulianEisel / @ZedDB I would suggest waiting for Pablo to be back (tomorrow?) and run this by him.

Blender also uses the stripped language for invalid baked simulations. I think we should try to unify the language used (in terms of spacing, and how we use/combine the colors).

image

In the image, current patch:

  • Locked strip
  • Missing media
  • Invalid cached simulation
@JulianEisel / @ZedDB I would suggest waiting for Pablo to be back (tomorrow?) and run this by him. Blender also uses the stripped language for invalid baked simulations. I think we should try to unify the language used (in terms of spacing, and how we use/combine the colors). ![image](/attachments/00c27aee-c603-40a6-abf9-2fd14185d899) In the image, current patch: * Locked strip * Missing media * Invalid cached simulation

Bonus image, combining locking and missing media:
image

Bonus image, combining locking and missing media: ![image](/attachments/a6ce5551-c65d-47dc-a806-192e54429253)
1.8 KiB
Author
Member

Some experiments I did locally, kinda similar what @tintwotin wrote above:

  • Display both kind of "stuff's missing" with the same style (diagonal stripes), i.e.both "data block is missing" (broken scene strip) and "media file is missing". Just one of them with red color, another with magenta (to kinda match how "missing texture" is magenta).
  • Display both in the "content area" of the strip, i.e.below the text labels, if they are present. If the text labels are not displayed, or zoom level is too far out for text to fit, then that covers the whole strip area.
  • This fixes the issue that "broken scene strip" red thing was previously not displayed at all, if you turned off all text labels (which sounds like accidentally wrong code to me, as in the code was still drawing the red bar, but of zero height). Now it is visible.

Various cases: Screenshot 2024-01-09 at 16.02.56.png

Same with all text labels display turned off (previously the "missing scene" case did not have any indicator of being "broken" in this case): Screenshot 2024-01-09 at 16.03.17.png

Same zoomed out, so that strip heights are too small to display either content (thumbnails for valid strips) or text labels:
Screenshot 2024-01-09 at 16.03.42.png

Screnshot of Sprite Fright Edit data set, zoomed out: Screenshot 2024-01-09 at 16.04.28.png

Some experiments I did locally, kinda similar what @tintwotin wrote above: - Display *both* kind of "stuff's missing" with the same style (diagonal stripes), i.e.both "data block is missing" (broken scene strip) and "media file is missing". Just one of them with red color, another with magenta (to kinda match how "missing texture" is magenta). - Display both in the "content area" of the strip, i.e.below the text labels, if they are present. If the text labels are not displayed, or zoom level is too far out for text to fit, then that covers the whole strip area. - This fixes the issue that "broken scene strip" red thing was previously not displayed at all, if you turned off all text labels (which sounds like accidentally wrong code to me, as in the code was still drawing the red bar, but of zero height). Now it is visible. Various cases: ![Screenshot 2024-01-09 at 16.02.56.png](/attachments/8652a4b4-9e69-4245-8160-175d5797bc0d) Same with all text labels display turned off (previously the "missing scene" case did not have any indicator of being "broken" in this case): ![Screenshot 2024-01-09 at 16.03.17.png](/attachments/25f4a601-4c7d-40cb-9f89-da9eeaee358a) Same zoomed out, so that strip heights are too small to display either content (thumbnails for valid strips) or text labels: ![Screenshot 2024-01-09 at 16.03.42.png](/attachments/b3c31e2f-bc2c-4696-bd40-01567bd946e2) Screnshot of Sprite Fright Edit data set, zoomed out: ![Screenshot 2024-01-09 at 16.04.28.png](/attachments/a5cfb8eb-0976-4dd6-a306-20f18fd02295)

Note that the current decision to have the different errors not share the same striped visuals were also to make it easier for certain to color blind people to see the difference.
Here is the above proposal with simulated blue blindness:
image

Note that the current decision to have the different errors not share the same striped visuals were also to make it easier for certain to color blind people to see the difference. Here is the above proposal with simulated blue blindness: ![image](/attachments/bbf695ff-d999-451e-bcb4-2a0b8c765fbc)
141 KiB

The color strips have a separating line between strip header and strip content:
image

This could also work well with the stripes:
image

The color strips have a separating line between strip header and strip content: ![image](/attachments/47817c97-7b47-4148-8860-57c4526c2e7f) This could also work well with the stripes: ![image](/attachments/d08b4769-c151-4c54-90d8-71f59684d4fa)
1.8 KiB
5.9 KiB

The prop_search widget can be pointing to strips, and when the strips disappear from the timeline it goes red, so in other words if something is missing, solid red is the indication:
prop_search.gif

However, if a scene is missing, there is no indication in the sidebar panel widget, that something is missing(except New, which seems odd?):
image

The [prop_search](https://docs.blender.org/api/current/bpy.types.UILayout.html#bpy.types.UILayout.prop_search) widget can be pointing to strips, and when the strips disappear from the timeline it goes red, so in other words if something is missing, solid red is the indication: ![prop_search.gif](/attachments/792c4f11-74c5-4468-b784-bece71e6cfb7) However, if a scene is missing, there is no indication in the sidebar panel widget, that something is missing(except New, which seems odd?): ![image](/attachments/dd30fc62-e517-47ec-bd6f-64bea34058b6)
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
6 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#116821
No description provided.