আপনি কিভাবে ffmpeg দিয়ে একটি সম্পূর্ণ ডিরেক্টরি রূপান্তর করবেন?


187

কমান্ড লাইনের মাধ্যমে বা ব্যাচ স্ক্রিপ্টের মাধ্যমে আপনি কীভাবে একটি সম্পূর্ণ ডিরেক্টরি / ফোল্ডারকে ffmpeg দিয়ে রূপান্তর করবেন?

উত্তর:


173

পূর্ববর্তী উত্তরটি কেবল আউট.মোভ নামে 1 টি আউটপুট ফাইল তৈরি করবে। প্রতিটি পুরানো চলচ্চিত্রের জন্য পৃথক আউটপুট ফাইল তৈরি করতে, এটি চেষ্টা করে দেখুন।

for i in *.avi;
  do name=`echo "$i" | cut -d'.' -f1`
  echo "$name"
  ffmpeg -i "$i" "${name}.mov"
done

24
আপনি যদি আমার মত হন এবং আপনার ফাইলের নামগুলিতে প্রচুর জায়গা (এবং আরও কয়েকটি সমস্যাযুক্ত চরিত্র) থাকে তবে আমি ডাবল উদ্ধৃতি যুক্ত করার পরামর্শ দেব: ffmpeg -i "$ i" "$ name.mov";
পিফ

7
আমি ত্রুটিটি i was unexpected at this time.
পাচ্ছি

5
do name=`echo "${i%.*}"`;এগুলিতে বিন্দু (এবং স্পেস) দিয়ে ফাইলের নামগুলিতে কাজ করবে।
নেপক্সক্স

8
বাহ, এই উত্তরটি অবিশ্বাস্যরকমভাবে জটিল is এক লাইনের উত্তর দেখুন।
foobarbecue

2
এই সমর্থন .batউইন্ডোজ জন্য?
জাজুলি

289

জন্য লিনাক্স এবং MacOS এই এক লাইন মধ্যে সম্পন্ন করা যাবে ব্যবহার পরামিতি সম্প্রসারণ আউটপুট ফাইলের ফাইলে এক্সটেনশন পরিবর্তন করতে:

for i in *.avi; do ffmpeg -i "$i" "${i%.*}.mp4"; done

1
এটি নিখুঁত, আপনাকে ধন্যবাদ! এখানে সম্পূর্ণ কমান্ডটি আমার জন্য দুর্দান্ত কাজ করেছে: কারণ আমি * .avi; do ffmpeg -i "$ i" -c: aac -b: a 128k -c: v libx264 -crf 20 "$ {i% .avi} .mp4"; সম্পন্ন
ফিল কুলাক

1
@ জুনাইদ ১) আউটপুট ফাইলের জন্য আলাদা নামটি ইনপুট বা অন্য ডিরেক্টরিতে আউটপুট ব্যবহার করা নিশ্চিত করুন, কারণ ffmpegএকই ফাইলটিতে ইনপুট এবং আউটপুট পাওয়া যায় না। 2) আমি নিশ্চিত নই যে বাশ কমান্ডগুলি স্থানীয়ভাবে উইন্ডোজ 10 এ কাজ করে। হতে পারে আমার উত্তরটি যুক্ত করা উচিত যে এটি এমন সিস্টেমগুলির দিকে লক্ষ্যযুক্ত যা লিনাক্স এবং ম্যাকোসের মতো নেটিভ ব্যাশ ব্যবহার করতে পারে। lxs এই প্রশ্নের জন্য একটি উইন্ডোজ উত্তর সরবরাহ করেছে।
লগন

3
দুর্দান্ত উত্তর। ফাঁকা জায়গাগুলির সাথে ফাইলের নামগুলিও কাজ করে!
উইসবাকি

