কীভাবে একটি এফএফএমপিইগ ব্যবহার করে একটি নতুন অডিও (মিশ্রণ নয়) যুক্ত করবেন?


131

আমি একটি কমান্ড ব্যবহার করেছি:

ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio

ভিডিওতে নতুন অডিও ট্র্যাক যুক্ত করার জন্য সর্বশেষতম সংস্করণে (মিশ্রণ নয়)।

তবে আমি ffmpeg আপডেট করেছি নতুন সংস্করণে ( ffmpeg সংস্করণ গিট -২২-০6-১---০৯d71 ডি ) এবং এখন এই সংস্করণে প্যারামিটারটি -newaudioকাজ করে না।

বলুন কিভাবে আমি আমার ভিডিওর সাথে নতুন অডিও যোগ করতে পারেন আমাকে দয়া করে (মিশ্রিত না) ব্যবহার করে ffmpeg


@ কিকিনেট হ্যাঁ, আপনি ঠিক বলেছেন। এবং উত্তর ইতিমধ্যে দেওয়া হয়েছে। শুধু এই থ্রেড পড়ুন। এই প্রশ্নটি 5 বছরের পুরনো।
ভেটাল

নতুন অডিও যুক্ত করে আপনার অর্থ অডিওটি প্রতিস্থাপন করা উচিত, তাই না? আমি আপনার প্রশ্নটি এটিকে পরিষ্কার করার জন্য সম্পাদনা করতে পারি।
tommy.carstensen

উত্তর:


295

ভিডিওতে অডিও যুক্ত করুন: স্ট্রিম অনুলিপি

ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
  • -mapবিকল্পটি ছাড়লে ডিফল্ট স্ট্রিম নির্বাচন ব্যবহার করা হবে । আপনার ভিডিও ইনপুটটিতে অডিও না থাকলে এটি কাজ করবে।
  • এই উদাহরণটি অনুলিপি-codec copy করার জন্য ব্যবহার করে (কোনও পুনরায় এনকোডিং নেই; গুণ সংরক্ষণ করা হয় এবং এটি দ্রুত)।
  • -shortestবিকল্প করতে হবে output.aviসবচেয়ে কম ইনপুট হিসাবে একই সময়কাল।

ভিডিওতে অডিও যুক্ত করুন: পুনরায় এনকোড

যদি আপনার আউটপুটটি মূল ফর্ম্যাটগুলি পছন্দ না করে বা আপনি ফর্ম্যাটগুলি পরিবর্তন করতে চান তবে আপনি এনকোডারগুলি নির্দিষ্ট করতে পারেন:

ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv

ম্যানুয়ালি নির্দিষ্ট স্ট্রিম চয়ন করতে

কখনও কখনও ডিফল্ট স্ট্রিম নির্বাচন আপনাকে চান ফলাফল দেয় না। এই উদাহরণে video.mp4ভিডিও এবং অডিও রয়েছে এবং audio.m4aকেবল অডিও রয়েছে। এর -mapথেকে ভিডিও video.mp4এবং অডিও চয়ন করতে ব্যবহার করুন audio.m4a:

ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
  • -map 0:v- ইনপুট থেকে 0(প্রথম ইনপুট, যা video.mp4) vআদর্শ স্ট্রিমটি বেছে নিন ।
  • -map 1:a- ইনপুট থেকে 1(দ্বিতীয় ইনপুট, যা audio.m4a) aইউডিও স্ট্রিমটি বেছে নিন ।

একটিতে দুটি অডিও ইনপুট মিশ্রিত / সংমিশ্রণ করা

থেকে ভিডিও নিন video.webmএবং অডিও ফিল্টার ব্যবহার করুন video.webmএবং এর থেকে অডিও একত্রিত করতে audio.oga:

ffmpeg -i video.webm -i audio.oga -filter_complex \
"[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a libvorbis -ac 2 -shortest out.webm

নিঃশব্দ অডিও তৈরি করুন

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

ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4

এছাড়াও দেখুন


5
এটি প্রথমে আমার পক্ষে কাজ করেনি, তবে এর -map 0:0 -map 1:0পরিবর্তে -map 0 -map 1ব্যবহারটি আমার জন্য কৌশলটি করেছে। ধন্যবাদ!
ইয়োনিক্স

এটি শুরুতে একটি খালি ফ্রেম সন্নিবেশ করায়।
লেনার হোয়েট

আমি এই আদেশটি চেষ্টা করেছি, তবে আমি ভিডিও অডিওটি হারাতে চাই lose আমার ভিডিও ফর্ম্যাটটি এমপি 4
অ্যালান

