image - FFmpeg 转换为 JPEG 在 VLC 中有效,但在 Mac 预览中无效?

标签 image ffmpeg jpeg 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

当我打开foo.jpg时在大多数应用程序中,例如 VLC 或 Google Chrome,我得到的正是我所期望的:看起来与 foo.png 完全相同的图像,输入。

<code>foo.png</code> (input) <code>foo.jpg</code> (output)

但是,这是 Finder 预览中显示的内容,与我在“预览”中打开文件时显示的内容相同。

the problem

~~~我想知道这是否与deprecated pixel format used, make sure you did set range correctly有关错误,但我不确定,尤其是图像很好,问题似乎在其他地方。~~~

看来deprecated pixel format错误不是问题(这是内部问题),所以我想我只需要正确指定像素格式。

最佳答案

看起来 QT/AVFoundation 不喜欢 JPEG 中的完全采样色度。

第一次尝试

ffmpeg -i foo.png -pix_fmt yuvj422p foo.jpg

否则,

ffmpeg -i foo.png -pix_fmt yuvj420p foo.jpg

有关已弃用格式的警告与 ffmpeg 内部相关,而不是生成的输出。

关于image - FFmpeg 转换为 JPEG 在 VLC 中有效,但在 Mac 预览中无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57174340/

相关文章:

python - 调整图像大小时解码器 JPEG 错误

javascript - 如何使用JQuery获取真实图像高度?

html - 在屏幕上拉伸(stretch) 1 个 div 中包含的图像

java - H264 字节流到图像文件

python - 如何在 Anaconda 中使用 Python 的框架构建

google-apps-script - 如何使用 Google Apps 脚本将 .heic 从 Google 表单转换为 .jpeg,然后上传到 Google 云端硬盘

image - 对图像文件中的类型样本进行分类

php - 如何使用 tcpdf 缩放图像?

php - 上传时将文件重命名为 input.mp4 不起作用

java - 使用java将网页转换为jpeg图像