FFmpeg এর মাধ্যমে অডিওতে 1 সেকেন্ড নীরবতা যুক্ত করুন


14

আমার কাছে একটি AC3 5.1 অডিও ফাইল রয়েছে যাতে আমি শুরুতে x সেকেন্ডের নীরব অডিওটি likeোকাতে চাই। ভিডিও ম্যাক্সিংয়ের সাথে এর কোনও যোগসূত্র নেই, সুতরাং এটির অফসেটটি অকেজো কারণ এটি কেবল একটি ভিডিওর সাথে কেবল অডিও স্ট্রিমের সাথেই কাজ করে বলে মনে হচ্ছে। আমি ffmpeg দিয়ে এটি অর্জন করতে চাই। কোন ধারনা?


ffmpeg একই কোডেক একই হারের জিনিস যুক্ত বা যোগদান করবে?
সাইকোগেক

আমি অনুমান ... @Psycogeek
Makaveli84

এবং এটি ঠিক একই কোডেক হার এবং চ্যানেলের নীরব অডিও ফাইল তৈরি করতে সক্ষম? ffmpeg.org/ffmpeg-filters.html# উদাহরণ -৩৪ ? আমি নিজেও জিইউআই পদ্ধতি ব্যবহার করি, তবে যতক্ষণ প্যারামিটারগুলি একই থাকে ততক্ষণ আপনার জিজ্ঞাসা করা মোটামুটি সহজ এবং খুব দ্রুত হওয়া উচিত। এটি এখানে একটি মুভিতে যুক্ত করে দেখানো হয়েছে। stackoverflow.com/questions/12368151/... উত্তর
Psycogeek

আপনার পছন্দের কিছু যুক্ত করতে আর্ডার ব্যবহার করুন। আপনি যদি এফেক্টস চান তবে বাছুর প্লাগইনসও ডাউনলোড করুন ..
ড্যাশবোর্ড

উত্তর:


23

কনক্যাট ডেমাক্সার ব্যবহার করে (শুরুতে এবং / অথবা শেষের দিকে নীরবতা যোগ করুন)

আপনি যদি প্রধান বিভাগটি পুনরায় এনকোডিং এড়াতে চান তবে কনক্যাট ডেমাক্সারটি ব্যবহার করুন। এই পদ্ধতিগুলি শুরু বা শেষের (অথবা উভয়) নীরবতা যুক্ত করার জন্য কাজ করে।

  1. নীরব অডিও তৈরি করতে আনলসক্রিও অডিও উত্স ফিল্টারটি ব্যবহার করুন । আপনাকে মূল অডিও ফাইলের ফর্ম্যাট, চ্যানেল লেআউট এবং নমুনার হারের সাথে মিল রাখতে হবে। একটি 5.1 চ্যানেল তৈরির উদাহরণ, 48000 হার্জেড নমুনা হার, 1 সেকেন্ড নীরব এসি 3 অডিও ফাইল (যা প্রশ্নের ফর্ম্যাটটিতে এটি ছিল):

    ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
    
  2. এখন এমন একটি পাঠ্য ফাইল তৈরি করুন input.txtযা ফাইলগুলিকে সংযুক্ত করার জন্য তালিকাবদ্ধ করে:

    file 'silent.ac3'
    file 'main.ac3'
    

    আপনি যদি শেষে নীরবতা চান তবে কেবল ফাইলগুলির ক্রমটি স্যুইচ করুন input.txt

  3. এখন আপনি কনক্যাট ডেমাক্সার ব্যবহার করে ফাইলগুলি সংযুক্ত করতে পারেন :

    ffmpeg -f concat -i input.txt -codec copy output.ac3
    

কনক্যাট ফিল্টার ব্যবহার করে (শুরুতে এবং / অথবা শেষের দিকে নীরবতা যোগ করুন)

আপনি যদি একটি কমান্ডের মধ্যে সমস্ত কিছু করতে চান, বা আপনি যদি ইনপুটের চেয়ে আলাদা ফর্ম্যাটে আউটপুট করতে চান তবে কনক্যাট ফিল্টারটি ব্যবহার করুন (যেহেতু এই পদ্ধতিটি যাইহোক পুনরায় এনকোড করে)। এই পদ্ধতিগুলি শুরু বা শেষ বা উভয়কেই নীরবতা যোগ করার জন্য কাজ করে।

