मैं ffmpeg के साथ 2 jpeg (6912x3456 px, फ़ाइलें बड़ी हैं, यह 360 पैनोरमा है) से वीडियो बनाने की कोशिश करता हूं

ffmpeg -r 1/4 -pattern_type glob -i "my_dir/*.jpg" -c:v libx264 -profile:v high -crf 18 -vf "fps=30,format=yuv420p" -movflags +faststart output.mp4

और ffmpeg प्रक्रिया रुक जाती है। मुझे समझ आ गया

ffmpeg version 3.2.15-0+deb9u1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
  configuration: --prefix=/usr --extra-version=0+deb9u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 34.101 / 55. 34.101
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.101 / 57. 56.101
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
Input #0, image2, from 'b90f8cc38a3ec7f6c4665ae0ba0e2b06/*.jpg':
  Duration: 00:00:00.08, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 6912x3456, 25 tbr, 25 tbn, 25 tbc
File 'output.mp4' already exists. Overwrite ? [y/N] y
[swscaler @ 0x564d13ed9ac0] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0x564d13ecadc0] frame MB size (432x216) > level limit (36864)
[libx264 @ 0x564d13ecadc0] DPB size (4 frames, 373248 mbs) > level limit (1 frames, 184320 mbs)
[libx264 @ 0x564d13ecadc0] MB rate (2799360) > level limit (2073600)
[libx264 @ 0x564d13ecadc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0x564d13ecadc0] profile High, level 5.2
[libx264 @ 0x564d13ecadc0] 264 - core 148 r2748 97eaef2 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - 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 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=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_lookahead=40 rc=crf mbtree=1 crf=18.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf57.56.101
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 6912x3456, q=-1--1, 30 fps, 15360 tbn, 30 tbc
    Metadata:
      encoder         : Lavc57.64.101 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x564d13ec6c60] 100 buffers queued in output stream 0:0, something may be wrong.

और एचटॉप शो यहां छवि विवरण दर्ज करें

और केवल Ctrl+C ही मदद करता है। लेकिन जब फ़ोल्डर में एक jpg फ़ाइल होती है, तो ffmpeg ठीक काम करता है। मेरा ffmpeg कमांड Win10 पर WSL डेबियन के साथ दूसरे पीसी पर ठीक काम करता है। समस्या क्या है?

0
lavAzza 15 जिंदा 2021, 22:05

1 उत्तर

सबसे बढ़िया उत्तर

आपका लिंक किया गया x264 बहुत पुराना है और इसलिए इसका अधिकतम स्तर 5.2 है जो 6912x3456@30 स्तर सीमा से अधिक है (जैसा कि आपके ffmpeg प्रक्रिया आउटपुट द्वारा दिखाया गया है)। सीमा से अधिक होने पर हैंग होने का कारण हो सकता है या नहीं भी हो सकता है, मुझे उम्मीद है कि x264 का एक नया संस्करण स्तर 6.0 का समर्थन करेगा और हैंग नहीं होगा। आपके पास कई विकल्प हैं:

  • अपने x264 को अपग्रेड करें (और आपका ffmpeg जब आप इसमें हों तो 3.2 शाखा 2016 से है)। देखें संकलन मार्गदर्शिका या नवीनतम ffmpeg डाउनलोड करें जिसमें आधुनिक libx264 शामिल है।
  • या स्केल फ़िल्टर जोड़ें और स्तर की सीमा के भीतर रहने का प्रयास करें: -vf "scale=4096:-2,fps=30,format=yuv420p"
  • या -c:v libx264 के बजाय -c:v libx265 आज़माएं (इसके बारे में जागरूक होने के स्तर भी हैं)।
  • या हो सकता है कि आपने अभी काफी देर तक इंतजार नहीं किया हो।
1
llogan 15 जिंदा 2021, 22:42
उत्तर देने के लिए आपका शुक्रिया। मैंने h.264 को अंतिम संस्करण में अपग्रेड किया। अब मुझे पूर्ण आकार के वीडियो के लिए "x264 [त्रुटि]: आकार 73845120 विफल वीडियो एन्कोडिंग विफल" का मॉलोक मिलता है। क्रॉप किया गया वीडियो ठीक उत्पन्न होता है। क्या ऐसा इसलिए है क्योंकि पीसी में अब पर्याप्त मेमोरी है?
 – 
lavAzza
15 जिंदा 2021, 23:46
हाँ, यह एक अच्छा अनुमान है। एफपीएस फिल्टर के बजाय -r 30 आउटपुट विकल्प का उपयोग करने से कम मेमोरी का उपयोग हो सकता है।
 – 
llogan
16 जिंदा 2021, 00:33