@ অ্যালান.চান মূল প্রশ্নটি ভিডিও ইনপুট থেকে অডিওটি চায়নি, তবে আমি আরও একটি উদাহরণ যুক্ত করেছি: দেখুন মিশ্রিত / অন্য অডিও ইনপুট উদাহরণের সংমিশ্রণ
লগন

-shortestবিকল্প ছাড়াই 1 ম সমাধানটি আমার পক্ষে আরও ভাল কাজ করেছে।
এমএমজে

24

ওয়াভ থেকে এমপি 3 সঙ্গীত

ffmpeg -i music.mp3 music.wav

ভিডিও মানানসই কাটা

ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav

মিশ্রণ এবং ভিডিও

ffmpeg -i musicshort.wav -i movie.avi final_video.avi

3
যেমনটি আমার মনে আছে, শেষ রূপটি পুরানো অডিওটিকে নতুন দিয়ে প্রতিস্থাপন করবে।
ভেটাল 15

পুরানো অডিওতে নতুন অডিও একত্রিত করার কোনও বিকল্প নেই?
ইকবাল মালিক

1
@ জুইলসন আমি এই কমান্ডটি ব্যবহার করে দেখেছি, তবে আমি ভিডিও অডিওটি হারাব। আমার ভিডিও ফর্ম্যাটটি এমপি 4
অ্যালান

@ অ্যালান সমাধান হারানোর জন্য নয়?
কিকিনেট

20

যদি ইনপুট ভিডিওটিতে একাধিক অডিও ট্র্যাক থাকে এবং আপনার আরও একটি যুক্ত করতে হয় তবে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi

-map 0এর অর্থ প্রথম ইনপুট ফাইল ( input_video_with_audio.avi) থেকে সমস্ত স্ট্রিম অনুলিপি করা (অন্তর্ভুক্ত) -map 1এবং দ্বিতীয় ইনপুট ফাইল ( new_audio.ac3) থেকে সমস্ত স্ট্রিম (এই ক্ষেত্রে এক) অন্তর্ভুক্ত করার অর্থ ।


আমি মনে করি, এই উত্তরটি অবশ্যই সেরা উত্তর হতে হবে।
নবী KAZ

3

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

ffmpeg -i videowithaudioyouwanttokeep.mp4 -i audiotooverlay.mp3 -vcodec copy -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest -b:a 144k out.mkv

1

আমার পক্ষে পুরোপুরি কোনও কাজ হয়নি (আমার মনে হয় এটি কারণ আমার ইনপুট। এমপি 4 ভিডিওতে কোনও অডিও ছিল না) তাই আমি এটি আমার জন্য কাজ করতে পেলাম:

ffmpeg -i input_video.mp4 -i balipraiavid.wav -map 0:v:0 -map 1:a:0 output.mp4


0

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

ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4

লক্ষ্য করুন যে আমি -ভোকোডেক ব্যবহার করেছি


0

Ffmpeg ব্যবহার করে ভিডিওতে অডিও যুক্ত করার কোড।

অডিও দৈর্ঘ্য যদি ভিডিও দৈর্ঘ্যের চেয়ে বেশি হয় তবে এটি অডিওটিকে ভিডিও দৈর্ঘ্যে কাটবে। আপনি যদি ভিডিওতে সম্পূর্ণ অডিও চান তবে সিমিডি থেকে শর্টেস্ট সরিয়ে দিন।

String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy", ,outputFile.getPath()};

private void execFFmpegBinaryShortest(final String[] command) {



            final File outputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");




            String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy","-shortest",outputFile.getPath()};


            try {

                ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
                    @Override
                    public void onFailure(String s) {
                        System.out.println("on failure----"+s);
                    }

                    @Override
                    public void onSuccess(String s) {
                        System.out.println("on success-----"+s);
                    }

                    @Override
                    public void onProgress(String s) {
                        //Log.d(TAG, "Started command : ffmpeg "+command);
                        System.out.println("Started---"+s);

                    }

                    @Override
                    public void onStart() {


                        //Log.d(TAG, "Started command : ffmpeg " + command);
                        System.out.println("Start----");

                    }

                    @Override
                    public void onFinish() {
                        System.out.println("Finish-----");


                    }
                });
            } catch (FFmpegCommandAlreadyRunningException e) {
                // do nothing for now
                System.out.println("exceptio :::"+e.getMessage());
            }


        }

কী Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");?
কুইকিনেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.