FFmpeg ব্যবহার করে ভিডিওতে অডিও যুক্ত করুন


26

আমি এফএফপিপিগ ব্যবহার করে কোনও ভিডিওতে শব্দ যুক্ত করার চেষ্টা করছি তবে কোনও কারণে, যখন আমি ফলাফলটি ফাইলটি খেলি তখন এর কোনও শব্দ হয় না। আমি এটি একটি অ্যাক অডিও ফাইল দিয়ে করার চেষ্টা করেছি, পাশাপাশি রেখে -acodec copyএটিকে একটি ওয়াভ ফাইল দিয়েছি।

এখানে সম্পূর্ণ আউটপুট:

C:\Users\SM-Audio\Desktop>ffmpeg -i PrintingCDs.mp4 -i AudioPrintCDs.mp3 -acodec
 copy -vcodec copy PrintCDs1.mp4
ffmpeg version N-48886-g5ce023b Copyright (c) 2000-2013 the FFmpeg developers
  built on Jan 14 2013 19:16:33 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-av
isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enab
le-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libg
sm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --e
nable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --e
nable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --en
able-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. 89.100 / 54. 89.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, mov,mp4,m4a,3gp,3g2,mj2, from 'PrintingCDs.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-05-01 13:35:52
  Duration: 00:02:35.57, start: 0.000000, bitrate: 585 kb/s
    Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1024x
768 [SAR 1:1 DAR 4:3], 457 kb/s, 10 fps, 10 tbr, 30k tbn, 30 tbc
    Metadata:
      creation_time   : 2013-05-01 13:35:53
      handler_name    : Mainconcept MP4 Video Media Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 22050 Hz, mono, fltp, 126
kb/s
    Metadata:
      creation_time   : 2013-05-01 13:35:53
      handler_name    : Mainconcept MP4 Sound Media Handler
[mp3 @ 003dd6c0] max_analyze_duration 5000000 reached at 5015510 microseconds
Input #1, mp3, from 'AudioPrintCDs.mp3':
  Metadata:
    encoder         : Lavf54.59.107
  Duration: 00:02:36.21, start: 0.000000, bitrate: 64 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s
File 'PrintCDs1.mp4' already exists. Overwrite ? [y/N] y
Output #0, mp4, to 'PrintCDs1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf54.59.107
    Stream #0:0(eng): Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 1024x768 [S
AR 1:1 DAR 4:3], q=2-31, 457 kb/s, 10 fps, 30k tbn, 30k tbc
    Metadata:
      creation_time   : 2013-05-01 13:35:53
      handler_name    : Mainconcept MP4 Video Media Handler
    Stream #0:1(eng): Audio: aac ([64][0][0][0] / 0x0040), 22050 Hz, mono, 126 k
b/s
    Metadata:
      creation_time   : 2013-05-01 13:35:53
      handler_name    : Mainconcept MP4 Sound Media Handler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 1555 fps=0.0 q=-1.0 Lsize=   11133kB time=00:02:35.57 bitrate= 586.2kbits
/s
video:8674kB audio:2408kB subtitle:0 global headers:0kB muxing overhead 0.459569
%

মনে রাখবেন যে পৃথক এমপি 4 অডিও-কেবলমাত্র ফাইল এম্বেড অডিও ট্র্যাক ব্যতীত এমপি 4 ভিডিও-কেবলমাত্র ফাইলটি মার্জ করার ক্ষেত্রে প্রশ্নের কমান্ডটি পুরোপুরি যথেষ্ট।
ভাদজিম

উত্তর:


50

ডিফল্টরূপে, FFmpeg কেবল একটি অডিও এবং একটি ভিডিও স্ট্রিম গ্রহণ করবে। আপনার ক্ষেত্রে এটি প্রথম ফাইল থেকে নেওয়া হয়েছে।

আপনার স্ট্রিমগুলি সঠিকভাবে ম্যাপ করতে হবে:

ffmpeg -i input.mp4 -i input.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4

