22

There is a frame-by-frame playback on VLC (E key or view > advanced controls), which is very useful; but there is no way to use it backwards.

This is a long-time requested feature (at least since 2015); and I was wondering if it was part of VLC 3.0.

Does anyone know ?

harrymc
  • 455,459
  • 31
  • 526
  • 924
gordie
  • 359
  • 1
  • 2
  • 8
  • 3
    Modern video relies on key frames and deltas from those key frames going forwards in time. Encoding can also use data from frames in the "future" to construct the frame to be played at that immediate time. Going forwards one frame relies on data from the previous frame as well as some extra data but going back a frame is more difficult as you have to reconstruct *everything* from the previous keyframe for each and every step back. You can't use the "current" frame data for a previous frame without a lot more work. I'm not surprised that this hasn't been implemented yet. – Mokubai May 17 '18 at 09:29
  • 3
    Mokubai, you could simply limit it to N frames backward and cache them while you construct the frames as you go forward. _sheesh_ – Jürgen A. Erhard Feb 09 '21 at 02:30
  • 2
    @Mokubai That may have been a valid excuse a decade ago, but my >2 year old 3800X can decode 1080p video at 1266 fps or 232fps single-threaded. With a typical keyframe interval of 15, that's <65ms per seek from the last I-frame on 1 core. (Yes, I know latency != throughput; Add pipeline length to the keyframe interval and you'll still get a very reasonable delay) – Navin Sep 07 '21 at 09:49
  • 4
    Hopefully this is someday implemented. Even the youtube web player supports this – JGurtz Sep 30 '21 at 20:14
  • @Mokubai if all video editing software can do it - why can't VLC? – Jayden Lawson Sep 15 '22 at 04:56
  • @JaydenLawson because video ***editing*** software is a completely different beast to video ***playing*** software. One decided to tackle a difficult problem because it is a necessary part of the workflow. Typically editing software will completely decode compressed video to raw frames that can easily go backwards and forwards while players would pass compressed video to their player libraries which have much simpler interfaces. If VLC only did software decoding and had control of all the decoding and playback buffers it *might* be easy, but VLC uses a lot of external libraries for playback. – Mokubai Sep 15 '22 at 06:33
  • It's unfortunate. Quicktime Player has had this feature for decades, yet VLC never has achieved it – Jayden Lawson Sep 16 '22 at 08:27

2 Answers2

10

The VLC help says : "Unfortunately, VLC doesn’t support frame-stepping backwards; it’s only possible to move forward".

Other players may have a limited support for backward playing. This would be somewhat slow, because video files are usually constructed with the occasional full frame, while in-between frames only contain the difference. Backward stepping would involve going back to the last full frame and then forward to the requested frame.

I found two posts that relate to your request :

These posts contain links to various players that are said to be able to step backward, but VLC is not one of them. You will need to test and see.

Because product recommendations are not allowed on our site, I cannot list these players here.

harrymc
  • 455,459
  • 31
  • 526
  • 924
1

Using a wrapper for VLC named Vlc.DotNet, I was able to write my own video player with the buttons and controls displayed just how I like it.

It calls the frame forward function, but I wrote my own method in my program to step backwards in the position in the video approximately one frame based on the number of frames per second of the media that is playing.

It does not work all the time. Sometimes, when you click the back frame button, nothing happens in the video. I am guessing that it has to do with Mokubai's comment above. BUT, it works most of the time, if you are trying to get to a particular frame.

If I may brag a little, I have buttons for jumping forward and backwards a configurable number of seconds. I have enhanced rate of playback controls that let you halve or double your speed as well as finer controls that can change the rate by a small amount and a numeric box to enter the rate you want. In addition, I have an enhanced time slider that lets you issue keyboard sequences to hop to any spot in the video by percentage by hitting 1-9 (10%-90%). I just like to make it how I like it!

John Kurtz
  • 111
  • 4