Sep 13

I want to set bookmarks in videos!

Category: Linux,multimedia  goes @ 5:32 pm

Over and over again I am asking myself: is there a standard, a spec, some application or similar that would let me set bookmarks in videos? I want to bookmark moments in videos!

Soundcloud, has a feature where you can add comments on the timeline of the playing audio, below the waveform display of the track you are listening to. That’s what I want, only for video. YouTube allows you to bookmark their videos with a specific time offset, a start time, via the html <a name> syntax, by adding hash-t-=-minutes-seconds to a video URL: youtube.com/?v=something#t=3m22s. Good. But only for web-video, only for one bookmark, and only for an “in point”, not for spans. And digging into YT’s on-screen annotations doesn’t help either.

My current (hackish) solution

So far I’m using a sort of self-bred lingo and put it, I embed my time-offset notes, “bookmarks”, into the filenames. When I have a video like birthday-party.avi, I rename it to birthday-party_[00:08:22](Larry falls into cake).avi to remind myself where the important moment in this video is. I borrow from markdown’s link syntax, but put the description in parenthesis, while I think the timecode-bit stands out more in square-brackets.

Not optimal, a bit tedious, manual, but works, although it gets clunky once you add more than 2-3 bookmarks. I’ve got to shuttle the video manually to bookmarked timecodes. And it elongates file names. That’s why I think about moving these descriptors to extended file attributes sometimes. But as most file-browsers treat xattr very poorly, that would make these video bookmarks opaque for me. Let alone that no video player reads out xattr. And they might get lost when you move files around filesystems not consistently supporting xattr. And there’s no GUI, no visual indicators during playback.

Available solutions via apps

Everytime

Then I learned about a desktop app that would allow me to do just that, Everytime (everytimehq.com). I found them via the node.js+webkit movement. The pitch then on their page was impressive, vlc would playback videos, their app would communicate with vlc to bookmark local and online video. But when I tried to get the desktop app, I’ve found out that I was unable to download the app without a dropbox account (ever heard of github guys?), they primarily try to lure me into using the functionality online, which limits it mostly to youtube videos. Their servers are slow and you can only get thumbnails along with your bookmarks when you use a Chrome Extension. -All in all, no solution for me, too complicated (with Chrome Extensions, vlc and the Everytime app that’s 3!! things interacting) and it’s too social-networky. And you build up an external, an external-online (!) database of your bookmarks. I want to embed these bookmarks as closely into my videos as possible. Nothing external, please!

VLC

Googling around I’ve found that vlc itself supports M3U bookmarks in some revisions. So you would be able to have a playlist, let’s say of a Symphonic Concerto spanning 10 tracks, and you left of in the mid of track 4 @ 2minutes 33seconds. vlc could then store this “bookmark” in the #EXTVLCOPT header of an M3U file. But read that, “extended VLC options”, arg! Non portable, only for a set of files, a playlist, and not even consistently implemented in all vlc versions. Even worse for me, I tend to rely on mplayer or ffmpeg based tools for playback.

.cue sheets

A similar approach are CUE sheets, well known among people who tend to rip audio CDs to one long single wav file or iso file. Playing these back involves a player that is able to parse these CUE files, extracting the offsets and then displaying the single wav file to the user as if it would be a sort-of playlist of multiple tracks, randomly accessible. But again, that’s audio, and in most cases an “external”solution as only sometimes these cue sheets get written into the wav header.

So, no acceptable solutions out there!

Although video players usually offer some handle to control where playback should start. avplay from libav accepts the -ss (seek) and -t (time/duration of playback) switches. mplayer has something similar. We’ve seen, even YouTube offers a simple handle (and API). All it needs is a consistent way of storing offset markers and passing these to the playback player.

The perfect solution (would be)

Mockup of how video bookmarks (essentially simple video annotations) may look in UI

Ideally, I would want some standard, a common spec, like the proposed MPEG7, but without being a behemoth of all-encompassing ruleset. A lean way of standardizing how we describe and store bookmarks along with video, which are essentially a specific sort of metadata.
In a simple syntax that is human readable and machine-parseable (like JSON). That can be added manually or by applications. Like machine-tags (triple tags), for the simplest case where your bookmark is only one word/tag, resulting in something along the line of “bookmark=00:00:07=interesting”. While providing an extended syntax when your description is multi words or your timecode a from-to pair, a span. Offering optional notations: simple “mm:ss” timecode, “hh:mm:ss.fractions” timecode, duration offsets like @4 seconds. And an answer to the problem of editing: when you cut off let’s say, 5 seconds from the video’s beginning, all markers have to move 5 seconds to the front. So we need some agreement how we anchor these times, from video start or off of some internal (timecode) marker.
And then a set of rules where applications implementing the standard should look for these descriptors, in filenames (1), in extended-attributes (2), in metadata-headers (3). And finally, after gathering all bookmarks, a more or less uniform way of displaying those markers and/or spans on the timeline, including a UI to create/update/delete these markers/spans.
Application developers could built upon that and start implementing these in their GUIs. After all, bookmarks (or let’s call them videomarks, markers) are a, simple, subset of the more general concept of video annotations. And video annotations as a whole are mostly neglected by developers. So, let’s build something!

Colophon

For the search engines, this article asks: Is it possible to make a bookmark in a video. How to bookmark moments in a video. How to make bookmarks in videos. Set YouTube video bookmarks. Video bookmarks. Video markers. How one can add markers on video timelines. And it discusses what’s currently out there, to my knowledge. Got it? Well, feedback welcome, then.

One Response to “I want to set bookmarks in videos!”

  1. Oliver Stieber says:

    My current mode of thought is to use subtitling software and embed the subtitles in the MP4 file and parse the subtitles I create (subtitles are bookmarks with whatever text etc.. I want in there) into things like CUE and all that kind of stuff.

Leave a Reply

=