FFmpeg 转换为 JPEG 在 VLC 中有效但在 Mac 预览中无效?
FFmpeg Convert to JPEG works in VLC but not in Mac Preview?
我正在尝试使用 ffmpeg 将 PNG 图像转换为 JPEG 图像。据我所知,它工作正常,但在 Mac 预览中显示不正确。
我是运行以下的人:
$ ffmpeg -i foo.png foo.jpg
它产生以下输出:
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.3_1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, png_pipe, from 'foo.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgba(pc), 200x231, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 0x7ffeaf00ae00] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'foo.jpg':
Metadata:
encoder : Lavf58.20.100
Stream #0:0: Video: mjpeg, yuvj444p(pc), 200x231, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.35.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
frame= 1 fps=0.0 q=3.7 Lsize=N/A time=00:00:00.04 bitrate=N/A speed= 4.7x
video:12kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
当我在大多数应用程序(例如 VLC 或 Google Chrome 中打开 foo.jpg
时,我得到的正是我所期望的:一张看起来与 [=14 完全相同的图像=],输入。
但是,这是 Finder 预览中显示的内容,与我在 "Preview."
中打开文件时显示的内容相同
~~~不知道是不是和deprecated pixel format used, make sure you did set range correctly
报错有关系,但我不确定,尤其是图片没问题,问题好像出在别处~~~
deprecated pixel format
错误似乎不是问题所在(这是内部问题),所以我想我只需要正确指定像素格式即可。
看起来 QT / AVFoundation 不喜欢 JPEG 中的 fully-sampled 色度。
第一次尝试
ffmpeg -i foo.png -pix_fmt yuvj422p foo.jpg
否则,
ffmpeg -i foo.png -pix_fmt yuvj420p foo.jpg
有关已弃用格式的警告与 ffmpeg 内部结构有关,与生成的输出无关。
您可以使用built-in, Apple-supplied sips
"Scriptable Image Processing System"工具进行转换,从而避免该问题也减少了对必须安装外部工具的依赖:
sips -s format jpeg input.png --out output.jpg
我正在尝试使用 ffmpeg 将 PNG 图像转换为 JPEG 图像。据我所知,它工作正常,但在 Mac 预览中显示不正确。
我是运行以下的人:
$ ffmpeg -i foo.png foo.jpg
它产生以下输出:
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.0 (clang-1000.11.45.5)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1.3_1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/adoptopenjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
Input #0, png_pipe, from 'foo.png':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: png, rgba(pc), 200x231, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 0x7ffeaf00ae00] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'foo.jpg':
Metadata:
encoder : Lavf58.20.100
Stream #0:0: Video: mjpeg, yuvj444p(pc), 200x231, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.35.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
frame= 1 fps=0.0 q=3.7 Lsize=N/A time=00:00:00.04 bitrate=N/A speed= 4.7x
video:12kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
当我在大多数应用程序(例如 VLC 或 Google Chrome 中打开 foo.jpg
时,我得到的正是我所期望的:一张看起来与 [=14 完全相同的图像=],输入。
但是,这是 Finder 预览中显示的内容,与我在 "Preview."
中打开文件时显示的内容相同~~~不知道是不是和deprecated pixel format used, make sure you did set range correctly
报错有关系,但我不确定,尤其是图片没问题,问题好像出在别处~~~
deprecated pixel format
错误似乎不是问题所在(这是内部问题),所以我想我只需要正确指定像素格式即可。
看起来 QT / AVFoundation 不喜欢 JPEG 中的 fully-sampled 色度。
第一次尝试
ffmpeg -i foo.png -pix_fmt yuvj422p foo.jpg
否则,
ffmpeg -i foo.png -pix_fmt yuvj420p foo.jpg
有关已弃用格式的警告与 ffmpeg 内部结构有关,与生成的输出无关。
您可以使用built-in, Apple-supplied sips
"Scriptable Image Processing System"工具进行转换,从而避免该问题也减少了对必须安装外部工具的依赖:
sips -s format jpeg input.png --out output.jpg