আমি কীভাবে কোনও ভিডিও চিত্রগুলিতে বিভক্ত করতে ffmpeg ব্যবহার করতে পারি এবং তারপরে আবার একইভাবে পুনরায় সংযুক্ত করতে পারি?


2

আমার একটি এমপি 4 আছে যার একটি অডিও এবং ভিডিও স্ট্রিম রয়েছে এবং আমার ভিডিওটির প্রতিটি ফ্রেম সংশোধন করা দরকার। আমি যে পাইপলাইনটি ব্যবহার করছি তা হ'ল:

ভিডিওটির বাইরে অডিও বিভক্ত করুন:

ffmpeg -i in.mp4 -vn -acodec copy out.m4a

তারপরে ভিডিওটি প্রতিটি ফ্রেমকে একটি চিত্র ফাইলে ভাগ করুন:

ffmpeg -i in.mp4 img%04d.png

তারপরে আমি img% 04d.png ফাইলগুলিতে কিছু প্রসেসিং করি (এখনকার জন্য নাল অপারেশন ধরে নিই) এবং ভিডিওটি পুনরায় সংশ্লেষ করতে চাই।

ffmpeg -i img%04d.png -i out.m4a -c:v libx264 -r 25 -pix_fmt yuv420p -c:a copy -shortest out.mp4

এটি মূলত কাজ করে তবে আমার সমস্যাটি হ'ল আমাকে ইনপুট এমপি 4 ফর্ম্যাটটি যতটা সম্ভব নিবিড়ভাবে মিলানো দরকার এবং এটি কীভাবে করা যায় তা নিয়ে কাজ করার জন্য আমি লড়াই করছি।

উদাহরণ:

ইনপুট এমপি 4:

Duration: 00:00:10.01, start: 0.010000, bitrate: 24589 kb/s
  Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 4096x2048 [SAR 1:1 DAR 2:1], 27736 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
  Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s

প্রক্রিয়াজাতকরণের পরে আউটপুট এমপি 4:

Duration: 00:00:10.00, start: 0.000000, bitrate: 4458 kb/s
  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 4096x2048 [SAR 1:1 DAR 2:1], 4272 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
  Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s

আমি যেমন অডিওকে আলাদা করে ফেলেছি, ঠিক তার সাথে মেলে। আমি ফ্রেম রেট এবং পিক্সেল ফর্ম্যাটগুলি মেলে ধরতে বাধ্য করতে -r এবং -pix_fmt বিকল্পগুলি ব্যবহার করেছি।

তবে সময়কাল, শুরু, বিটরেট, ভিডিও স্ট্রিমের ভাষা এবং টিবিএন সবই বদলে গেছে।

আমি যুক্তিগুলি ব্যবহার করে বিটরেটটি ঠিক করার চেষ্টা করেছি:

-b:v 27736k -minrate 27736k -maxrate 27736k

তবে আমি 27 এমবি / সেকেন্ডের পরিবর্তে 41 এমবি / সের বিট রেট দিয়ে শেষ করেছি।

আমি বিটরেটটি ঠিক মিলবে বলে আশা করি না তবে গুণমানটি বেশ অপরিবর্তিত হওয়ার জন্য আমার প্রয়োজন এবং একই উপাদান থাকার জন্য আমার অন্যান্য উপাদানও প্রয়োজন।

আমি যেভাবে উত্পন্ন করছি তার কনফিগারেশনটি নিয়ন্ত্রণ করতে আমি কোনওভাবে বিদ্যমান এমপি 4 ব্যবহার করতে পারি বা ফলাফলটি একটি নিকটতম ম্যাচ কিনা তা নিজে নিজে নিশ্চিত করতে আমার কী যুক্তি ব্যবহার করতে হবে তা আমাকে কেউ বলতে পারেন।

আপডেট 1 - আপডেট হয়েছে

মুলভ্যা প্রস্তাবিত চেষ্টা করেছেন:

ffmpeg -i img%04d.png -i out.m4a \
-c:v libx264 -b:v 27736k -bufsize 30000k \
-r 25 -video_track_timescale 25000 -output_ts_offset 0.01 -pix_fmt yuv420p \
-c:a copy -metadata:s:v:0 language=eng -metadata:s:a:0 language=eng -shortest out.mp4

