[FFmpeg-trac] #11048(ffplay:new): Feature Request: Start ffplay in paused mode

FFmpeg trac at avcodec.org
Sat Jun 8 09:04:20 EEST 2024


#11048: Feature Request: Start ffplay in paused mode
-------------------------------------+----------------------------------
             Reporter:  geegee       |                    Owner:  (none)
                 Type:  enhancement  |                   Status:  new
             Priority:  normal       |                Component:  ffplay
              Version:  git-master   |               Resolution:
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+----------------------------------
Description changed by geegee:

Old description:

> I would like to request the addition of a global option for ffplay,
> called something like `-start_paused`, which will normally open the input
> but pause on the first frame until the pause key (space in ffplay) is
> pressed again, or the `s` key is pressed to advance and pause on the next
> frame.
>
> This would be very useful for viewing CBZ and CBR files, which are
> nothing but ZIP and RAR files, respectively, with different extension
> names and which contain a collection of picture files such as .jpg, .bmp,
> gif, and png.
>
> The current problem is that opening such zip/rar files directly with
> ffmpeg/ffplay, to the best of my knowledge, isn't supported. Thus,
> something like the following command can be used to circumvent this
> limitation and to allow viewing all compressed pictures in ffplay, which
> pipes extracted files to ffplay:
> {{{
> 7z e -so input.zip | ffplay -hide_banner -infbuf -fs -i pipe:
> }}}
> The problem with the approach above is that ffplay will display the
> contents at 25 fps, with each frame being one picture file from the
> compressed archive. Thus, manual pausing (or the `s` key) needs to be
> used to control how fast ffplay displays each frame. Using manual pause
> is also imperfect because, typically, human reaction will be too slow to
> pause right on the first frame, and thus a few initial frames will have
> been displayed too fast. On top of that, the ability to rewind or seek to
> previous frames is not possible with this command.
>
> Therefore, once again, my proposed solution would be to add a global
> option for ffplay, called something like `-start_paused`, which will
> normally open the input but pause on the first frame until the pause key
> (space in ffplay) is pressed again or the `s` key is pressed to advance
> and pause on the next frame.
>
> The problem of not being able to go to the previous frame or rewind to
> the very first frame would still remain, but this seems to be a problem
> with how piping works. A further solution to that would be to also
> introduce a way to buffer input frames, I tried to achieve this using
> `-infbuf` but that did not seem to change anything regarding seeking past
> frames.
>
> While I was experimenting with possible solutions, I noticed that ffplay
> will sometimes be able to read directly from zip files to my very own
> surprise, but with some limitations it seems. For example, `ffplay -i
> file.zip` surprisingly works as long as the contents are .jpg files, but
> will fail if the contents are .png (`-loglevel trace` seems to indicate
> that ffplay tries to open .png's in the .zip file as mp3's instead of
> `png_pipe`). Thus, I worked around this by using the piping command I
> mentioned previously, but that came at the cost of losing the ability of
> seeking previous frames with the arrow keys.
>
> Thank you very much for considering my suggestion and for the amazing
> work you do!

New description:

 I would like to request the addition of a global option for ffplay, called
 something like `-start_paused`, which will normally open the input but
 pause on the first frame until the pause key (space in ffplay) is pressed
 again, or the 's' key is pressed to advance and pause on the next frame.

 This would be very useful for viewing CBZ and CBR files, which are nothing
 but ZIP and RAR files, respectively, with different extension names and
 which contain a collection of picture files such as .jpg, .bmp, gif, and
 png.

 The current problem is that opening such zip/rar files directly with
 ffmpeg/ffplay, to the best of my knowledge, isn't supported. Thus,
 something like the following command can be used to circumvent this
 limitation and to allow viewing all compressed pictures in ffplay, which
 pipes extracted files to ffplay:
 {{{
 7z e -so input.zip | ffplay -hide_banner -infbuf -fs -i pipe:
 }}}
 The problem with the approach above is that ffplay will display the
 contents at 25 fps, with each frame being one picture file from the
 compressed archive. Thus, manual pausing (or the 's' key) needs to be used
 to control how fast ffplay displays each frame. Using manual pause is also
 imperfect because, typically, human reaction will be too slow to pause
 right on the first frame, and thus a few initial frames will have been
 displayed too fast. On top of that, the ability to rewind or seek to
 previous frames is not possible with this command.

 Therefore, once again, my proposed solution would be to add a global
 option for ffplay, called something like `-start_paused`, which will
 normally open the input but pause on the first frame until the pause key
 (space in ffplay) is pressed again or the 's' key is pressed to advance
 and pause on the next frame.

 The problem of not being able to go to the previous frame or rewind to the
 very first frame would still remain, but this seems to be a problem with
 how piping works. A further solution to that would be to also introduce a
 way to buffer input frames, I tried to achieve this using `-infbuf` but
 that did not seem to change anything regarding seeking past frames.

 While I was experimenting with possible solutions, I noticed that ffplay
 will sometimes be able to read directly from zip files to my very own
 surprise, but with some limitations it seems. For example, `ffplay -i
 file.zip` surprisingly works as long as the contents are .jpg files, but
 will fail if the contents are .png (`-loglevel trace` seems to indicate
 that ffplay tries to open .png's in the .zip file as mp3's instead of
 `png_pipe`). Thus, I worked around this by using the piping command I
 mentioned previously, but that came at the cost of losing the ability of
 seeking previous frames with the arrow keys.

 Thank you very much for considering my suggestion and the amazing work you
 do!

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11048#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list