Я пытаюсь преобразовать серию изображений PNG24, содержащих анимацию экрана, в видео без потерь, чтобы каждый пиксель воспроизводился точно так, как это было в оригинале. Но avconv (и ffmpeg) дают одинаковые, неудовлетворительные результаты, которые, по-видимому, происходят из-за неправильного преобразования пространства.
Это версия avconv, которую я использую:
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
Каждое из изображений имеет размер 1280 × 800 пикселей. Они не содержат каких-либо фотографических мотивов, а имеют специально размытые узоры.
Я использовал кодек qtrle
потому что, по-видимому, это кодек без потерь, который очень похож на анимированные GIF или анимированные PNG. Однако во время преобразования в видео, кажется, происходит преобразование цветового пространства ("фильтр"), которое портится с пикселями.
Это вывод avconv:
$ avconv -f image2 -r 30 -i frames.png/wth-%08d.png -vcodec qtrle -pix_fmt rgb24 -t 15 qtrle-30fps-rgb.mov
avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
built on Apr 2 2013 17:02:36 with gcc 4.6.3
Input #0, image2, from 'frames.png/wth-%08d.png':
Duration: 00:11:17.96, start: 0.000000, bitrate: N/A
Stream #0.0: Video: png, bgra, 1280x800, 30 fps, 30 tbr, 30 tbn, 30 tbc
File 'qtrle-30fps-rgb.mov' already exists. Overwrite ? [y/N] y
[buffer @ 0x740a00] w:1280 h:800 pixfmt:bgra
[avsink @ 0x742ac0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x743680] w:1280 h:800 fmt:bgra -> w:1280 h:800 fmt:rgb24 flags:0x4
Output #0, mov, to 'qtrle-30fps-rgb.mov':
Metadata:
encoder : Lavf53.21.1
Stream #0.0: Video: qtrle, rgb24, 1280x800, q=2-31, 200 kb/s, 30 tbn, 30 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png -> qtrle)
Press ctrl-c to stop encoding
frame= 450 fps= 22 q=0.0 Lsize= 126056kB time=15.00 bitrate=68843.4kbits/s
video:126052kB audio:0kB global headers:0kB muxing overhead 0.003441%
Это оригинальный файл изображения PNG:
Это скриншот воспроизводимого видео:
Обратите внимание, что вам нужно видеть эти изображения в их оригинальном разрешении 1280 × 800, чтобы заметить различия.
Вот параллельное сравнение, при этом левая картинка является исходной, а правая - результатом после кодирования видео:
Можно ли как-нибудь создать действительно качественный видеофайл без потерь из серии PNG?