1] Convert file or region to (semi-)temporary SMIL file for rendering in Kino (for example) - can we do this on commandline?
what other potential rendering engines?
smilutil and mplex: http://www.mail-archive.com/mjpeg-users@lists.sourceforge.net/msg07052.html
2] Sample SMIL EDL:
<?xml version="1.0"?>
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<body>
<seq>
<video src="capture016.dv" clipBegin="00:00:00.000" clipEnd="00:04:39.960"/>
</seq>
Some progress in navigating video file and marking in and out points in buffer:
1) Navigate with C-q and C-w (back and forwards), C-k frame by frame (should change bindings), C-l toggles pause.
2) Mark start point with C-e. End points with C-r
3) Insert these into GNEVE buffer with H
;;; make a mode - keys and so on (defvar gneve-mode-map nil "local keymap for gneve") ;;(setq gneve-mode-map nil) (if gneve-mode-map nil (setq gneve-mode-map (make-sparse-keymap)) (define-key gneve-mode-map "\C-k" 'next-frame) (define-key gneve-mode-map "\C-l" 'pause) (define-key gneve-mode-map "\C-q" 'one-sec-back) (define-key gneve-mode-map "\C-w" 'one-sec-forward) (define-key gneve-mode-map "\C-e" 'mark-start) (define-key gneve-mode-map "\C-r" 'mark-end) (define-key gneve-mode-map "H" 'write-marks)) (defun gneve-mode() "EDL and mplayer based GNU Emacs video editing mode" (interactive) (start-process "my-process" "boo" "/root/MPlayer-1.0rc1/mplayer" "-edlout" "/root/test.edl" "-slave" "-quiet" "/root/possession.avi") (pop-to-buffer "*GNEVE*" nil) (kill-all-local-variables) (setq major-mode 'gneve-mode) (setq mode-name "gneve") (use-local-map gneve-mode-map)) (defun next-frame () (interactive) (process-send-string "my-process" "frame_step\n")) (defun pause () (interactive) (process-send-string "my-process" "pause\n")) (defun write-marks () ;; copy/write both last-in and last-out to end of gneve buffer (interactive) (switch-to-buffer "*GNEVE*") (goto-char (point-max)) (insert (format "%s %s" lastin lastout))) (defun one-sec-back () (interactive) (process-send-string "my-process" "seek -0.5\n")) (defun one-sec-forward () (interactive) (process-send-string "my-process" "seek 0.1\n")) (defun mark-start () ;; copies latest mark to boo. copy and paste only to variable - new function write to buffer (interactive) (progn ;; goto end of buffer search back to equals and copy to last-in (switch-to-buffer-other-window "boo") (process-send-string "my-process" "pausing get_time_pos\n") (sleep-for 0.1) (goto-char (point-max)) (backward-char) (backward-char) (setq end (point)) (search-backward "=") ;; one char forward (forward-char) (setq start (point)) (copy-region-as-kill start end) (setq lastin (car kill-ring)) (switch-to-buffer-other-window "*GNEVE*"))) (defun mark-end () ;; copies latest mark to boo. copy and paste only to variable - new function write to buffer (interactive) (progn ;; goto end of buffer search back to equals and copy to last-in (switch-to-buffer-other-window "boo") (process-send-string "my-process" "pausing get_time_pos\n") (sleep-for 0.1) (goto-char (point-max)) (backward-char) (backward-char) (setq end (point)) (search-backward "=") ;; one char forward (forward-char) (setq start (point)) (copy-region-as-kill start end) (setq lastout (car kill-ring)) (switch-to-buffer-other-window "*GNEVE*")))