Managing Missing Media2 min read

Yesterday, Edward added a nice new feature PiTiVi: it now doesn’t die when you open a project file with missing media, and allows you to locate the new location of the files if they have moved. It looks like this:
capture-locate-missing-file
Now, seeing this automatically made me file two new bug reports.

  1. First, the default size of that dialog is not funny.
  2. Second, an enhancement request (and the subject of this blog post): this doesn’t help me if the filenames changed (not just the paths).

So I spent some time thinking and did old-fashionned mockups (pen and paper). Please do comment on them. My ideal goal is that anybody who looks at them (and knows that they are meant to be used “when there are missing files in a project”) will be able to understand how they are meant to be interacted with.
First, you would have this dialog pop up when trying to load the project:
pitivi-missing-media-1
The checkboxen on the rightmost column would be meant to be “gtk insensitive” (you can’t interact with them), and reflect if a clip was used “in the timeline” or just sitting there in the clip library. Clicking the “Ok” button would set the new paths/names for all the clips that you located, and ignore (mark “offline”) all the rest. As such, the “Ignore” button is actually kinda useless, now that I think of it, and maybe the “Ok” button should be relabelled to something like “Accept changes and leave the remaining missing media offline”, but it sounds extremely long. Feedback welcome.
Either clicking the “Search automatically” button or when you manually locate a clip and PiTiVi “thinks” that it found the other clips in the same folder (this is a feature that we already have, by the way), this new dialog would appear:
pitivi-missing-media-2
…Quickly followed by this one:
pitivi-missing-media-3
Cue the “These aren’t the droids you’re looking for” joke 🙂 in this dialog, the “Is this the same?” column’s checkboxen would actually be sensitive (the user could check/uncheck them).
Now, please comment on all this. I believe this system would work quite well and highly surpass Vegas and expectations of “Holy Shit It Just Works”. Initial feedback requests from friends hinted that I was in the right direction, at least nobody so far seemed to have problems grasping this serie of mockups.
Bonus question: how should the automatic matching/searching be done? I was thinking of simply looking for files with the same extension + same filesize (and optionally same filename), as this may be a very fast way to search. Then metadata could be retrieved such as thumbnails, duration, resolution, etc (but this will surely require changes in the PiTiVi file format to embed all those things). Someone suggested to me to use MD5 checksums, but my initial guess is that this would be horrible for performance (imagine trying to locate 150 video clips by md5summing a bunch of video files on your hard drive, some of which could weigh gigabytes).

Jeff

Comments