কিছু নোট:

  • অর্ডার ম্যাপিং বিকল্পগুলি ইনপুট থেকে কোন স্ট্রিমগুলি আউটপুটে ম্যাপ করা হয় তা নির্ধারণ করে।
  • 0:v:0প্রথম ফাইলটির প্রথম ভিডিও স্ট্রিম এবং 1:a:0এটি দ্বিতীয় ফাইলটির প্রথম অডিও স্ট্রিম। v/ aকঠোরভাবে প্রয়োজন নেই, কিন্তু ক্ষেত্রে আপনার ইনপুট ফাইল একাধিক প্রবাহের থাকে, যে দুর্বোধ্য করতে সাহায্য করে। ম্যাপিং সম্পর্কে আরও তথ্য এফএফপিপেইগ উইকিতে পাওয়া যাবে ।
  • যদি আপনার অডিও স্ট্রিমটি ভিডিও ফাইলের তুলনায় দীর্ঘতর হয় বা তদ্বিপরীত হয়, আপনি -shortestযখন দুটি প্রান্তের সংক্ষিপ্ততাটি কম করেন তখন রূপান্তর বন্ধ করতে ffmpeg বিকল্পটি ব্যবহার করতে পারেন ।
  • -c copyঅডিও এবং ভিডিও স্ট্রিমগুলি অনুলিপি করে। এর অর্থ এই যে প্রক্রিয়াটি দ্রুত হবে এবং মানও একই থাকবে। তবে বিদ্যমান ভিডিও ফাইলটিতে WAV অডিও যুক্ত করার সময়, বলুন, প্রথমে সেই অডিওটি সংকোচন করা ভাল। উদাহরণ স্বরূপ:

    ffmpeg -i input.mp4 -i input.wav -c:v copy -map 0:v:0 -map 1:a:0 -c:a aac -b:a 192k output.mp4
    

    এখানে আমরা কেবল ভিডিও স্ট্রিম ( -c:v copy) অনুলিপি করছি এবং -c:a aac192 কেবিট / সেফ্টে এফএইচসিপি বিল্ট-ইন এএসি এনকোডার ( ) দিয়ে অডিও স্ট্রিমটিকে পুনরায় এনকোড করব ।

  • যদি আপনার আউটপুট ফর্ম্যাটটি কোনও নির্দিষ্ট কোডেককে সমর্থন না করে (যেমন, এমপি 4 তে ডাব্লুএইভি যোগ করার সময়, বা এএসি-তে এআই ইত্যাদি ইত্যাদি), পুনরায় এনকোডিংও প্রয়োজন।

1
আপনাকে অনেক ধন্যবাদ, এটি নিখুঁত কাজ করে। কি -c copy? এটা কি শর্টহ্যান্ড -acodec copy -vcodec copy?
অ্যারলেন বেলার

1
হ্যাঁ, এটি মূলত এটি সমস্ত ধরণের স্ট্রিমের অনুলিপি করতে বলে - এটিতে সাবটাইটেলগুলিও অন্তর্ভুক্ত রয়েছে।
slhck

1
কৌতূহলের বাইরে অডিও বা ভিডিও দৈর্ঘ্য এক না হলে কী হবে! ভিডিও কি একই থাকে এবং অডিও দৈর্ঘ্যের সাথে স্বয়ংক্রিয়ভাবে ভিডিও আকারের সাথে মেলে!
আকাশ দুবে

1
@ আকাশ ffmpeg সর্বদা দুটি স্ট্রিমের দীর্ঘতর ব্যবহার করবে এবং শেষে কালো ভিডিও বা নীরব অডিও যুক্ত করবে। আপনি যদি -shortestবিকল্পটি নির্দিষ্ট না করেন , তবে সেক্ষেত্রে সংক্ষিপ্ততম স্ট্রিমটি এনকোডিং প্রক্রিয়াটি সমাপ্ত করে।
slhck

1
@ আকাশদুবে আপনি হ্যাঁ এটিই ব্যবহার করেন। -i <input>এবং আউটপুট ফাইলের মধ্যে যে কোনও জায়গায় ।
slhck
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.