Ru-Board.club
← Вернуться в раздел «UNIX»

» FFmpeg очень медленно извлекает кадр.

Автор: 22222
Дата сообщения: 25.10.2007 19:10
Надо извлечь кадр из видео файла из позиции Х. Делаю так:

ffmpeg -i video.avi -ss 00:50 -vframes 1 -y -f image2 output.jpg 2>&1

Все бы хорошо, если указываю стартовую позицию -ss 00:05. Н если укажу
-ss 10:50 то он вытаскивает этот единственный кадр работая (пашет) секунд 40. Позиции больше 10 минут я даже боюсь указывать, так как ffmpeg может повиснуть. Мне же надо обработать кучу файлов и желательно извлечь кадры с разных позиций видеофайла, например вначале и в конце. Но чем дальше от начала - тем ffmpeg медленнее работает. Как побороть проблему? mplayer работает быстро.


Как можно ffmpeg ускорить? Помогите
Автор: sda00
Дата сообщения: 26.10.2007 02:17
mplayer -ss 01:01:03 -frames 1 -vo png file.avi
(1час, 1минута, 3-я секунда)

> time ffmpeg -ss 01:01:03 -vframes 1 -i Formula_lyubvi.avi -f image2 1.jpg
***********
real    0m1.128s
user    0m0.905s
sys    0m0.046s

40 секунд говорите?

> time mplayer -ss 01:01:03 -frames 1 -vo png Formula_lyubvi.avi
************
real    0m0.963s
user    0m0.303s
sys    0m0.132s

быстрее... но ....
Автор: 22222
Дата сообщения: 26.10.2007 07:58

Цитата:
40 секунд говорите?


Абсолютно.
Как вы это делаете? Может у вас что-то скомпилено не так?

У меня вот такая история:

http://vbolshov.org.ru/?id=15&ctrl=article

Автор: 22222
Дата сообщения: 26.10.2007 12:19
Сглючило. Разобрался. Оказывается зависит от последовательности параметров. Вот глюк, так глюк.
Автор: 22222
Дата сообщения: 26.10.2007 17:49
Нет! Оказывается это не конец! Муть какая-то!

Если пробую так (медленная версия), то работает долго, но правильно:
ffmpeg -i 03.wmv -vframes 1 -y -ss 0:0:30.0 -f image2 1.jpg

Если же пробую как у Вас,
ffmpeg -ss 0:0:30.0 -i 03.wmv -vframes 1 -y -f image2 1.jpg
то работает быстро но не совсеми видео файлами. На моем серваке - оно выдает постоянно ошибку (ниже), а казалось бы всего лишь поменял параметры местами! Что же мне делать? Вот бага:

]# ffmpeg -ss 0:0:30.0 -i 03.wmv -vframes 1 -y -f image2 1.jpg
FFmpeg version SVN-r10739, Copyright (c) 2000-2007 Fabrice Bellard, et al.
configuration: --cc=/usr/bin/gcc4
libavutil version: 49.5.0
libavcodec version: 51.45.0
libavformat version: 51.15.0
built on Oct 15 2007 07:00:34, gcc: 4.1.1 20070105 (Red Hat 4.1.1-53)
[wmv3 @ 0x84b3a30]Extra data: 8 bits left, value: 0
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]freeing incomplete packet size 9689, new 11339
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]ignoring invalid packet_obj_size (129 7194 7194 8393)
[asf @ 0x84092d4]ignoring invalid packet_obj_size (7323 606 5757 8393)
[asf @ 0x84092d4]freeing incomplete packet size 8393, new 5757
[asf @ 0x84092d4]freeing incomplete packet size 5757, new 8595
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]freeing incomplete packet size 9210, new 9093
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]freeing incomplete packet size 8397, new 8504
[asf @ 0x84092d4]ignoring invalid packet_obj_size (12428 3488 6337 18152)
[asf @ 0x84092d4]freeing incomplete packet size 18152, new 6337
[asf @ 0x84092d4]freeing incomplete packet size 6337, new 7715
[asf @ 0x84092d4]asf_read_pts failed
[asf @ 0x84092d4]freeing incomplete packet size 6371, new 18152
[asf @ 0x84092d4]freeing incomplete packet size 6371, new 18152
[asf @ 0x84092d4]ignoring invalid packet_obj_size (12428 3488 6337 18152)
[asf @ 0x84092d4]freeing incomplete packet size 18152, new 6337
[asf @ 0x84092d4]freeing incomplete packet size 6337, new 7715
[asf @ 0x84092d4]asf_read_pts failed

Seems stream 1 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1)
Input #0, asf, from '03.wmv':
Duration: 00:00:20.0, start: 3.000000, bitrate: 1864 kb/s
Stream #0.0: Audio: 0x0162, 48000 Hz, stereo, 128 kb/s
Stream #0.1: Video: wmv3, yuv420p, 640x360, 1700 kb/s, 25.00 fps(r)
Output #0, image2, to '1.jpg':
Stream #0.0: Video: mjpeg, yuvj420p, 640x360, q=2-31, 200 kb/s, 25.00 fps(c)
Stream mapping:
Stream #0.1 -> #0.0
[wmv3 @ 0x84b3a30]Extra data: 8 bits left, value: 0
Press [q] to stop encoding
[asf @ 0x84092d4]freeing incomplete packet size 6371, new 18152
frame= 0 fps= 0 q=0.0 Lsize= 0kB time=10000000000.0 bitrate= 0.0kbits/s
video:0kB audio:0kB global headers:0kB muxing overhead nan%



Что делать?
Автор: sda00
Дата сообщения: 26.10.2007 23:41
вы опять некорректно обращаетесь с последовательностью фильтров:

ffmpeg -ss 01:01:03 -vframes 1 -i ИСХОДНИК.avi -f image2 1.jpg

и (насколько понимаю лог) у вас wmv3 - поиграйте с кодеками для воспроизведения (сам формат дерьмовый для *nix)
Автор: 22222
Дата сообщения: 27.10.2007 09:24
Спасибо Вам за помощь. Очень помогли мне! Может быть одна просьба на последок. Где можно в мануале прочитать про последовательность фильтров. Все сделал как у вас и все заработало просто на отлично!
Автор: sda00
Дата сообщения: 27.10.2007 12:41
Вы удивитесь, но в самом начале мана . цитирую:

DESCRIPTION
As a general rule, options are applied to the next specified file. Therefore, order is impor-
tant, and you can have the same option on the command line multiple times. Each occurrence is
then applied to the next input or output file.

Пример из мана:

* To force the frame rate of input file to 1 fps and the output file to 24 fps:

ffmpeg -r 1 -i input.avi -r 24 output.avi

другими словами - логично составленная цепочка фильтров сбережёт время и нервы

Автор: 22222
Дата сообщения: 28.10.2007 16:32
Я написал в официальный меил лист мплаера и посоветовали посмотреть вот эту фигню, предположив что решения нет.

-vf framestep
/usr/local/share/doc/mplayer/edl.html
и какой-то -hr-edl-seek

Но как это юзать - не понял. Так как в параметрах мплаера -hr-edl-seek команды или похожей вообще нет.

Тогда вопрос такой, как извлечь фрейм используя mencoder?
Автор: sda00
Дата сообщения: 28.10.2007 17:28
22222
на сегодня 100%-е решение только одно - использовать ffmpeg.

Страницы: 1

Предыдущая тема: Ошибка при установке xorg, подскажите куда копать?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.