일련의 PNG 이미지를 YouTube 비디오로 변환하려면 어떻게해야합니까?


13

나는 ffmpeg가있는 비디오로 바꾸는 일련의 PNG ( 여기에는 하나의 표본 )가 있습니다.

ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30
       basf_merck_libx264.mp4

VLC를 사용하면 멋지고 멋지게 보이지만 YouTube에서는 내가 보는 모든 것이 회색입니다!? 왜?

여기에 이미지 설명을 입력하십시오

잠시 후 화려한 반점이있는 가로 막대가 표시됩니다.

여기에 이미지 설명을 입력하십시오

명령에 '-pix_fmt yuv420p'를 추가하면 youtube가 클립을 올바르게 표시합니다. 그러나 내가 선택할 수있는 최고 품질은이 목적을 위해 480p입니다.

ffmpeg 출력

C:\Users\Raffael\Documents\proj>ffmpeg -r 10 -i image%03d.png -s 1380x720 -c:v libx264 -qscale 10 -r 30 basf_merck_libx264.mp4
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 'basf_merck_libx264.mp4' already exists. Overwrite ? [y/N] y
using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cache64
[libx264 @ 00000000021c6fe0] profile High 4:4:4 Predictive, level 3.2, 4:4:4 8-bit
[libx264 @ 00000000021c6fe0] 264 - core 129 r2230 1cffe9f - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options:
 cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 dead
zone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_int
ra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahea
d=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'basf_merck_libx264.mp4':
  Metadata:
    encoder         : Lavf54.59.107
    Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv444p, 1380x720, q=-1--1, 15360 tbn, 30 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