ফলস্বরূপ বিটরেটটি 24502 ​​কেবি / সেকেন্ড ছিল যা অনেক বেশি কাছাকাছি এবং স্ট্রিম # 0.0 এর জন্য ভাষাটি ইংরেজিতে সঠিকভাবে সেট করা হয়েছিল। টিবিএন এবং শুরুটি সঠিক, তবে দৈর্ঘ্য কম।

আমি ভাবছি সমস্যাটি যদি প্রজন্মের প্রজন্মের সাথে কিছু করার থাকে। আসল আউটপুটটি 251 ফ্রেম চিত্র তৈরি করেছে যা একটি সূচনা ধরে নিয়েছে, একটি প্রান্তটি হ'ল 10 সেকেন্ডে 25 fps এ। আমি একটি বিদ্যমান ভিডিও নিয়ে এবং এটি ব্যবহার করে এটি 10 ​​সেকেন্ডে কেটে এই ভিডিওটি তৈরি করেছি:

ffmpeg -i in.mp4 -ss 0 -c copy -t 10 out.mp4

এবং সেই কমান্ডটি 10.01 দৈর্ঘ্যের একটি ভিডিওতে ফলাফল দেয়। 0.01 25 fps ভিডিওর ফ্রেম প্রতি 0.04 সেকেন্ডের তুলনায় অনেক কম।

আমি জেরানয়ে বিল্ড সাইট থেকে ffmpeg সংস্করণ N-78636-g45d3af9 ব্যবহার করছি।

আপডেট 2

Ffmpeg কমান্ড থেকে আউটপুট যুক্ত করা হচ্ছে

E:\ImageTest\video>c:\ffmpeg\bin\ffmpeg -thread_queue_size 512 -i img%04d.png -i out.m4a -c:v libx264 -r 25 -pix_fmt yuv420p -c:a copy -shortest out.mp4
ffmpeg version N-78636-g45d3af9 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 18.100 / 55. 18.100
  libavcodec     57. 24.105 / 57. 24.105
  libavformat    57. 26.100 / 57. 26.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 35.100 /  6. 35.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, image2, from 'img%04d.png':
  Duration: 00:00:10.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24(pc), 4096x2048 [SAR 1:1 DAR 2:1], 25 tbr, 25 tbn, 25 tbc
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'out.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 512
    compatible_brands: isomiso2
    encoder         : Lavf55.0.100
  Duration: 00:00:10.00, start: 0.000000, bitrate: 191 kb/s
    Stream #1:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
File 'out.mp4' already exists. Overwrite ? [y/N] y
[libx264 @ 0000015f02f52b40] using SAR=1/1
[libx264 @ 0000015f02f52b40] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
[libx264 @ 0000015f02f52b40] profile High, level 5.1
[libx264 @ 0000015f02f52b40] 264 - core 148 r2665 a01e339 - 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=18 lookahead_threads=3 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=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'out.mp4':
  Metadata:
    encoder         : Lavf57.26.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 4096x2048 [SAR 1:1 DAR 2:1], q=-1--1, 25 fps, 12800 tbn, 25 tbc
    Metadata:
      encoder         : Lavc57.24.105 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, 189 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (png (native) -> h264 (libx264))
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame=  251 fps= 10 q=28.0 Lsize=    4746kB time=00:00:10.00 bitrate=3885.8kbits/s speed=0.416x
video:4507kB audio:231kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.155678%
[libx264 @ 0000015f02f52b40] frame I:2     Avg QP:17.80  size:304307
[libx264 @ 0000015f02f52b40] frame P:82    Avg QP:19.93  size: 44228
[libx264 @ 0000015f02f52b40] frame B:167   Avg QP:21.34  size: 12982
[libx264 @ 0000015f02f52b40] consecutive B-frames:  0.8% 15.9% 46.6% 36.7%
[libx264 @ 0000015f02f52b40] mb I  I16..4: 28.9% 55.3% 15.8%
[libx264 @ 0000015f02f52b40] mb P  I16..4:  5.8%  7.6%  0.1%  P16..4: 24.5%  2.9%  2.9%  0.0%  0.0%    skip:56.3%
[libx264 @ 0000015f02f52b40] mb B  I16..4:  1.1%  1.2%  0.0%  B16..8: 17.1%  0.6%  0.0%  direct: 1.7%  skip:78.2%  L0:48.7% L1:50.7% BI: 0.6%
[libx264 @ 0000015f02f52b40] 8x8 transform intra:55.5% inter:88.7%
[libx264 @ 0000015f02f52b40] coded y,uvDC,uvAC intra: 20.3% 28.0% 3.4% inter: 4.1% 10.1% 0.0%
[libx264 @ 0000015f02f52b40] i16 v,h,dc,p: 33% 43% 13% 12%
[libx264 @ 0000015f02f52b40] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 22% 60%  1%  1%  0%  2%  0%  2%
[libx264 @ 0000015f02f52b40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 53% 11%  3%  4%  2%  6%  2%  5%
[libx264 @ 0000015f02f52b40] i8c dc,h,v,p: 57% 30% 10%  3%
[libx264 @ 0000015f02f52b40] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0000015f02f52b40] ref P L0: 62.4%  4.7% 20.4% 12.5%
[libx264 @ 0000015f02f52b40] ref B L0: 66.2% 25.9%  7.9%
[libx264 @ 0000015f02f52b40] ref B L1: 86.0% 14.0%
[libx264 @ 0000015f02f52b40] kb/s:5102.21

