Я пытаюсь написать сценарий, который должен принимать все виды изображений (формат, размер ...) и создавать видео с помощью avconv. Мне удалось заставить его работать с серией jpg (хотя и одинакового размера), и я сейчас пытаюсь использовать конвертирование, чтобы убедиться, что оно создаст видео, сделав все изображения одинаковыми по размеру и формату. Вот как я это делаю:
(for J in $(ls "$1/"* 2> /dev/null); do
convert "$J" -resize 640x480 -gravity center \
-size "$FORMAT" -fill black -extent 640x480 jpg jpeg:-
done) | avconv -f image2pipe -r 1/5 -c:v mjpeg -i - \
-vcodec libx264 -r 20 -f mpegts video.mpeg
У меня есть серия изображений, где avconv возвращает:
Input stream #0:0 frame changed from size:640x480 fmt:yuvj420p to size:160x120 fmt:yuvj422p
Input stream #0:0 frame changed from size:160x120 fmt:yuvj422p to size:320x240 fmt:yuvj422p
Input stream #0:0 frame changed from size:320x240 fmt:yuvj422p to size:88x128 fmt:yuvj420p
[mjpeg @ 0x101838800] only 8 bits/component accepted
Error while decoding stream #0:0
Input stream #0:0 frame changed from size:88x128 fmt:yuvj420p to size:120x160 fmt:yuvj420p
Я проверил, и изображение выглядит нормально, когда я просто использую конвертировать. Я предполагаю, что мне не хватает что-то в конвертировании, чтобы сделать изображение полностью идентичным для работы avconv. Но я не могу найти это
Спасибо за вашу помощь!
РЕДАКТИРОВАТЬ
Таким образом, после исследования это может быть вызвано тем, что выходные изображения имеют разное разрешение и / или коэффициент дискретизации. Итак, я попробовал это:
(for J in $(ls "$1/"* 2> /dev/null); do
convert "$J" -background '#000000' -resize "640x480"
-gravity center -extent "640x480" -sampling-factor '4:2:2'
-resample '72x72' jpeg:-
done) |
avconv -f image2pipe -r 1/5 -c:v mjpeg -i -
-vcodec libx264 -r 30 "foo.mpeg"
Все еще безуспешно, хотя ...
Input stream #0:0 frame changed from size:640x480 fmt:yuvj422p to size:160x120 fmt:yuvj422p
Input stream #0:0 frame changed from size:160x120 fmt:yuvj422p to size:320x240 fmt:yuvj422p
Input stream #0:0 frame changed from size:320x240 fmt:yuvj422p to size:88x128 fmt:yuvj420p
[mjpeg @ 0x101838800] only 8 bits/component accepted
Error while decoding stream #0:0
Input stream #0:0 frame changed from size:88x128 fmt:yuvj420p to size:120x160 fmt:yuvj420p
труба :: Вход /
Вот изображение, которое я использую:
- http://test_avconv.s3.amazonaws.com/1.png
- http://test_avconv.s3.amazonaws.com/2.jpg
- http://test_avconv.s3.amazonaws.com/3.jpg
- http://test_avconv.s3.amazonaws.com/4.jpg
Надеюсь это поможет...