EmacsConf backstage: picking timestamps from a waveform
| emacs, emacsconfWe wanted to trim the Q&A session recordings so that people don't have to listen to the transition from the main presentation or the long silence until we got around to stopping the recording.
The MPV video player didn't have a waveform view, so I couldn't just jump to the parts with sound. Audacity could show waveforms, but it didn't have an easy way to copy the timestamp. I didn't want to bother with heavyweight video-editing applications on my Lenovo X220. So the obvious answer is, of course, to make a text editor do the job. Yay Emacs!
Figure 1: Select timestamps using a waveform
It's very experimental and I don't know if it'll work for anyone else. If you want to use it, you will also need mpv.el, the MPV media player, and the ffmpeg command-line tool. Here's my workflow:
M-x waveform-show
to select the file.left-click
on the waveform to copy the timestamp and start playing from thereright-click
to sample from that spotleft
andright
to adjust the position,shift-left
andshift-right
to take smaller stepsSPC
to copy the current MPV positionj
to jump to a timestamp (hh:mm:ss or seconds)>
to speed up,<
to slow down
I finally figured out how to use SVG to embed the waveform generated by FFMPEG and animate the current MPV playback position. Whee! There's lots of room for improvement, but it's a pretty fun start.
If you're curious, you can find the code at https://github.com/sachac/waveform-el . Let me know if it actually works for you!