मैं YouTube के लिए PNG छवियों की एक श्रृंखला को वीडियो में कैसे बदल सकता हूं?


13

मेरे पास पीएनजी का एक क्रम है ( यहाँ एक नमूना है ) जिसे मैं ffmpeg के साथ एक वीडियो में बदल देता हूं:

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

वीएलसी के साथ यह सब अच्छा और बांका लगता है, लेकिन यूट्यूब पर मुझे लगता है कि सभी ग्रे है !? क्यों?

यहाँ छवि विवरण दर्ज करें

थोड़ी देर बाद रंगीन स्थानों के साथ एक क्षैतिज पट्टी दिखाई जाती है:

यहाँ छवि विवरण दर्ज करें

जब मैं कमांड में '-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 कमांड (ओं) के लिए फुल, अनट्यूट कंसोल आउटपुट की आपूर्ति करें। पिक्सेल प्रारूप आयामों से संबंधित नहीं हैं, इसलिए आपको हमेशा YouTube पर 480p से अधिक रिज़ॉल्यूशन का चयन करने में सक्षम होना चाहिए यदि आपका स्रोत 720p और उससे अधिक है।
22

ffmpeg कमांड के आउटपुट को जोड़ा। वीएलसी के साथ देखी गई क्लिप अभी भी पुराने बड़े रिज़ॉल्यूशन को दिखाती है। लेकिन youtube मुझे सिर्फ 480p प्रदान करता है।
राफेल

जवाबों:


34

YouTube को उम्मीद है कि आपका वीडियो H.264- एनकोडेड होगा । यदि आप उपयोग करते हैं libx264, तो YouTube के एन्कोडिंग सुझावों से चिपके रहें:

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 है, लेकिन 20 जैसा कुछ बेहतर होगा क्योंकि YouTube फिर से आपके वीडियो को फिर से एनकोड करता है।

  • -pix_fmt yuv420pपीएनजी इनपुट के लिए 4: 2: 0 डाउनसमलिंग सक्षम करने के लिए उपयोग किया जाना चाहिए, जो आमतौर पर अपने आउटपुट में नहीं देखा गया है (4: 4: 4, जैसा कि आपके आउटपुट में देखा गया है) और अक्सर एक अल्फा चैनल होता है। YouTube इसे सही तरीके से हैंडल नहीं करेगा।

  • -rआउटपुट फ्रैमरेट सेट करने के लिए आवश्यक नहीं है, क्योंकि YouTube वैसे भी लगभग सभी फ़्रेम दरों को संभाल लेगा। इनपुट के रूप में प्रति सेकंड 10 छवियों को पढ़ते समय, आउटपुट फ्रेम दर को कुछ उच्चतर (जैसे 30) में बदलना केवल डुप्लिकेट फ़्रेम होगा, जो आवश्यक नहीं है।

  • -s:v 1380x720एक अजीब संकल्प है। देशी 16: 9 720p रिज़ॉल्यूशन 1280 × 720 का उपयोग करने के बारे में सोचें, और यदि आवश्यक हो तो अपने भूखंडों को फिर से बनाएं। यह आपको YouTube पर कुछ समस्या और लेटरबॉक्सिंग समस्याओं से बचाएगा, और असामान्य आयामों पर चिपके रहने से आपके वीडियो को पूर्ण रिज़ॉल्यूशन में दिखाए जाने या 720p गुणवत्ता सेटिंग में पेश किए जाने से रोका जा सकता है।

  • MOV के बजाय MP4 कंटेनर का उपयोग करें, जो YouTube आपको उपयोग करने का सुझाव देता है। MP4 MOV की कार्यक्षमता में लगभग समान है, लेकिन प्लेबैक उपकरणों में इसका बेहतर समर्थन है। सामान्य तौर पर, जब आप कर सकते हैं तब MOV से अधिक पसंद करें।


मुझे नहीं लगता कि टिप्पणी से -qscaleसमझ में आता है। के लिए libx264, यह सेटिंग के रूप में ही है -qp, है ना? यह एक विकल्प है जो x264 संपीड़न पर लागू होता है, इसलिए पीएनजी होने का स्रोत अप्रासंगिक है। भले ही, लक्ष्य गुणवत्ता के साथ वन-पास या उसके लिए -crfएक बेहतर विकल्प है । (बजाय एक लक्ष्य बिटरेट)। -qp-b:v
पीटर कॉर्डेस

1
आपको डुप्लिकेट फ़्रेम प्रभाव को भी ठीक करना चाहिए। -framerate 10 -i input -r 30mp4 को आउटपुट करते समय डुप्लिकेट उत्पन्न करेगा। (mkv से संबंधित कारणों से नहीं, mkv में vfr का समर्थन करने वाले ffmpeg से संबंधित कारणों से, मुझे लगता है।) यदि आपकी सामग्री 10 एफपीएस है, तो बस 10 एफपीएस आउटपुट वीडियो बनाएं। मुझे लगता है कि youtube आपको जो भी फ्रैमरेट चाहिए (60 तक) का समर्थन करता है। सेल फोन के कैमरे mp4 (esp। कम रोशनी में) में चर-फ्रेम-दर h.264 वीडियो रिकॉर्ड करते हैं, इसलिए यदि आप सीधे youtube पर अपलोड कर सकते हैं, तो आप ठीक हो जाएंगे।
पीटर कॉर्डेस

@PeterCordes बिल्कुल। मैंने -r 30बिना बदले ही ओपी की कमान संभाल ली थी ।
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) के साथ, दुर्भाग्यवश मुझे अभी भी रहस्यमय "वीडियो प्राप्त करने में विफल रहा है" त्रुटि। यह निश्चित नहीं है कि इसे कैसे ख़राब किया जाए, दुर्भाग्य से।
रेडॉन रोसबरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.