Мне нужно извлечь 30-секундный интервал из середины видео при преобразовании его в WebM. ffmpeg показался мне идеальным вкладышем:
ffmpeg -i long.mkv -vcodec libvpx -b:v 1M -ss 02:00:00 -t 00:00:30 -threads 4 out.webm
К моему удивлению, он почти сразу проглотил всю доступную память, и все начало меняться, поэтому я убил его. После того, как я не нашел какой-либо очевидной ошибки - и, имея в виду, я редко использую ffmpeg - я попробовал avconv. Это не сообщало о каких-либо действиях, и использование памяти (медленно) росло в том же направлении.
После нескольких испытаний с:
-ss 02:00:00 -t 00:00:01
-ss 00:00:01 -t 00:00:01
-ss 00:01:00 -t 00:00:01
Кажется, ffmpeg загружает весь фильм до -ss
в памяти или что-то в этом роде. Во всяком случае, это не подходит для такой операции. Мой вопрос, я делаю что-то не так, и ffmpeg может фактически выполнить эту операцию с разумным использованием ресурсов? В случае, если ffmpeg не предназначен для этого или просто глупо о том, как это сделать, есть ли альтернативы, которые не включают перетаскивание прямоугольников в шкалу времени и использование маленьких ножниц и полос прокрутки?
debian@pc:~/ ffmpeg -version
ffmpeg version 0.8.16-6:0.8.16-1, Copyright (c) 2000-2014 the Libav developers
built on Sep 16 2014 23:10:48 with gcc 4.7.2
The ffmpeg program is only provided for script compatibility and will be removed
in a future release. It has been deprecated in the Libav project to allow for
incompatible command line syntax improvements in its replacement called avconv
(see Changelog for details). Please use avconv instead.
ffmpeg 0.8.16-6:0.8.16-1
libavutil 51. 22. 2 / 51. 22. 2
libavcodec 53. 35. 0 / 53. 35. 0
libavformat 53. 21. 1 / 53. 21. 1
libavdevice 53. 2. 0 / 53. 2. 0
libavfilter 2. 15. 0 / 2. 15. 0
libswscale 2. 1. 0 / 2. 1. 0
libpostproc 52. 0. 0 / 52. 0.100
Я также пробовал использовать последнюю версию с сайта ffmpeg, и результаты были такими же, как у avconv - не глотает всю мою память сразу, но, похоже, ничего не делает:
frame= 0 fps=0.0 q=-1.0 size= 4kB time=00:00:00.00 bitrate=N/A
И неуклонно увеличивает использование памяти. Мне кажется, что клип на одну секунду должен быть мгновенным и почти не использовать память.