একটি স্টেরিওর শুরুতে 1 সেকেন্ডের নীরবতা যুক্ত করার উদাহরণ, 44100 হার্জেড নমুনা হার ইনপুট:

ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
  • ফিল্টারিংয়ের ফলে পুনরায় এনকোডিং হবে যখন কনক্যাট ডেমাক্সার করবে না।

  • Anullsrc এ চ্যানেল লেআউট এবং ইনপুটটির নমুনা হারের সাথে মিলিয়ে দেওয়ার পরামর্শ দেওয়া হয়।

  • আপনি শেষ নীরবতা যুক্ত করতে চান তাহলে পরিবর্তে মাত্র CONCAT ফিল্টার দেওয়া ইনপুট ক্রম পরিবর্তন করুন: [1:a][0:a]concat=n=2:v=0:a=1


অ্যাডলে ফিল্টার ব্যবহার করে (শুরুতে নীরবতা যোগ করুন)

আপনি যদি একটি কমান্ডের মধ্যে সমস্ত কিছু করতে চান, বা আপনি যদি ইনপুটের চেয়ে আলাদা ফর্ম্যাটে আউটপুট করতে চান তবে অ্যাডলে অডিও ফিল্টারটি ব্যবহার করুন (যেহেতু এই পদ্ধতিটি যাইহোক পুনরায় এনকোড করে)। এটি কেবল কোনও ফাইলের শুরুতে নীরবতা যুক্ত করতে কাজ করে।

এই উদাহরণটি একটি স্টেরিও ইনপুটটির শুরুতে 1 সেকেন্ডের নীরবতা যুক্ত করবে:

ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
  • ফিল্টারিংয়ের ফলে পুনরায় এনকোডিং হবে যখন কনক্যাট ডেমাক্সার করবে না।
  • মান মিলিসেকেন্ডে। সাম্প্রতিক সংস্করণগুলির ব্যবহারকারীরা (বর্তমান গিট মাস্টার বা এফএফপিপেগ ৪.১ এর চেয়ে নতুন কিছু) এর পরিবর্তে 1sএক সেকেন্ডের জন্য ব্যবহার করতে পারবেন ।
  • প্রতিটি চ্যানেলের নিজস্ব বিলম্ব প্রয়োজন। উদাহরণস্বরূপ, একটি মনো ইনপুট ব্যবহার করবে adelay=1000, যখন একটি 5.1 ইনপুট ব্যবহার করবে adelay=1000|1000|1000|1000|1000|1000

এপ্যাড ফিল্টার ব্যবহার করে (শেষ পর্যন্ত নিরবতা যোগ করুন)

আপনি যদি একটি কমান্ডের মধ্যে সমস্ত কিছু করতে চান, বা আপনি যদি ইনপুটের চেয়ে আলাদা ফর্ম্যাটে আউটপুট করতে চান তবে অ্যাপাড অডিও ফিল্টারটি ব্যবহার করুন (যেহেতু এই পদ্ধতিটি যেভাবেই পুনরায় এনকোড করে)। এটি কেবল কোনও ফাইলের শেষে নীরবতা যুক্ত করতে কাজ করে।

এই উদাহরণটি শেষে 1 সেকেন্ডের নীরবতা যুক্ত করবে:

ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
  • ফিল্টারিংয়ের ফলে পুনরায় এনকোডিং হবে যখন কনক্যাট ডেমাক্সার করবে না।

  • pad_durবিকল্প, FFmpeg 4.1 মুক্তির পর যোগ করা হয়েছিল যাতে আপনি Git মাস্টার শাখা থেকে একটি সাম্প্রতিক বিল্ড ব্যবহার করুন অথবা FFmpeg 4.2 জন্য অপেক্ষা করতে হবে।


5
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.নতুন বাক্য -i "aevalsrc=0|0|0|0|0|0:d=1"
স্টিভেন পেনি 19

আমি একসাথে একাধিক ফাইলের জন্য এটি করতে পারি?
অ্যারন ফ্রাঙ্ক

অ্যারোনফ্রেঙ্ক হ্যাঁ, তবে এফফেম্পেগের নিজস্ব বৈশিষ্ট্য নেই। কমান্ডটি লুপ করতে আপনাকে আপনার শেল বা স্ক্রিপ্টিং ভাষা ব্যবহার করতে হবে। আপনার ওএস অজানা তাই আমি আপনাকে একটি টার্নকি সমাধান দিতে পারি না, তবে দেখুন আপনি কীভাবে একটি সম্পূর্ণ ডিরেক্টরিকে এফএফপিজে দিয়ে রূপান্তর করবেন? কিছু সাধারণ তথ্যের জন্য (অগ্রহণীয় জটিল এবং অকার্যকর বলে গ্রহণযোগ্য উত্তরটি এড়িয়ে যান)।
লোগান

adelayএছাড়াও দরকারী আছে allবিলম্ব করার অপশন (শুরু থেকে প্যাড) কিছু সময়ের যেমন দ্বারা সমস্ত চ্যানেলadelay=delays=1000:all=1
Jurijs Kovzels
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.