Bir dizi PNG görüntüsünü YouTube için bir videoya nasıl dönüştürebilirim?


13

Ben ffmpeg ile bir videoya dönüştürmek bir dizi PNG ( burada bir örnek ) var:

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

VLC ile hepsi güzel ve züppe görünüyor ama youtube'da tek gördüğüm gri !? neden?

resim açıklamasını buraya girin

Bir süre sonra renkli lekelere sahip yatay bir çubuk gösterilir:

resim açıklamasını buraya girin

Komuta '-pix_fmt yuv420p' eklediğimde youtube klibi doğru şekilde gösteriyor. Ama sonra seçebileceğim en yüksek kalite 480p, bu amaç için düşük.

ffmpeg çıkışı

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

Web sitemdeki bilgileri topladım: http://www.joyofdata.de/blog/hd-clips-with-ffmpeg-for-youtube-and-vimeo/


Lütfen FFmpeg komutları için tam, kesilmemiş konsol çıkışını sağlayın. Piksel biçimleri boyutlarla ilgili değildir, bu nedenle kaynağınız 720p ve üstüyse YouTube'da her zaman 480p'den fazla çözünürlük seçebilmeniz gerekir.
slhck

ffmpeg komutunun çıktısını ekledi. VLC ile izlenen klip hala eski daha büyük çözünürlüğü gösterir. Ama youtube bana sadece 480p sunuyor.
Raffael

Yanıtlar:


34

YouTube videonuzun H.264 kodlu olmasını bekliyor . Kullanıyorsanız libx264YouTube'un kodlama önerilerine sadık kalın:

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

İpuçları:

  • -qscalekaliteyi belirlemenin bir yoludur, ancak -qscaletek başına belirsizdir. -qscale:vVideo ve -qscale:aonu destekleyen ses kodlayıcıları için kullanın . Ne anlama geldiğini bilmiyorsanız bu seçeneği kullanmayın.

    x264 ayar kalitesi için daha iyi bir seçenek vardır: -crf. Sabit Oranı Faktör sabit bir kalitede şifreleme modu. Daha düşük değerler daha iyi kalite anlamına gelir, ancak 18'in altındaki herhangi bir şey görsel olarak daha iyi olmayabilir. Varsayılan değer 23'tür, ancak YouTube videonuzu tekrar kodladığı için 20 gibi bir şey daha iyi olacaktır.

  • -pix_fmt yuv420pPNG girişi için 4: 2: 0 altörneklemeyi etkinleştirmek için kullanılmalıdır. YouTube bunu doğru bir şekilde işlemez.

  • -rYouTube zaten neredeyse tüm kare hızlarını işleyeceğinden çıktı kare hızını ayarlamak için gerekli değildir. Giriş olarak saniyede 10 görüntü okurken, çıkış kare hızını daha yüksek bir değere (örneğin 30) değiştirmek yalnızca gerekli olmayan kareleri çoğaltacaktır.

  • -s:v 1380x720tuhaf bir çözünürlük. Yerel 16: 9 720p çözünürlüğü 1280 × 720 kullanmayı ve gerekirse arazilerinizi yeniden oluşturmayı düşünün. Bu, YouTube'daki bazı sorun ve mektup kutusu sorunlarını ortadan kaldırır ve olağandışı boyutlara bağlı kalmak, videonuzun tam çözünürlükte gösterilmesini veya 720p kalite ayarında sunulmasını engelleyebilir.

  • YouTube'un kullanmanızı önerdiği MOV yerine MP4 kapsayıcısını kullanın. MP4, MOV işleviyle hemen hemen aynıdır, ancak oynatma cihazlarında daha iyi desteği vardır. Genel olarak, bunu yapabildiğiniz zaman MOV yerine tercih edin.


Hakkında yorumların -qscaleanlamlı olmadığını düşünüyorum . Çünkü libx264, ayar ile aynı -qp, değil mi? Bu, x264 sıkıştırması için geçerli bir seçenektir, bu nedenle PNG olan kaynak ilgisizdir. Ne olursa olsun, hedef kalitede tek geçiş için veya -crfdaha iyi bir seçimdir . (hedef bit hızı yerine). -qp-b:v
Peter Cordes

1
yinelenen kare efektini de düzeltmelisiniz. -framerate 10 -i input -r 30mp4'e çıkış yaparken kopyalar oluşturur. (mkv'ye değil, mkv'de vfr'yi destekleyen ffmpeg ile ilgili nedenlerden dolayı, sanırım.) İçeriğiniz 10 fps ise, sadece 10 fps çıkış videosu yapın. Bence youtube istediğiniz kareyi destekliyor (60'a kadar). Cep telefonu kameraları değişken kare hızında h.264 videoyu mp4 olarak kaydeder (özellikle düşük ışıkta), bu yüzden bunları doğrudan youtube'a yükleyebiliyorsanız iyi olacaksınız.
Peter Cordes

@PeterCordes Kesinlikle. -r 30OP komutunu değiştirmeden almıştım .
slhck

Bu cevapta ( 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) bulunan bir komutla maalesef hala gizemli "video işlenemedi" hatası alıyorum. Ne yazık ki nasıl hata ayıklamak için emin değilim.
Radon Rosborough
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.