| Anonymous | Login | Signup for a new account | 2013-06-19 19:24 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
| 0002560 | Kdenlive | Capture | public | 2012-04-03 17:41 | 2013-01-06 22:51 | ||||||||
| Reporter | mohanohi | ||||||||||||
| Assigned To | |||||||||||||
| Priority | high | Severity | feature | Reproducibility | N/A | ||||||||
| Status | new | Resolution | open | ||||||||||
| Platform | 64 bit | OS | Ubuntu | OS Version | 11.04 | ||||||||
| Product Version | 0.8.2.1 | ||||||||||||
| Target Version | Fixed in Version | ||||||||||||
| Summary | 0002560: EDL Feature | ||||||||||||
| Description | EDL (Edit decision list) is the most and ancient form of getting footage from and to other Editing Applications. EDL import and export feature is available in all the editing application incl cinelerra(import & export), Blender (import). It would be very helpful if this feature be included in Kdenlive. AVID editor can give his EDL so that i could do further color manipulation in kdenlive. Or If i use kdenlive for editing, I could edit and deliver EDL for Autodeks Smoke/ Blender users for Advanced Color Grading / VFX works. Please consider this request. I think implementing EDL isn't that impossible to do. | ||||||||||||
| Additional Information | http://en.wikipedia.org/wiki/Edit_decision_list [^] | ||||||||||||
| Tags | No tags attached. | ||||||||||||
| Build/Install Method | Distribution package | ||||||||||||
| Attached Files | |||||||||||||
Notes |
|
|
(0008675) mohanohi (reporter) 2012-11-28 18:46 |
Any updates? Not possible? |
|
(0008676) eddrog (developer) 2012-11-29 09:33 |
No its not too difficult and its possible. And I think its an important feature but the problem is lack of time. I already took a closer look at this feature request. But at the moment I'm working on another feature (JACK - has a higher prio for me; bug fixing) and the other devs are hard working on refactoring or bug fixing ... I hope Q1/Q2 next year I'll have the time. Perhaps someone else will/can contribute this feature sooner. |
|
(0008677) mohanohi (reporter) 2012-11-29 16:24 |
Thats a relief. But till then i can't use kdenlive for any serious film projects.. :( |
|
(0009011) farid (reporter) 2013-01-03 18:35 |
now blender has an edl import. http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Import-Export/EDL_Import [^] it would be great if kdenlive has this feature so that we can work better with blender. how about kdenparse? http://kdenlive.org/forum/announcing-kdenparse-python-kdenlive-project-file-parser-generates-edl-sort-and-other-stuff [^] |
|
(0009018) mohanohi (reporter) 2013-01-04 05:49 |
Oh, There's a kdenparse script? Now it will be nice if i could import projects edited in kdenlive and do further vfx works in Blender / any other color grading apps. |
|
(0009019) mohanohi (reporter) 2013-01-04 07:12 |
This is the script developed for eyeon fusion by http://peterbako.hangman.hu/edlimporter/ [^] And its GPL license.. ------------------------------------------------------ -- Simple EDL importer script, Revision: 1.0 -- -- This script creates loaders from EDL file generated -- by Adobe Premiere. File name must be in the comment field. -- -- place in Fusion:/Scripts/Comp -- -- written by Peter Bako (bako.peter@hangman.hu) -- created : Okt 23, 2010 by Peter Bako -- website: http://www.peterbako.hangman.hu [^] -- license: http://www.gnu.org/licenses/gpl.html [^] -- If you think this script is useful consider upgrading to PRO. ------------------------------------------------------ function trim (s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end --add backslash character at the end of the directory path function addper(dirpath) if string.sub(dirpath, - 1, - 1) ~= "\\" then return(dirpath.. "\\") else return(dirpath) end end function parseClipLine(edlLine, fps) --EDL line from Adobe Premiere: -- 001 AX V C 00:00:05:04 00:00:11:18 00:00:00:00 00:00:06:14 -- * FROM CLIP NAME: MVI_4166_gondolkodik_kozeli.MOV --non-drop frame timecode pattern: HH:MM:SS:FF ----------------------- pattern = "[%d+:%d+:%d+:%d+]+" timecodes = {} counter = 1 for i in string.gmatch(edlLine,"%S+") do timecodes[counter] = i counter = counter + 1 end numbers = {} numbers[1] = timecodes[1] numbers[2] = convertToFrameNumber(timecodes[5],fps) numbers[3] = convertToFrameNumber(timecodes[6],fps) numbers[4] = convertToFrameNumber(timecodes[7],fps) numbers[5] = convertToFrameNumber(timecodes[8],fps) numbers[6] = timecodes[3] return(numbers) end function parseCommentLine(edlLine) --EDL line from Adobe Premiere: -- 001 AX V C 00:00:05:04 00:00:11:18 00:00:00:00 00:00:06:14 -- * FROM CLIP NAME: MVI_4166_gondolkodik_kozeli.MOV --non-drop frame timecode pattern: HH:MM:SS:FF ----------------------- clipname = {} counter = 1 clipname = split(edlLine, ":") return(trim(clipname[2])) end function convertToFrameNumber(timecode, fps) pattern = "%d+" timechunks = {} counter = 1 for i in string.gmatch(timecode, pattern) do timechunks[counter] = i counter = counter + 1 end frameNumber = fps * (timechunks[1] * 3600 + timechunks[2] * 60 + timechunks[3]) + timechunks[4] return(frameNumber) end function createLoader(framerate, timecodes, dirpath, filename, norm) if string.lower(timecodes[6]) == "v" then offset = 0 --concatenate the filepath local filepath = addper(dirpath)..filename --create a new loader tool local loader = {} loader = composition:AddTool("Loader", timecodes[1] * 2, 1 ) -- store the initial loader's parameters local oldSettings = loader:GetAttrs() -- flush the old parameters and use the new ones loader.Clip = "" loader.Clip = filepath loader.GlobalIn = oldSettings["TOOLNT_Clip_Start"][1] loader.ClipTimeStart = oldSettings["TOOLIT_Clip_TrimIn"][1] loader:SetAttrs({TOOLB_PassThrough = true}) wait(0.2) loader:SetAttrs({TOOLB_PassThrough = false}) --normalize the timecode based on metadata if norm ~= 0 then local clipfile = io.open(filepath, "r") if clipfile then abs_tc = loader.Output[0].Metadata.start_absolute_timecode edge_tc = loader.Output[0].Metadata.start_edge_timecode if abs_tc and edge_tc then edge_tc = convertToFrameNumber(edge_tc,frate) abs_tc = convertToFrameNumber(abs_tc,frate) if norm == 1 then offset = offset + edge_tc elseif norm == 2 then offset = offset + abs_tc end end end end -- set the ranges according to the timecodes loader.HoldFirstFrame = timecodes[4] loader.GlobalIn = timecodes[4] loader.ClipTimeStart = timecodes[2] - offset loader.ClipTimeEnd = timecodes[3] - offset loader.HoldFirstFrame = 0 loader.HoldLastFrame = 0 --if the file is missing change the node's color local fopentry = io.open(filepath, "r") if fopentry == nil then loader.TileColor = {R = 0.6, G = 0.0, B = 0.0} loader.TextColor = {R = 1, G = 1, B = 1} print(" - WARNING: Loader has been created but the footage is missing.\n") return(1) end print(" - DONE : Loader has been created succesfully!\n") else print(" - WARNING: Skipped Loader creation. This EDL line may refer to audio content.\n") end return(0) end function isEmptyLine(getLine) --skip the empty lines isLine = string.find(getLine,'%w'); if isLine then return getLine else return(nil) end end -- Select EDL file dialog composition_path = composition:GetAttrs().COMPS_FileName d = {} d[1] = {"File", Name = "Select A Source File", "FileBrowse", Default = composition_path} d[2] = {"Fps", Name = "Select the framerate of the EDL file", "Text", Lines = 1, Default = "25"} d[3] = {"Path", Name = "Select the footage directory", "PathBrowse", Default = composition_path } d[4] = {"Normalize", Name = "Fix R3D TC", "Dropdown", Options = {"no", "Edgecode", "Absoulte"}, Default = 0} d[5] = {"About", "Text", Lines = 7, Wrap=true, Default = "Simple EDL importer v1.1 \n\nCreated by Peter Bako \nbakopeti@gmail.com \n\nAll rights reserved - 2011"} dialog = composition:AskUser("Simple EDL importer v1.1", d) if dialog == nil then print("You cancelled the dialog!") else --dump(dialog.File) --dump(dialog.Fps) --dump(dialog.Path) print("----------- Simple EDL importer v1.1\n") -- check valid inputs f = eyeon.parseFilename(dialog.File) if string.lower(f.Extension) ~= ".edl" then print(" - ERROR : Please select an EDL file!") return end frate = tonumber(dialog.Fps) if not frate then print(" - ERROR : Invalid framerate!") return end p = eyeon.direxists(dialog.Path) if not p then print(" - ERROR : Invalid footage directory!") return end --open the edl files and parse the lines local fh = io.open(f.FullPath, "r") -- skip the title and the next empty line local line = fh:read("*l") line = fh:read("*l") -- the third line is the first good one line = fh:read("*l") -- lock the composition composition:Lock() --MAIN LOOP while line ~= nil do -- remove empty lines cl = isEmptyLine(line) while not cl do line = fh:read("*l") cl = isEmptyLine(line) end --convert to integer frate = math.ceil(frate) --the first line of a pair contains the timecodes codes = parseClipLine(cl, frate) -- next line is the comment field which contains the filename line = fh:read("*l") filename = parseCommentLine(line) -- create a loader form the return values createLoader( frate, codes, dialog.Path, filename, dialog.Normalize) -- next line line = fh:read("*l") end -- unlock the project and let the work begin composition:Unlock() -- close the file io.close(fh) print("----------- FINISHED! Please save and re-open the composition!") return end |
|
(0009047) farid (reporter) 2013-01-06 22:51 edited on: 2013-01-07 03:50 |
this should be in the ui somewhere. really important feature :) edit: just saw this link in mlt's roadmap: http://www.edlmax.com/EdlMaxHelp/Edl/maxguide.html [^] |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2012-04-03 17:41 | mohanohi | New Issue | |
| 2012-11-28 18:46 | mohanohi | Note Added: 0008675 | |
| 2012-11-29 09:33 | eddrog | Note Added: 0008676 | |
| 2012-11-29 16:24 | mohanohi | Note Added: 0008677 | |
| 2013-01-03 18:35 | farid | Note Added: 0009011 | |
| 2013-01-04 05:49 | mohanohi | Note Added: 0009018 | |
| 2013-01-04 07:12 | mohanohi | Note Added: 0009019 | |
| 2013-01-06 22:51 | farid | Note Added: 0009047 | |
| 2013-01-07 03:50 | farid | Note Edited: 0009047 | View Revisions |
| Copyright © 2000 - 2013 MantisBT Team |