How to annotate Video Sequence Editor?

I am working on a video edit, using the video sequence editor in blender.
I’m working with a sound editor who is using protools, and provides me audio wave files to use in blender.
I want to be able to coordinate/communicate edits and changes I make to his audio files in my video edit.
I’m thinking the most efficient way to do this is to provide him with a quicktime movie file of my edit, with his audio, annotated with the following info:

  • Frame number on each frame
  • Time code on each frame
  • Which audio file I’m using on each frame
  • Which part of the above audio file I’m using on each frame

I know I can burn the frame and time code using the stamp option.
But I don’t know how to add annotation in the video sequence editor.

Does anyone know how to do this?
If not, could I write a python custom effect strip to do this?

Any information would be much appreciated.

Sincerely,
Synthetic

Moved from “General Forums > Blender and CG Discussions” to “Support > Compositing and Post Processing” (it could also fit in Python support if you’d like)

Using a Scene strip (the scene has a camera and a text object with shadeless color), you could write a pretty simple Python script to add those annotations. The Python script updates the text in the text object on specific frames and the scene stripe is an overlay for your video.

Thats a cool solution, I hadn’t thought of updating a single text object. I would add that you should use a text bounding box too so that you get word wrap.

Thanks for your response. I’l give the text object as a video overlay a try.

Thanks, I’ll try it as a text bounding box.

Hmmm what bpy.op is text object content? I wonder if you could trigger it on markers?

It’s not an operator. You’re just replacing data. The code looks something like this:


bpy.data.objects['MyTextObject'].data.body = "This is the new text"

Where ‘MyTextObject’ is, well, the name of your text object.

You can trigger it on markers, sort of. Actually, that’s pretty clever. You’d be using a frame change handler (http://www.blender.org/api/blender_python_api_2_73a_release/bpy.app.handlers.html). On each frame change, you check to see if there’s a marker. If there is, you change the body of your text object with the text in the marker. The code looks something like this:


import bpy

#Define the handler function
def text_update(scene):
    # Compare the frame for each marker to the current frame
    for marker in scene.timeline_markers:
        if marker.frame == scene.frame_current:
            # If there's a match, replace the text object's content with the name of the marker (it's label)
            bpy.data.objects['MyTextObject'].data.body = marker.name

# Let Blender know it should run the text_update function every time there's a frame change
bpy.app.handlers.frame_change_pre.append(text_update)

Either run that script before rendering or simply keep it loaded in the Text Editor with the Register check box enabled in the Text Editor’s header. That way whenever you open the file, the script is automatically run.

You awesome man!!