1
এটি শীর্ষ উত্তর হওয়া উচিত। স্বীকার করে নেওয়া হচ্ছে, কেন {$ i%। * For এর ব্যাখ্যা সহজ নয়, তবে আপনি যদি এটিকে আলাদা করে রাখতে পারেন এবং কেবল "এটি ব্যবহার করতে" পারেন তবে আপনি দ্রুত মামলা অনুসারে পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, আমি কয়েকশ। এমপি 4 এর (ফাইল নাম এবং স্পেস বিশেষ অক্ষরযুক্ত ফাইলগুলির সাহায্যে) একটি ছোট ফর্ম্যাটে রূপান্তর করেছি: i ইন এমপি 4 এর জন্য; do ffmpeg -i "$ i" -s 512x288 -c: একটি অনুলিপি "$ {i% ।; .m4v"; সম্পন্ন
টনি এম

1
এটিকে আরও একধাপ এগিয়ে নিয়ে যেতে আপনি বাশ প্যারামিটার বিকল্পটি ব্যবহার করতে পারেন যদি আপনি H265 থেকে H.264 তে ট্রান্সকোড করে থাকেন তবে "x265" দিয়ে "x265" স্ট্রিংটি ব্যবহার করতে পারেন যা সাধারণ ব্যবহারের ক্ষেত্রে। for f in *.mkv; do ffmpeg -i "$f" -map 0 -movflags faststart -c:v libx264 -c:a copy -c:s copy "${f/x265/x264}"; done
ট্র্যাভিস রানইয়ার্ড

68

এবং উইন্ডোজে:

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"

19
আপনি যদি এই কমান্ডটি ব্যাচের (.bat) ফাইলে চালান তবে আপনাকে% চিহ্নগুলি => %%
hB0

এই কমান্ডটি কীভাবে চালানো যায় তার কোনও ধারণা নেই তবে মূল ফাইলটির মেটাডেটা অন্তর্ভুক্ত কোনও নতুন ফাইলে অনুলিপি করতে চান?
ব্যারিম্যান9000

@ ব্যারিম্যান9000 এটি অনেক আগে ছিল তবে আমি মনে করি যে আপনি যে আউটপুট ফাইলের বিকল্পটি পাস করতে পারেন
lxs

@ লেক্স ধন্যবাদ অনুসরণ করার জন্য ধন্যবাদ। আমি নতুন ফাইলের নামটি মূল ফাইলের তারিখের তৈরি করে stackoverflow.com/a/35671099/197472
ব্যারিম্যান 9000

এটি মেটাডেটা অপসারণের জন্য ব্যবহার করুন। তবে এটি আমাকে অ্যাক্সেস অস্বীকৃত ত্রুটি দিচ্ছে। সুতরাং আমি আউটপুট ফাইলের নামটিকে নতুন স্থান তৈরি করার জন্য একটি অতিরিক্ত স্থান দিয়ে পরিবর্তন করেছি। FOR /F "tokens=*" %G IN ('dir /b *.mp3') DO ffmpeg -i "%G" -map_metadata -1 -c:v copy -c:a copy "%~nG .mp3"
জুনায়েদ

28

একটি লাইনের ব্যাশ স্ক্রিপ্ট করা সহজ হবে - *.aviআপনার ফাইল টাইপের সাথে প্রতিস্থাপন করুন:

for i in *.avi; do ffmpeg -i "$i" -qscale 0 "$(basename "$i" .avi)".mov  ; done

.Mov এর জন্য ডিফল্ট এনকোডারটি libx264 (উপলভ্য থাকলে) তবে এই এনকোডারটি উপেক্ষা করে -qscale। এটি সরান এবং ডিফল্ট সেটিংস ব্যবহার করুন, বা -crfপরিবর্তে ব্যবহার করুন (ডিফল্ট হয় -crf 23)।

1
ফাইলের নামের মধ্যে যদি কোনও ফাঁক থাকে তবে কমান্ড ব্যর্থ হবে কারণ ব্যাকটিক basenameসাবস্কেল উদ্ধৃত হয়নি। এর পরিবর্তে বাশের শেল প্রসারণ হ'ল: আমি ইন * .avi; do ffmpeg -i "$ i" -qscale 0 "$ (বেসনাম" $ i ".avi)"। Mov; সম্পন্ন
ক্যালিমো

ধন্যবাদ @ ক্যালিমো সম্পূর্ণরূপে সম্মত - আমি আমার উত্তর আপডেট করেছি
কুসুম

22

সাব-ডিরেক্টরীগুলির সাথে রূপান্তর করতে উদাহরণস্বরূপ ব্যবহার করুন

find . -exec ffmpeg -i {} {}.mp3 \;

ভিটিটিকে এসআরটিতে রূপান্তর করতে, এই উত্তরের সাথে একত্রিত হয়ে আমি এটি ব্যবহার করেছি effect find -name "*.vtt" -exec ffmpeg -i {} {}.srt \;
গ্রোভপ্লেক্স

আমি এই আদেশটি, সমস্ত এমপি 4 কে এমপি 3 এ রূপান্তর করতে সামান্য মোডিফ দিয়ে:find *.mp4 -exec ffmpeg -i {} {}.mp3 \;
সোদেব

1
অথবা, আপনি যদি একাধিক ফাইলের ধরণের রূপান্তর করতে চান:find . -name *.ogg -or -name *.wma -exec ffmpeg -i {} {}.mp3 \;
bon

সমস্ত ডাব্লুএমএ ফাইলগুলিকে এমপি 3 এ রূপান্তর করুন এবং সেগুলি মুছার পরে:find . -name *.wma -exec ffmpeg -i {} {}.mp3 \; -exec rm {} \;
পানাগিওটিস

20

উইন্ডোজ জন্য:

এখানে আমি সমস্ত (.mp4) ফাইলগুলিকে (.mp3) ফাইলে রূপান্তর করছি।
সিম্পিডি খুলুন, পছন্দসই ফোল্ডারে যান এবং কমান্ডটি টাইপ করুন।

শর্টকাট: (
alচ্ছিক ) 1. আপনার (.mp4) ফাইল উপস্থিত রয়েছে সেই ফোল্ডারে যান
2. শিফট এবং বাম টিপুন এবং "ওপেন পাওয়ারশেল উইন্ডো এখানে
খুলুন " বা "এখানে কমান্ড প্রম্পট উইন্ডো খুলুন" নির্বাচন করুন
3.. "টাইপ করুন" সেন্টিমিডি [নোট : পাওয়ারশেলের পরিবর্তে সরাসরি সেন্টিমিডি খুললে এই পদক্ষেপটি এড়িয়ে যান]
৪. কমান্ডটি চালান

for %i in (*.mp4) do ffmpeg -i "%i" "%~ni.mp3"

আপনি যদি এটি উইন্ডোজ 10-তে একটি ব্যাচ ফাইলে রাখতে চান তবে আপনাকে %% i ব্যবহার করতে হবে।


17

যে কেউ ব্যাচ ffmpeg দিয়ে যে কোনও কিছু রূপান্তর করতে চায় তবে একটি সুবিধাজনক উইন্ডোজ ইন্টারফেস রাখতে চায়, আমি এই ফ্রন্ট-এন্ডটি বিকাশ করেছি:

https://sourceforge.net/projects/ffmpeg-batch

এটি একটি উইন্ডো ফ্যাশন ইন্টারফেস, অগ্রগতি বার এবং সময় বাকী তথ্য, এফএফপিপি ব্যবহার করার সময় আমি সর্বদা মিস করি এমন বৈশিষ্ট্যগুলিকে এফএফপেমেগ যুক্ত করে।


ঠিক আছে এটি একটি দুর্দান্ত প্রকল্প! আমি এক ঘন্টা ধরে আমার লেজটি তাড়া করে যাচ্ছিলাম উইন্ডোজের আপেক্ষিক আউটফিলের পথটি গ্রহণ করার জন্য ffmpeg পাওয়ার চেষ্টা করে এবং এটি প্রতারণার মতো অনুভব করে। সম্পাদনা: আমি .xwm কে .flac
semtex41

6

আপনার যদি জিএনইউ সমান্তরাল থাকে তবে নীচে থাকা সমস্ত .AVI ফাইলগুলিকে vid_dirসমান্তরালে এমপি 4 তে রূপান্তর করতে পারবেন , আপনার সিপিইউ কোরগুলির একটি ছাড়া সমস্ত ব্যবহার করে

find vid_dir -type f -name '*.avi' -not -empty -print0 |
    parallel -0 -j -1 ffmpeg -loglevel fatal -i {} {.}.mp4

থেকে / বিভিন্ন ফর্ম্যাট রূপান্তর করতে, পরিবর্তন '*.avi'বা .mp4প্রয়োজন অনুসারে। গনুহ সমান্তরাল একটি প্যাকেজ যা সাধারণত বলা হয় সবচেয়ে লিনাক্স ডিস্ট্রিবিউশন 'সংগ্রহস্থলগুলিতে তালিকাভুক্ত করা হয় parallel


!কোনও ব্যাশের ওয়ান-লাইনারের শেষে যোগ করে আপনি কি এটি করতে পারবেন না ?
22:38 '

3

আমি জানি এটি অনর্থক হতে পারে তবে আমি এই স্ক্রিপ্টটি ব্যাচ রূপান্তরকারী ফাইলগুলিতে ব্যবহার করি।

old_extension=$1
new_extension=$2

for i in *."$old_extension";
  do ffmpeg -i "$i" "${i%.*}.$new_extension";
done

এটিকে আরও নমনীয় করে তুলতে এটিতে 2 টি আর্গুমেন্ট লাগে:

  1. আপনি যে এক্সটেনশনটি থেকে রূপান্তর করতে চান
  2. আপনি রূপান্তর করতে চান নতুন এক্সটেনশন

আমি এর জন্য একটি উপনাম তৈরি করেছি তবে আপনি এটি নিজেও এটির মতো ব্যবহার করতে পারেন:

sh batch_convert.sh mkv mp4

এটি সমস্ত mkvফাইলগুলিকে ফাইলগুলিতে রূপান্তরিত করবে mp4

আপনি এটি দেখতে পারেন আরও কিছুটা বহুমুখী। যতক্ষণ ffmpegনা এটি রূপান্তর করতে পারে আপনি কোনও দুটি এক্সটেনশন নির্দিষ্ট করতে পারবেন।



3

এখানে কোড গল্ফের মতো কিছুটা পাওয়া, তবে এখন পর্যন্ত প্রায় সব উত্তরই বাশ (একাকী একক সেন্টিমিডিকে বাদ দিয়ে), এখানে উইন্ডোজ ক্রস-প্ল্যাটফর্ম কমান্ড যা পাওয়ারশেল ব্যবহার করে (কারণ দুর্দান্ত)

ls *.avi|%{ ffmpeg -i $_ <ffmpeg options here> $_.name.replace($_.extension, ".mp4")}

আপনার উত্স ফুটেজের সাথে যা কিছু মেলে আপনি * .avi পরিবর্তন করতে পারেন।


3

অবশ্যই, এখন পাওয়ারশেল বরাবর এসেছে, বিশেষভাবে একেবারে খুব সহজ কিছু তৈরির জন্য তৈরি designed

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

প্রথমত, আপনি বর্তমান ডিরেক্টরিতে সমস্ত ফাইল তালিকাভুক্ত করতে চান, সুতরাং, আমরা এর সাথে শুরু করব:

ls

আপনি ls -Recurseযদি পুনঃনির্বাচিতভাবে সমস্ত ফাইলকেও উপ-ডিরেক্টরিতে রূপান্তর করতে চান তবে আপনিও ব্যবহার করতে পারেন।

তারপরে, আমরা সেগুলি কেবলমাত্র সেই ধরণের ফাইলগুলিতে ফিল্টার করব যা আমরা রূপান্তর করতে চাই - যেমন "এভিআই"।

ls | Where { $_.Extension -eq ".avi" }

এর পরে, আমরা এফএফএমপেকে এই তথ্যটি একটি মাধ্যমে প্রেরণ করব ForEach

এফএফপিপিগের ইনপুটটির জন্য, আমরা এটি ব্যবহার করব FullName- এটিই ফাইলের পুরো পথ। আর FFmpeg এর আউটপুট জন্য আমরা ব্যবহার করব Name- কিন্তু প্রতিস্থাপন.avi সঙ্গে শেষে .mp3। সুতরাং, এটি এর মতো কিছু দেখাবে:

$_.Name.Replace(".avi", ".mp3")

সুতরাং, আসুন এটি সমস্ত একসাথে রাখা এবং এটি ফলাফল:

ls | Where { $_.Extension -eq ".avi" } | ForEach { ffmpeg -i $_.FullName $_.Name.Replace(".avi", ".mp3") }

এটি FFmpeg এর মাধ্যমে সমস্ত ".avi" ফাইলগুলিকে ".mp3" ফাইলগুলিতে রূপান্তর করবে, আপনি কোন ধরণের রূপান্তর চান তা নির্ধারণের জন্য কেবল তিনটি বিষয় উদ্ধৃতিতে প্রতিস্থাপন করুন এবং এফএফপিপেগে অন্য কোনও যুক্তি যুক্ত করতে নির্দ্বিধায় অনুভব করবেন ForEach

আপনি এটিকে আরও একধাপ এগিয়ে নিয়ে যেতে পারেন এবং Remove-Itemপুরানো ফাইলগুলি স্বয়ংক্রিয়ভাবে মোছার জন্য শেষ পর্যন্ত যুক্ত করতে পারেন।

যদি ffmpegআপনার পথে না থাকে এবং এটি প্রকৃতপক্ষে আপনি বর্তমানে যে ডিরেক্টরিটিতে রয়েছেন তা ./ffmpegঠিক এর পরিবর্তে সেখানে লিখুনffmpeg

আশা করি এটি যে কাউকে সাহায্য করবে।


1
পাওয়ারশেল দুর্দান্ত, ধন্যবাদ! অন্য কেউ যদি এটি চালাতে সমস্যায় পড়ে: এই কমান্ডটি কোনও .ps1ফাইলের মধ্যে রাখুন, একটি .batফাইল নয়। আপনি Set-ExecutionPolicy RemoteSignedআগে কখনও পিএস স্ক্রিপ্ট না চালালে আপনাকে প্রশাসক হিসাবে চালাতে হবে।
স্টারপেজ

ঠিক আছে, সাধারণত আমি কেবল পাওয়ারশেলের মধ্যে সরাসরি এটি চালানোর বিষয়ে ভেবেছিলাম, তাই আমি সত্যিই এটির কথা ভাবিনি! ভাল টিপ যদিও!
এবিপারসন

2
for i in *.flac;
  do name=`echo "${i%.*}"`;
  echo $name;
  ffmpeg -i "${i}" -ab 320k -map_metadata 0 -id3v2_version 3 "${name}".mp3;
done

ব্যাচ প্রক্রিয়া flacফাইলগুলিতে mp3(স্পেস সহ ফাইলের নামের জন্য নিরাপদ) ফাইলগুলি [1] [2] ব্যবহার করে


2

Windows:

@echo off
for /r %%d in (*.wav) do (
    ffmpeg -i "%%~nd%%~xd" -codec:a libmp3lame -c:v copy -qscale:a 2 "%

%~nd.2.mp3"
)

এটি মানের 2 এর পরিবর্তনশীল বিটরেট, আপনি চাইলে 0 এ সেট করতে পারেন তবে যদি আপনার কাছে সত্যিকারের ভাল স্পিকার সিস্টেম না থাকে তবে এটি মূল্যহীন ইমো না


1

আপনি যদি ffmpegX এর সাথে ব্যাচ প্রক্রিয়াটির জন্য কোনও গ্রাফিকাল ইন্টারফেস চান তবে দ্রুত ব্যাচার চেষ্টা করুন । এটি নিখরচায় রয়েছে এবং আপনার যে ফাইলগুলিকে বাদ দেয় সেগুলি রূপান্তর করতে আপনার শেষ ffmpegX সেটিংস নেবে।

মনে রাখবেন যে আপনি দ্রুত বাচারে ফোল্ডারগুলি ড্র্যাগ-ড্রপ করতে পারবেন না। সুতরাং ফাইলগুলি নির্বাচন করুন এবং তারপরে দ্রুত ব্যাচারের মাধ্যমে এগুলি রাখুন।


2
"কুইক বাচার" সফ্টওয়্যারটি কেবল ম্যাক ওএসের জন্য
মোহাম্মদ এলনেসার

1

কেবলমাত্র এটিই আমার জন্য কাজ করেছে, দয়া করে বিজ্ঞপ্তি পাবেন যে আপনি "newfiles" ফোল্ডারটি ম্যানুয়ালি তৈরি করতে হবে যেখানে ffmpeg.exe ফাইলটি অবস্থিত।

রূপান্তর ফাইলগুলিকে .Wav অডিও কোডে:

for %%a in ("*.*") do ffmpeg.exe -i "%%a" "newfiles\%%~na.wav"
pause

অর্থাত আপনি .wav পরিবর্তনের সব .mp3 ফাইল রূপান্তর করতে চান তাহলে ("*.*")করতে ("*.mp3")

এই স্ক্রিপ্টটির লেখক হলেন:

https://forum.videohelp.com/threads/356314-How-to-batch-convert-multiplex-any-files-with-ffmpeg

আশা করি এটি সাহায্য করেছে 🙏


0

এটি বর্তমান ডিরেক্টরি থেকে সমস্ত jpg ফাইল থেকে এমপি 4 ভিডিও তৈরি করবে।

echo exec("ffmpeg -framerate 1/5 -i photo%d.jpg -r 25 -pix_fmt yuv420p output.mp4");

0

এবং উইন্ডোজ জন্য, এটি কাজ করে না

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec mp3 "%~nG.mp3"

এমনকি যদি আমি সেগুলি দ্বিগুণ করি %

আমি এমনকি পরামর্শ দিতে হবে:

-acodec ***libmp3lame***

এছাড়াও:

FOR /F "tokens=*" %G IN ('dir /b *.flac') DO ffmpeg -i "%G" -acodec libmp3lame "%~nG.mp3"

এটি কি কোনও উত্তর, না উত্তর হিসাবে একটি নতুন প্রশ্ন পোস্ট করার চেষ্টা? পরবর্তী ক্ষেত্রে, দয়া করে ব্যাকগ্রাউন্ডের জন্য এখানে আবার লিঙ্ক করা সত্ত্বেও, পরিবর্তে সম্পূর্ণ নতুন প্রশ্ন তৈরি করুন।
ট্রিপলি

0

এটিই আমি ব্যাচকে এভিআই রূপান্তর করতে 1280x এমপি 4 ব্যবহার করি

FOR /F "tokens=*" %%G IN ('dir /b *.avi') DO "D:\Downloads\ffmpeg.exe" -hide_banner -i "%%G" -threads 8 -acodec mp3 -b:a 128k -ac 2 -strict -2 -c:v libx264 -crf 23 -filter:v "scale=1280:-2,unsharp=5:5:1.0:5:5:0.0" -sws_flags lanczos -b:v 1024k -profile:v main -preset medium -tune film -async 1 -vsync 1 "%%~nG.mp4"

একটি সেন্টিমিডি ফাইল হিসাবে ভাল কাজ করে, এটি চালান, লুপ folder ফোল্ডারে সমস্ত avi ফাইল খুঁজে পায়।

আমার কে কল করুন (আপনার জন্য পরিবর্তন করুন) ffmpeg, ইনপুট নামটি পাস করে, সেটিংসটি শার্পিংয়ের সাথে পুনরুদ্ধারের জন্য। আমার প্রোবগুলিতে সিআরএফ এবং " -b:v 1024k" দরকার নেই ...

আউটপুট ফাইল ইনপুট ফাইল বিয়োগ বিস্তৃতি, নতুন এক্সট্রা হিসাবে এমপি 4 সহ।


0

আমি এই ওয়ান-লাইনারটি লিনাক্সে ফাইলগুলি (সাধারণত এইচ 265) এমন কিছুতে রূপান্তর করতে ব্যবহার করছি যা কোনও সমস্যা ছাড়াই কোডিতে খেলতে পারি:

for f in *.mkv; do ffmpeg -i "$f" -c:v libx264 -crf 28 -c:a aac -b:a 128k output.mkv; mv -f output.mkv "$f"; done

এটি একটি অস্থায়ী ফাইলে রূপান্তর করে এবং তারপরে আসলটি প্রতিস্থাপন করে তাই রূপান্তরিত হওয়ার পরে নামগুলি একই থাকে।


0

এছাড়াও আপনি যদি সাবফোল্ডারগুলিতে একই রূপান্তর চান। এখানে পুনরাবৃত্তির কোড।

for /R "folder_path" %%f in (*.mov,*.mxf,*.mkv,*.webm) do (
    ffmpeg.exe -i "%%~f" "%%~f.mp4"
    )

-1

এটি করার জন্য ছোট পিএইচপি স্ক্রিপ্ট:

#!/usr/bin/env php
<?php
declare(strict_types = 1);
if ($argc !== 2) {
    fprintf ( STDERR, "usage: %s dir\n", $argv [0] );
    die ( 1 );
}
$dir = rtrim ( $argv [1], DIRECTORY_SEPARATOR );
if (! is_readable ( $dir )) {
    fprintf ( STDERR, "supplied path is not readable! (try running as an administrator?)" );
    die(1);
}
if (! is_dir ( $dir )) {
    fprintf ( STDERR, "supplied path is not a directory!" );
    die(1);
}
$files = glob ( $dir . DIRECTORY_SEPARATOR . '*.avi' );
foreach ( $files as $file ) {
    system ( "ffmpeg -i " . escapeshellarg ( $file ) . ' ' . escapeshellarg ( $file . '.mp4' ) );
}

2
ব্যবহারকারী হিসাবে একটি খুব সীমিত সুযোগ উত্তর তাদের মেশিনে পিএইচপি ইনস্টল করা আছে। কমান্ড লাইন এবং ব্যাচ ফাইলের উত্তরগুলি অনেক সহজ এবং খুব কম জটিল।
অধ্যাপক

2
@ পিএফপি পিএইচপি হ'ল এসও - র সবচেয়ে জনপ্রিয় ভাষাগুলির মধ্যে একটি - দ্বিতীয়ত, আই- এস -এর জন্য আইজ্যাকের উত্তরটি কিছুটা বিশ্বাসযোগ্য নয়, এটি আপনার ফাইলগুলির নামটি মূলের চেয়ে অন্য কোনও কিছুতে নামকরণ করতে পারে, উদাহরণস্বরূপ, এটি ফাইলের নামে নতুন লাইন সংরক্ষণ করে না। লিক্সের ব্যাট স্ক্রিপ্টটি আরও খারাপ, এটি নামের সাথে নতুন লাইনের সাথে কোনও ফাইল সম্পূর্ণভাবে IGNORES করে । নিশ্চিত নয় কেন, এমনকি একটি সিনট্যাক্স ত্রুটি বা কিছু নয়, তবে এটি হয় (উইন 10 তে পরীক্ষা করা)। আমার পিএইচপি স্ক্রিপ্টের কোনও সমস্যা নেই, ধন্যবাদ escapeshellarg(), এবং উইন্ডোজ এবং লিনাক্স উভয় ক্ষেত্রেই কাজ করে। যদিও আমি এটি একটি কিনারা ক্ষেত্রে একমত।
hanshenrik

-1

আরও একটি সহজ সমাধান যা এখনও প্রস্তাব করা হয়নি সেগুলি হ'ল xargs:

ls *.avi | xargs -i -n1 ffmpeg -i {} "{}.mp4"

একটি ছোটখাট ক্ষতি হ'ল আউটপুট ফাইলগুলির বিশ্রী নামকরণ (যেমন input.avi.mp4 )। এটির জন্য একটি সম্ভাব্য কাজ হতে পারে:

ls *.avi | xargs -i -n1 bash -c "i={}; ffmpeg -i {} "\${i%.*}.mp4""


শেলচেক.নেটের আপনার উদাহরণগুলি সম্পর্কে কয়েকটি পরামর্শ রয়েছে।
লোগান

mywiki.wooledge.org/ParsingLs যদিও আপনি কেবল প্রতিস্থাপন করতে পারেন lsসঙ্গে printf '%s\n'এখানে।
ট্রিপলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.