mp4에서 썸네일 이미지를 가져오고 있습니다.
를 사용 -c:v mjpeg
하면 축소판이 브라우저에 제대로 표시되지만 Mac에서 미리 볼 때 완전히 왜곡됩니다. 사용 -c:v jpeg2000
하는 경우 이미지가 Mac에서는 잘 보이지만 브라우저에는 표시되지 않습니다.
전체 명령 :
ffmpeg -ss 3 -i https://some_site/some_video.mp4 -vf thumbnail,scale=480:480 -q:v 2 -frames:v 1 -f image2 -c:v jpeg2000 -r 1 -vframes 1 tmp/my_thumbnail.jpg
-vs-
ffmpeg -ss 3 -i https://some_site/some_video.mp4 -vf thumbnail,scale=480:480 -q:v 2 -frames:v 1 -f image2 -c:v mjpeg -r 1 -vframes 1 tmp/my_thumbnail.jpg
생성 된 썸네일을 브라우저에서 볼 수 있고 Mac에서도 미리 볼 수 있으려면 어떤 인코딩을 사용해야합니까?
나는 이것이 macOS 문제라고 생각하기 시작했지만 그것이 있더라도 FFMPEG가 이에 대한 해결책을 가지고 있는지 알고 싶습니다. 따라서 버그가있는 OS를 가진 사용자도 이미지를 제대로 미리 볼 수 있습니다.
산출:
ffmpeg version 4.1.5 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 8.3.0 (Alpine 8.3.0)
configuration: --prefix=/usr --enable-avresample --enable-avfilter --enable-gnutls --enable-gpl --enable-libass --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libx264 --enable-libx265 --enable-libtheora --enable-libv4l2 --enable-postproc --enable-pic --enable-pthreads --enable-shared --enable-libxcb --disable-stripping --disable-static --disable-librtmp --enable-vaapi --enable-vdpau --enable-libopus --disable-debug
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, mov,mp4,m4a,3gp,3g2,mj2, from 'https://some_site/some_video.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1mp42
creation_time : 2020-02-28T16:46:30.000000Z
Duration: 00:00:06.23, start: 0.000000, bitrate: 2004 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x480 [SAR 1:1 DAR 1:1], 1951 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc (default)
Metadata:
creation_time : 2020-02-28T16:46:29.000000Z
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 48 kb/s (default)
Metadata:
creation_time : 2020-02-28T16:46:29.000000Z
File 'tmp/my_thumbnail.jpg' already exists. Overwrite ? [y/N] y
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 0x55acb21fbb00] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'tmp/my_thumbnail.jpg':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isomavc1mp42
encoder : Lavf58.20.100
Stream #0:0(und): Video: mjpeg, yuvj444p(pc), 480x480 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 1 fps, 1 tbn, 1 tbc (default)
Metadata:
creation_time : 2020-02-28T16:46:29.000000Z
encoder : Lavc58.35.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
[Parsed_thumbnail_0 @ 0x55acb21e35c0] frame id #58 (pts_time=1.933333) selected from a set of 97 images
frame= 1 fps=0.0 q=2.0 Lsize=N/A time=00:00:01.00 bitrate=N/A dup=1 drop=1 speed=2.04x
video:39kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
로그 (yuvj444p)에 표시된대로 4 : 4 : 4 서브 샘플링이 마음에 들지 않을 수 있습니다.
여기 ffmpeg
에서 픽셀 형식 이라고 합니다 . 인코더 mjpeg는 지원되는 픽셀 형식ffmpeg -h encoder=mjpeg
아래에 표시된대로 yuvj420p, yuvj422p 및 yuvj444p를 지원 합니다. 기본적 ffmpeg
으로 가장 파괴적인 픽셀 형식을 자동으로 선택하려고하지만, 형편없는 디코더는 더 복잡한 형식을 지원하지 않을 수 있습니다.
형식 필터 또는 레거시 -pix_fmt
출력 옵션을 사용 하여 특정 픽셀 형식을 출력 할 수 있습니다 .
ffmpeg -ss 3 -i https://some_site/some_video.mp4 -vf "thumbnail,scale=480:480,format=yuvj420p" -q:v 2 -frames:v 1 tmp/my_thumbnail.jpg
4 : 2 : 0 (yuvj420p)가 가장 널리 지원되지만, 약간 더 좋아 보일 수 있으므로 먼저 4 : 2 : 2 (yuvj422p)를 시도해보세요.
김프 (파일 → 내보내기 → 내보내기 → 고급 옵션 → 서브 샘플링)와 같은 다른 도구도이를 처리 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다