我用 R 和 ggplot2 创建了 1000 个 PNG。例如:图片000.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
YouTube 有非常具体的编码要求.如果它无法处理 MOV 容器中的 PNG 图像流,我不会感到惊讶,因为它实际上需要的是 H.264 视频(理想情况下是 MP4)。
由于 YouTube 会重新编码您上传的任何内容,因此它会对您的视频应用一些滤镜以使其适合。PNG 格式非子采样 4:4:4 图像,采用 RGB 24 位色彩空间。H.264 视频通常采用不同的色彩空间进行编码,即YUV。
YouTube 在从 RGB 转换为 YUV 时可能只是应用了错误的转换,这就是为什么浅棕色(实际上是浅灰色;请检查您的显示器校准)背景变成深灰色的原因。