doc:appunti:linux:video:olive_editor_ovexml
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| doc:appunti:linux:video:olive_editor_ovexml [2023/09/28 16:45] – niccolo | doc:appunti:linux:video:olive_editor_ovexml [2023/09/28 18:03] (current) – [Proof of concept program] niccolo | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| **[[https:// | **[[https:// | ||
| + | |||
| + | ===== The project can be saved as an XML file ===== | ||
| A feature that I really apreciated is the ability to save the project file into an XML file (with the **.ovexml** extension). Being addicted to the **GNU/Linux command** line and **ffmpeg** I immediately tried to convert an Olive project into an ffmpeg script. | A feature that I really apreciated is the ability to save the project file into an XML file (with the **.ovexml** extension). Being addicted to the **GNU/Linux command** line and **ffmpeg** I immediately tried to convert an Olive project into an ffmpeg script. | ||
| + | |||
| + | ===== A walk inside the OVEXML ===== | ||
| Here I explain some findings on an **OVEXML** file created with **Olive v.0.2**. | Here I explain some findings on an **OVEXML** file created with **Olive v.0.2**. | ||
| Line 51: | Line 55: | ||
| </ | </ | ||
| - | As you can see the frame numbers are represented as rationales. Being my framerate | + | As you can see the frame numbers are represented as rational numbers. Being my footages shot at 29.97 FPS (i.e. 30000/1001) the math is as follow: **1001 / 200 * 30000 / 1001 = 150** (i.e. 150 frames clip length). |
| The most challenging part was to understand how the clips are ordered into the timeline. Unfortunately the **%%< | The most challenging part was to understand how the clips are ordered into the timeline. Unfortunately the **%%< | ||
| Line 68: | Line 72: | ||
| </ | </ | ||
| - | The ASCII string **%%AwAAAAgAAAAFAAAABwAAAAYAAAA=%%** is actually a base64 encoded binary string that you can decode on the command line into binary: | + | The ASCII string **%%AwAAAAgAAAAFAAAABwAAAAYAAAA=%%** is actually a base64 encoded binary string that you can decode on the command line into a binary |
| <code bash> | <code bash> | ||
| Line 81: | Line 85: | ||
| Hence the timeline sequence of clip elements: #3, #8, #5, #7 and #6 (32 bit unsigned integers, little endian). | Hence the timeline sequence of clip elements: #3, #8, #5, #7 and #6 (32 bit unsigned integers, little endian). | ||
| + | |||
| + | ===== Proof of concept program ===== | ||
| + | |||
| + | Here you can find my Python script that I used to parse an Olive Editor project file, the output is the ordered list of all the clips used, with the **footage filename**, the **start frame** and the **length** of the clip (in frames). | ||
| + | |||
| + | **{{.: | ||
doc/appunti/linux/video/olive_editor_ovexml.1695912336.txt.gz · Last modified: by niccolo
