Ошибка последовательности образа трубы ffmpeg
С помощью ffmpeg 3.4 теперь вы можете рендерить последовательности изображений SVG. Со следующим это работает:
ffmpeg -i images/image-%02d.svg video.mp4
Тем не менее, через
cat images/*.svg | ffmpeg -f image2pipe -c:v svg -i - video.mp4
приводит к следующей ошибке
ffmpeg version N-88409-ga8305b0ea3 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 9.0.0 (clang-900.0.37)
configuration: --prefix=./bin --enable-gpl --enable-nonfree --enable-librsvg --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libopus --enable-libxvid
libavutil 56. 0.100 / 56. 0.100
libavcodec 58. 1.100 / 58. 1.100
libavformat 58. 0.102 / 58. 0.102
libavdevice 58. 0.100 / 58. 0.100
libavfilter 7. 0.101 / 7. 0.101
libswscale 5. 0.101 / 5. 0.101
libswresample 3. 0.100 / 3. 0.100
libpostproc 55. 0.100 / 55. 0.100
[image2pipe @ 0x7fe0d1800000] Could not find codec parameters for stream 0 (Video: svg (librsvg), none): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, image2pipe, from 'pipe:':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: svg, none, 25 tbr, 25 tbn, 25 tbc
Output #0, mp4, to 'video.mp4':
Output file #0 does not contain any stream
Копаться в img2dec.c
Я вижу, что это зондирование <?xml
на первой линии и <svg
на следующей строке:
static int svg_probe(AVProbeData *p)
{
const uint8_t *b = p->buf;
const uint8_t *end = p->buf + p->buf_size;
if (memcmp(p->buf, "<?xml", 5))
return 0;
while (b < end) {
b += ff_subtitles_next_line(b);
if (b >= end - 4)
return 0;
if (!memcmp(b, "<svg", 4))
return AVPROBE_SCORE_EXTENSION + 1;
}
return 0;
}
Все файлы SVG в папке имеют соответствующие заголовки
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" width="640" height="640">
Что мне не хватает?
Наконец, я использую скомпилированную версию ffmpeg с момента установки через brew install ffmpeg --with-librsvg
не похоже на работу. Он установился нормально, однако выдает следующую ошибку
Decoder (codec svg) not found for input stream #0:0