мне нужно извлечь 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
и неуклонно увеличивает использование памяти. Для одного второго клипа Мне кажется, что он должен быть мгновенным и едва использовать память.