frame=  151 fps= 16 q=-1.0 Lsize=    1995kB time=00:00:04.96 bitrate=3290.5kbits/s dup=100 drop=0
video:1992kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.127092%
[libx264 @ 00000000021c6fe0] frame I:1     Avg QP:22.19  size: 57949
[libx264 @ 00000000021c6fe0] frame P:54    Avg QP:26.90  size: 36277
[libx264 @ 00000000021c6fe0] frame B:96    Avg QP:21.56  size:   236
[libx264 @ 00000000021c6fe0] consecutive B-frames:  5.3%  1.3% 85.4%  7.9%
[libx264 @ 00000000021c6fe0] mb I  I16..4: 71.1%  2.5% 26.4%
[libx264 @ 00000000021c6fe0] mb P  I16..4:  0.6%  0.5%  5.7%  P16..4:  3.1%  2.1%  2.9%  0.0%  0.0%    skip:85.0%
[libx264 @ 00000000021c6fe0] mb B  I16..4:  0.2%  0.1%  0.0%  B16..8:  4.7%  0.1%  0.0%  direct: 0.0%  skip:94.9%  L0:77.6% L1:22.3% BI: 0.1%
[libx264 @ 00000000021c6fe0] 8x8 transform intra:7.7% inter:5.2%
[libx264 @ 00000000021c6fe0] coded y,u,v intra: 59.5% 54.3% 52.9% inter: 1.3% 1.0% 0.6%
[libx264 @ 00000000021c6fe0] i16 v,h,dc,p: 81% 15%  4%  0%
[libx264 @ 00000000021c6fe0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10%  5% 64%  3%  2%  4%  3%  4%  3%
[libx264 @ 00000000021c6fe0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 13% 21%  7%  6%  7%  6%  7%  6%
[libx264 @ 00000000021c6fe0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 00000000021c6fe0] ref P L0: 65.3%  9.0% 20.2%  5.5%
[libx264 @ 00000000021c6fe0] ref B L0: 73.0% 21.7%  5.3%
[libx264 @ 00000000021c6fe0] ref B L1: 90.8%  9.2%
[libx264 @ 00000000021c6fe0] kb/s:3241.64

내 웹 사이트에서 정보를 수집했습니다. http://www.joyofdata.de/blog/hd-clips-with-ffmpeg-for-youtube-and-vimeo/


FFmpeg 명령에 대해 자르지 않은 콘솔 출력을 모두 제공하십시오. 픽셀 형식은 크기와 관련이 없으므로 소스가 720p 이상인 경우 YouTube에서 항상 480p 이상의 해상도를 선택할 수 있어야합니다.
— slhck

ffmpeg 명령의 출력을 추가했습니다. VLC로 시청 한 클립은 여전히 ​​오래된 더 큰 해상도를 보여줍니다. 그러나 YouTube는 480p 만 제공합니다.
— 라파엘

답변:


34

YouTube는 동영상이 H.264로 인코딩 될 것으로 예상합니다 . 를 사용하는 경우 libx264YouTube의 인코딩 제안을 따르십시오.

ffmpeg -framerate 10 -i image%03d.png -s:v 1280x720 -c:v libx264 \
-profile:v high -crf 20 -pix_fmt yuv420p daimler_man.mp4

팁 :

  • -qscale품질을 설정하는 방법이지만 -qscale모호합니다. -qscale:v비디오 및 비디오 -qscale:a를 지원하는 오디오 인코더에 사용하십시오 . 이 옵션의 의미를 모르면이 옵션을 사용하지 마십시오.

    x264에는 품질 설정을위한 더 나은 옵션이 있습니다 -crf. 일정한 속도 계수는 일정한 품질 인코딩 모드입니다. 값이 낮을수록 품질은 좋아 지지만 18 미만이면 시각적으로 좋지 않을 수 있습니다. 기본값은 23이지만 YouTube가 동영상을 다시 인코딩하므로 20과 같은 것이 더 좋습니다.

  • -pix_fmt yuv420pPNG 입력에 대해 4 : 2 : 0 다운 샘플링을 활성화하는 데 사용해야합니다. 일반적으로 전혀 다운 샘플링되지 않으며 (출력에서 관찰 된대로 4 : 4 : 4) 알파 채널이 포함됩니다. YouTube는이를 올바르게 처리하지 못합니다.

  • -rYouTube는 거의 모든 프레임 속도를 처리하므로 출력 프레임 속도를 설정하는 데 필요하지 않습니다. 초당 10 개의 이미지를 입력으로 읽을 때 출력 프레임 속도를 더 높은 값 (예 : 30)으로 변경하면 프레임 만 복제되므로 필요하지 않습니다.

  • -s:v 1380x720이상한 해상도입니다. 기본 16 : 9 720p 해상도 1280 × 720을 사용하고 필요한 경우 플롯을 다시 생성하십시오. 이렇게하면 YouTube에서 문제 및 레터 박스 문제가 발생하지 않으며 비정상적인 크기로 인해 동영상이 전체 해상도로 표시되지 않거나 720p 품질 설정으로 제공되지 않을 수 있습니다.

  • YouTube에서 권장하는 MOV 대신 MP4 컨테이너를 사용하십시오. MP4는 MOV와 기능면에서 거의 동일하지만 재생 장치에서 더 잘 지원됩니다. 일반적으로 가능하면 MOV보다 선호합니다.


나는 이해가되지 않는다고 생각한다 -qscale. 의 경우 libx264설정과 동일 -qp합니까? x264 압축에 적용되는 옵션이므로 PNG 인 소스는 관련이 없습니다. 에 관계없이, -crf보다 더 나은 선택 -qp또는 -b:v목표 품질 원 패스는. (대상 비트 전송률이 아닌).
— Peter Cordes

1
복제 프레임 효과도 수정해야합니다. -framerate 10 -i input -r 30mp4로 출력 할 때 중복을 생성합니다. (mkv에서 vfr을 지원하는 ffmpeg와 관련된 이유로 mkv가 아니라고 생각합니다.) 콘텐츠가 10fps 인 경우 10fps 출력 비디오를 만드십시오. YouTube는 원하는 프레임 속도 (최대 60)를 지원한다고 생각합니다. 휴대 전화 카메라는 가변 프레임 속도 h.264 비디오를 mp4 (저조도에서)로 기록하므로 YouTube에 직접 업로드 할 수 있으면 괜찮습니다.
— Peter Cordes

@PeterCordes는 물론입니다. 나는 -r 30OP의 명령을 변경하지 않고 가져 왔습니다 .
— slhck

이 답변 ( ffmpeg -y -framerate 1 -i static_image.png -i bg_music.mp3 -s:v 1280x720 -c:v libx264 -profile:v high -crf 20 -pix_fmt yuv420p output.mp4) 의 명령을 기반으로 한 명령으로 불행히도 여전히 "비디오 처리에 실패했습니다"라는 오류가 발생합니다. 불행히도 디버깅 방법을 모르겠습니다.
— 라돈 로스 버러
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.