আপনার রূপান্তর থেকে কমান্ড এবং পূর্ণ, অবিরত কমান্ড লাইন আউটপুট অন্তর্ভুক্ত করুন।
স্ল্যাক করুন

অনুরোধ অনুসারে লগটি যুক্ত করা হয়েছে
জুলাই

উত্তর:


2

চেষ্টা

ffmpeg -i img%04d.png -i out.m4a \
-c:v libx264 -b:v 27736k -bufsize 30000k \
-r 25 -video_track_timescale 25000 -output_ts_offset 0.01 -pix_fmt yuv420p \
-c:a copy -metadata:s:v:0 language=eng -metadata:s:a:0 language=eng -shortest out.mp4

(চিত্র বা অডিও স্ট্রিমটি সংক্ষিপ্ত কিনা তার উপর নির্ভর করে সময়কালটি মেলে না)


আমি নিম্নলিখিত বার্তা পেয়েছি:
জুলাই

বার্তা আসে নি। এগুলি প্রশ্নে আটকে দিন (কোড ফর্ম্যাটিং ব্যবহার করে)।
জ্ঞান

আমি 'ভিডিও_ট্র্যাক_টাইমস্কেল' এবং 'আউটপুট_স_অফসেট' এর জন্য অপরিজ্ঞাত বিকল্প পেয়েছি। আপাতত এই বিকল্পগুলি অপসারণ করে, বিট রেটটি 14502 কেবি / গুলি হিসাবে শেষ হয়েছে যা অনেক কাছাকাছি এবং ভাষাটি সঠিকভাবে সেট হয়ে গেছে। অতিরিক্ত বিকল্পগুলি ছাড়াই শুরু এবং সময়কাল অপরিবর্তিত হয়ে শেষ হয়েছিল। আমি একটি বিল্ড ব্যবহার করছি যা আমি ffmpeg.zeranoe.com/builds থেকে 23/02/16
জুলাই

দয়া করে সিনট্যাক্সের জন্য পুনরায় পরীক্ষা করুন। আমি একটি ফেব্রুয়ারী জেরানোও বিল্ড এবং উভয় বিকল্পের কাজ ব্যবহার করছি।
জ্ঞান

এই বিকল্পগুলির সাথে আবার চেষ্টা করেছি এবং এবার তারা কাজ করেছে। প্রথমবারের মতো আমি কী ভুল জানি না। টিবিএন এখন মেলে। শুরুর সময়টি সঠিক, তবে সময়কাল এখন 0.01 দ্বারা সংক্ষিপ্ত। আমি ভাবলাম যে সমস্যাটি যদি আমার উত্তোলনের সাথে থাকে তবে আমার কি শুরু এবং শেষের জন্য একটি ফ্রেম দরকার, এর মধ্যে একটির কি অনুপস্থিত থাকতে পারে?
জুলাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.