On 28.05.2016 07:31, kl222 wrote: > On 27.05.2016 13:49, Nicolas George wrote: >> Can you explain your use case for this filter? >> >> I ask because I am very uncomfortable with filters that perform direct output >> instead of producing frames for the rest of the graph. They need to duplicate >> the encoding and muxing code, usually with fewer options and features, and >> that duplicated code becomes itself a maintenance burden in case of API >> changes and such. >> >> IMHO, a better solution would be some kind of "interactive select" (or just >> an >> option of plain select) filter, and encode its output as image2. >> > > I want to implement to the snapshot function whenever push stream, > and set the file name of snapshot picture. > this function can snapshot pictures before, between or after the other > filters. > Because I want to change the file in filter, so duplicate the encoding and > muxing code > can not be avoided. > OK, add it to "select" filter and a single filter patch. Chosen by you. see > annex.
The way you added it to the select filter it still uses own muxing code and doesn't allow to take full advantage of output format options. To give an idea what I had in mind when suggesting the select filter: The following command uses current FFmpeg code to generate snapshot files of the first two video frames: ffmpeg -i input-file.avi -f image2 -q 5 -filter:v "select=lt(selected_n\,2)" -y snapshot-%03d.jpg Now if the select filter code would be improved to allow updating the evaluated expression at run-time, sending filter commands like expr lt(selected_n,2) // save two snapshot files expr lt(selected_n,3) // add another snapshot file expr lt(selected_n,4) // add another snapshot file could be used to trigger saving snapshot files on demand. Regards, Tobias _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel