2

У меня есть 1000 PNG, созданных с помощью R и ggplot2. Это один например: image000.png

Теперь я использую ffmpeg, чтобы склеить их вместе в клип:

ffmpeg -r 10 -i image%03d.png -s 1380x720 -vcodec png 
       -qscale 10 -r 30 daimler_man.mov
  • частота кадров на входе 10 и частота кадров на выходе 30, что приводит к 10 различным изображениям в секунду с частотой кадров видео 30.

  • Изображения изначально имеют размер 1380 x 720.

  • vcodec png ... хорошо это работает по крайней мере. когда я использовал h264, видео выглядело хорошо на моем компьютере, но YouTube стал серым весь клип.

  • Qscale 10 ... Я не уверен, что этот выбран оптимально.

Все в порядке более или менее, но когда я беру код встраивания клипа YouTube, то отображаемое изображение предварительного просмотра выглядит так:

Цвет фона области графика теперь серый, а не светло-коричневый !?

вывод ffmpeg:

C:\Users\Raffael\Documents\proj>ffmpeg -r 10 -i image%03d.png -s 1380x720 -vcodec png -qscale 10 -r 30 daimler_man.mov
ffmpeg version N-48785-g2ea3f37 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan 12 2013 20:45:33 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnu
tls --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-l
ibopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libtwol
ame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
--enable-filter=frei0r
  libavutil      52. 14.100 / 52. 14.100
  libavcodec     54. 86.100 / 54. 86.100
  libavformat    54. 59.107 / 54. 59.107
  libavdevice    54.  3.102 / 54.  3.102
  libavfilter     3. 32.100 /  3. 32.100
  libswscale      2.  1.103 /  2.  1.103
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, image2, from 'image%03d.png':
  Duration: 00:00:02.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 1380x720, 25 fps, 25 tbr, 25 tbn, 25 tbc
Please use -q:a or -q:v, -qscale is ambiguous
File 'daimler_man.mov' already exists. Overwrite ? [y/N] y
Output #0, mov, to 'daimler_man.mov':
  Metadata:
    encoder         : Lavf54.59.107
    Stream #0:0: Video: png (png  / 0x20676E70), rgb24, 1380x720, q=2-31, 200 kb/s, 15360 tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> png)
Press [q] to stop, [?] for help
frame=  151 fps= 26 q=0.0 Lsize=   13037kB time=00:00:05.03 bitrate=21218.1kbits/s dup=100 drop=0
video:13035kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.010533%

1 ответ1

2

У YouTube очень специфические требования к кодировке. Я не удивлюсь, если он не сможет обработать поток изображений PNG в контейнере MOV, когда он на самом деле ожидает видео H.264 (в идеале в MP4).

Поскольку YouTube перекодирует все, что вы загружаете на него, он применяет некоторые фильтры к вашему видео, чтобы подогнать его под себя. PNG представляют собой изображения без субсэмплинга 4:4:4 с 24-битным цветовым пространством RGB. Видео H.264 обычно кодируется в другом цветовом пространстве, а именно YUV.

Возможно, YouTube просто применил неправильное преобразование при переходе от RGB к YUV, поэтому ваш светло-коричневый (на самом деле светло-серый; проверьте калибровку монитора) фон в темно-серый.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .