Ответ 1
ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png
Я не уверен, что вывод 150 тыс. бит файлов будет хорошей идеей. Возможно, png достаточно хорош?
Я разместил это как комментарии в этом связанном потоке. Однако они, похоже, остались незамеченными = (
Я использовал
ffmpeg -i myfile.avi -f image2 image-%05d.bmp
чтобы разделить myfile.avi
на фреймы, хранящиеся в виде файлов .bmp
. Казалось, что это работает, кроме не совсем. При записи моего видео я записывал со скоростью 1000fps
, и видео оказалось 2min29sec
длинным. Если моя математика правильная, это должно составлять в общей сложности 149 000 кадров для всего видео. Однако, когда я бежал
ffmpeg -i myfile.avi -f image2 image-%05d.bmp
Я получил только 4472 файла. Как я могу получить оригинальные кадры 149k?
Я также попытался преобразовать частоту кадров моего оригинального AVI в 1000 кадров в секунду, выполнив
ffmpeg -i myfile.avi -r 1000 otherfile.avi
но это, похоже, не повлияло на мою озабоченность.
ffmpeg -i myfile.avi -r 1000 -f image2 image-%07d.png
Я не уверен, что вывод 150 тыс. бит файлов будет хорошей идеей. Возможно, png достаточно хорош?
Первая часть вашей математики хорошая, 2 минуты и 29 секунд - около 149 секунд. С 1000 кадров в секунду, что составляет 149000 кадров. Однако ваше имя выходного файла имеет только 5 позиций для числа, где 149000 имеет 6 позиций, поэтому попробуйте "image-% 06d.bmp".
Тогда есть размер диска: Ваши изображения подходят на диск? С bmp каждое изображение использует свой собственный размер. Вы можете попытаться использовать jpeg-изображения, они сжимают примерно в 10 раз лучше.
Другая идея: если ffmpeg не находит (разумную) частоту кадров, она падает до 25 или 30 кадров в секунду. Возможно, вам нужно будет указать его. Сделайте это как для источника, так и для цели, см. Справочную страницу (man ffmpeg
в unix):
To force the frame rate of the input file (valid for raw formats
only) to 1 fps and the frame rate of the output file to 24 fps:
ffmpeg -r 1 -i input.m2v -r 24 output.avi
Для чего это стоит: я использую ffmpeg -y -i "video.mpg" -sameq "video.%04d.jpg"
для разделения моего видео на изображения. -sameq - принудительное jpeg в разумном качестве, -y должно избегать перезаписывать вопросы. Для вас:
ffmpeg -y -r 1000 -i "myfile.avi" -sameq "image.% 06d.jpg"
Я думаю, здесь есть неправильное представление: выход видеосистемы HS вряд ли будет иметь выходную частоту кадров в 1000 кадров в секунду, но что-то довольно нормальное, как 30 (или 50/60) кадров в секунду. Помимо перегрузки большинства видеопроигрывателей с такой скоростью было бы контрпродуктивно показывать последовательность с той же скоростью, что и в записи. В основном: 1 сек. Вход 1000 кадров в секунду - это что-то вроде 33 сек при выходе 30 кадров в секунду.
Была ли продолжительность записи записанной на самом деле 2:29 мин (в результате получилось видео ~ 82 мин при обычной скорости) или заняло около 4,5 секунд (4472 кадра), что равно 2:29 мин при нормальном воспроизведении?