Мне нужен быстрый и надежный способ получить общее количество кадров видео.
Вот следующие методы, которые я пробовал, и их недостатки:
ffprobe (быстрый способ)
ffprobe -select_streams v:0 -show_entries stream=nb_frames -of default=noprint_wrappers=1 input.mp4
Проблема: часто возвращает N/A, ненадежно.
ffprobe (медленный способ)
ffprobe -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4
Проблема: довольно медленный, для более длинных видео может потребоваться минута.
ffmpeg (быстрый способ)
ffmpeg -i input.mp4 -map 0:v:0 -c copy -f null -
Проблема: необходимо один раз полностью декодировать видео, что довольно медленно
Я знаю, что то, что я ищу, возможно, потому что определенное программное обеспечение (например, Topaz Video Enhance) может это сделать. Но я не знаю, как я могу добиться этого в своем проекте С# или ffmpeg.