6 responses to “Managing Missing Media”

  1. Here are my thoughts.
    Please note that i havn’t think a lot about this.
    concerning pitivi-missing-media-1.png : i don’t see the purpose of the “in use ?” column, looks like something unnecessary to me.
    + It’s not clear to me what Open and Ignore buttons are related with
    concerning pitivi-missing-media-3.png : i don’t like at all theses checkboxes.
    Maybe PiTiVi should popup as many windows as missing files.
    I don’t think that the natural answer to “is it the same ?” is to (un)tick a checkbox
    concerning the whole suggestion : is it worth it ?
    do you think users will often lost∕rename their media files with which they are working at present time ? if not, maybe it’s too much work for a problem that may appear in a few occasions.
    I think that the most important thing is to have that smart thing you wrote about : when you manually locate a clip PiTiVi has to check if other missing files can be found in the same folder.

  2. > “i don’t see the purpose of the “in use ?” column, looks like something unnecessary to me.”
    Indeed, to be debated. This would simply be an indicator of importance; I thought that maybe some users might not care about finding a clip if it’s not used in the timeline per se. But you are right, I am, myself, not entirely sure that this feature ought to be there.
    > “It’s not clear to me what Open and Ignore buttons are related with”
    They are related to the selected item in the listview on the left. Of course, when nothing is selected, they would be insensitive.
    > “Maybe PiTiVi should popup as many windows as missing files.”
    Noooes! What if I have 156 missing files because they have moved? I’m not exagerating. At least the current mockup would allow (I think) batch decisions, and also having a global sense of “how much more missing stuff there is for me to check”, instead of a very frustrating “endless serie of dialogs that keep popping up”.
    > “do you think users will often lost∕rename their media files with which they are working at present time ? if not, maybe it’s too much work for a problem that may appear in a few occasions.”
    I often move my files around or cleanup their names, personnally. I would envision users that are less tech-savy than me to maybe even do this more often than me, naïvely expecting the software to “handle it magically”.
    A few days ago, I actually had to do some manual surgery with gedit on a .xptv file, before this feature was implemented. Not everyone can do this.
    > “I think that the most important thing is to have that smart thing you wrote about : when you manually locate a clip PiTiVi has to check if other missing files can be found in the same folder.”
    Yeah, and thus dialog 2 and 3, which could be big time savers 🙂

  3. i understand that you try to solve the 156 windows popping up nightmare but, still i don’t think that the natural answer to “is it the same ?” is to (un)tick a checkbox.
    I don’t find the answer (tick a checkbox) to be logically connected to the question (“is it the same ?”)
    what if i want to answer yes or no ? what is the corresponding answer in CheckboxLand ? it doesn’t look intuituve to me

  4. Agreed, I just haven’t found a better way to do it yet 😉

  5. with pitivi-missing-media-1.png i don’t see the difference if i have to select each media file and click Open to select the good one with having as many windows as missing files ?
    with pitivi-missing-media-3.png : maybe “confirm” or “approve” would be more suitable than “is it the same ?” for the chexboxe answer.
    Then it would be cool to have a “confirm all” button that would mark all media files WITHOUT closing the window (to let the user deselect some of the files)
    For instance, if i agree with 29∕30 choices. I’d like to select all (1st click) and then deselect one (second click) and then close the window (3rd click) instead of ticking 29 chexboxes plus “accept selected” button.
    Besides, regarding the 30th media file, how can i manually search it after pitivi-missing-media-3.png window ?

  6. Brandon Avatar
    Brandon

    Good job on the mockups. They look better than the handrawn ones i’ve done. Good idea posting on your blog, as feedback from strangers is likely to be closer to the mark than feedback from family and friends. They are biased to be encouraging, and won’t always tell you what they really think.
    Please continue doing mockups like this for new features.
    Comments
    1) Keep it simple. Use as few concepts, elements, and steps as possible. I think we can simplify this design quite a bit.
    2) Put the user in control. Let them do tasks in any order
    3) Provide lots of feedback. Make it explicitly clear what’s about to happen.
    Suggestions:
    Let’s just have one single dialog that lets the user do everything at once.
    On the top, we’ll have a list of all the clips in the project. Anything for which the file appears to be missing will have a little warning icon next to it. No checkboxes here. Adjacent to this list is a preview widget. When the user clicks on a clip in the list, a preview for that clip is shown if possible.
    Directly below this list is a FileChooserWidget. The widget has an adajcent preview widget allowing the user to view whichever media file they select.
    Below this is a check box which says “Exchange sources with similar paths” which is initially checked.
    On the bottom row are three buttons: Offline, Exchange (insensitive initially), Cancel, and Done (insensitive if there are unmapped clips).
    Behavior:
    Clicking on a clip in the clip list sets the file widget to the clip’s current mapped path or PiTiVi’s best guess about what it might be. The user is still free to change this path.
    If the user selects an unmapped (missing) clip, or if the user selects a file in the FileChooserWidget which is other than the current mapped path, then the Exchange button becomes sensitive. So long as there are unmapped (missing clips), the Done button remains insensitive and the dialog cannot be closed. But once the user has mapped all the clips, they can close the dialog at any time. Only then will the project be modified.
    When the user clicks “Offline”, the selected source is marked as offline, meaning that it remains in the timeline as a blank source which has no associated media. This essentially preserves the user’s data about the source, and lets them continue editing even if the source isn’t available.
    When the user selects “Exchange”, pitivi goes to work analyzing the selected media file, and displays a rotating pinwheel, like in the clip library. If analysis succeeds, the source(s) should be marked as mapped. If analysis fails, the sources will be considered “unmapped”. If the “Exchange similar” is checked, then PiTiVi does it’s intelligent mapping thing and remaps as many sources as it can.
    Conclusion:
    Notice that we’ve combined everything into one single dialog. Notice how the user is free to map sources in whatever way they wish, and also notice how they can go back and fix mistakes. We provide feedback through warning icons and button sensitivity to prevent them from having an incomplete mapping as well. This feature is general enough that we can make it available to the user at all times, allowing them to replace any clip in their project with an arbitrarily chosen file under almost any circumstances.