ব্যাচ রূপান্তর .mkv থেকে .mp4


10

আমি ব্যাচকে একটি ফোল্ডারের সমস্ত .mkv ফাইলকে VLC দিয়ে .mp4 এ রূপান্তর করতে চাই।

এটির আসল ভিডিও- / অডিও স্ট্রিমটি ব্যবহার করা উচিত এবং যদি সম্ভব হয় তবে .mkv এর .ass সাবটাইটেল। এটি আসলে কোনও রূপান্তর নয়, এটি ধারক পরিবর্তনের মতো - আমার প্লেয়ার এমকেভি ভিডিওগুলি পড়তে পারেন না।

যদি আমি এই রূপান্তরটি হাত দ্বারা করি (ম্যানুয়ালি) এটি কাজ করে তবে আমার কাছে রূপান্তর করতে অনেকগুলি এমকেভি ফাইল রয়েছে, তাই এতে অনেক সময় লাগবে।

এটি করার জন্য আমি একটি ব্যাচের ফাইলের জন্য ইন্টারনেট অনুসন্ধান করেছি এবং আমি কয়েকটি খুঁজে পেয়েছি। আমি তাদের আমার ইচ্ছায় পরিবর্তন করার চেষ্টা করেছি, তবে সমস্ত প্রচেষ্টা আমি একটি এমপি 4 ফাইল তৈরি করেছিলাম যা অডিও স্ট্রিম এবং ভিডিও স্ট্রিমটি পিসিতে আমার সমস্ত মিডিয়া প্লেয়ার দ্বারা রেন্ডার করা যায় না।

সুতরাং কেউ আমাকে কীভাবে ব্যাচের মতো দেখতে বলে দিতে পারে, তাই এটি মূল ভিডিও এবং অডিও স্ট্রিমের সাথে কাজ করে (এবং সম্ভবত .ass সাবটাইটেলগুলি)?


আপনি কোন অপারেটিং সিস্টেমটি চালু আছেন এবং আপনার কি প্রয়োজনীয়ভাবে ভিএলসি ব্যবহার করতে হবে? এছাড়াও, আইএসপি এমপি 4 সাবটাইটেলগুলিকে সমর্থন করে না যতদূর আমার মনে আছে - সেগুলি সম্পর্কে কী করা উচিত?
slhck

পরীক্ষার জন্য আপনি অন্য খেলোয়াড় চেষ্টা করতে পারেন (এমপ্লেয়ার / কেএমপ্লেয়ার / বিএসপ্লেয়ার)
রিমাস রিগো

হ্যান্ডব্রেক, এটাই সব।
স্যাম

@ সাম হ্যান্ডব্রেক ভিডিও এবং অডিও স্ট্রিমগুলিকে পুনরায় এনকোড করবে, ফলস্বরূপ আপনাকে খারাপ মানের সাথে ফেলে। এছাড়াও, এটি ওপি বিশেষত চায়নি।
13'8

উত্তর:


13

mkvtomp4

দেখে মনে হচ্ছে mkvtomp4আপনি কি চান?

ঝামেলাযুক্ত এমকেভি ফাইলগুলিকে এমপুতে রূপান্তর করতে এমপিইজি 4 আইপি বা জিপিএসি এর এমপি 4বক্স, এমকেভ্টোলনিক্স এবং ffmpeg ব্যবহার করে । রূপান্তরটি ভিডিওটিকে পুনরায় এনকোড করে না এবং কেবল এটি অ্যাকড কোডেক ব্যবহার না করলে অডিওটিকে পুনরায় এনকোড করে (কেউ --audio-codec ব্যবহার করে এই আচরণটি ওভাররাইড করতে পারে)।

আপনি গুগল কোড পৃষ্ঠাতে উইন্ডোজ এবং লিনাক্স সংস্করণগুলি ডাউনলোড করতে পারেন। যদিও আপনার অতিরিক্ত সফ্টওয়্যার লাগবে।

উইন্ডোজ বা লিনাক্স উভয়ের জন্য ডাউনলোডের জন্য সাইটগুলি পরীক্ষা করুন। ওএস এক্স-এ, আপনার কেবল হোমব্রিউbrew install mkvtoolnix mp4box থাকলেই হবে ।

এটি যদিও আপনার সাবটাইটেলগুলি অনুলিপি করবে না। আপনার একটি অতিরিক্ত পদক্ষেপের প্রয়োজন হবে।


FFmpeg ব্যাচ

যদি mkvtomp4 আপনার জন্য কাজ না করে, একটি সাধারণ এফএফএমপিগ ব্যাচ ফাইলও এটি করতে পারে। উইন্ডোজের জন্য, আপনি জেরানো বিল্ডগুলি ডাউনলোড করতে পারেন । লিনাক্সে, প্যাকেজ উত্স থেকে FFmpeg পরীক্ষা করুন। ওএস এক্সে, ব্যবহার করুন brew install ffmpeg

তারপরে, কেবল কল করুন:

ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4

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

* নিক্সে, আপনি নিম্নলিখিতটি করতে পারেন। কেবল একটি ফাইল তৈরি করুন convert.sh:

#!/bin/bash
find /path/to/input/folder -iname '*.mkv' -print0 | while read -d '' -r file; do
    ffmpeg -i "$file" -c:v copy -c:a copy ${file%%.mkv}.mp4
done

আপনার ভিডিও ফোল্ডারে পাথটি এখানে প্রতিস্থাপন করুন। এটি দিয়ে এক্সিকিউটেবল করুন chmod +x convert.sh, তারপরে এটি চালান ./convert.sh

উইন্ডোজে আপনার সম্ভবত দুটি ব্যাচ ফাইলের প্রয়োজন ( এখান থেকে নির্লজ্জ প্লাগ ), একটি হ'ল startconvert.bat:

for %%i IN (*.mkv) DO (convert-to-mp4.bat "%%i") 
pause

এবং রূপান্তর সম্পাদন করে এমন একটি:

IF EXIST "%1.mp4" GOTO exit

@echo Conversion for %1 started on %DATE% %TIME% 
ffmpeg -i %1 -c:v copy -c:a copy %1.mp4

:exit 
@echo %1.mp4 already exists

ভিডিও ফোল্ডারে উভয়টি সংরক্ষণ করুন। startconvert.batআপনি যে ফোল্ডারটি থেকে রূপান্তর শুরু করতে চান তা কেবল চালান ।


সাবটাইটেল

আপনি যদি সাবটাইটেলগুলি যুক্ত করতে চান তবে নিম্নলিখিতগুলি আপনার পক্ষে কাজ না করলে আপনার একটি ম্যানুয়াল পদ্ধতি প্রয়োজন হতে পারে:

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

সাবটাইটেলগুলি বের করতে, ব্যবহার করুন:

mkvextract tracks input.mkv 3:subtitles.srt

এটি ধরে নেওয়া হচ্ছে যে আপনার ফাইলটিতে সত্যই ট্র্যাক আইডি নম্বর 3-এ সাবটাইটেল রয়েছে এবং সেগুলি এসআরটি ফর্ম্যাটে রফতানি করা যেতে পারে। ট্র্যাক 3-এ কোনও ফাইলের সত্যই সাবটাইটেল রয়েছে কিনা তা পরীক্ষা করতে ব্যবহার করুন mkvmerge -i input.mkv

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

mp4box -add input.mp4 -add subtitles.srt -new output.mp4

রেকর্ডের জন্য, আমি ওএস এক্স-এ এফএম্পপিগ এবং সাবটাইটেল নিষ্কাশন পরীক্ষা করেছি এবং এটি নির্বিঘ্নে কাজ করেছে।
slhck

আমি উইন্ডোজ জন্য ffmpeg ব্যবহার। তবে এমন একটি ব্যাচ রয়েছে যাতে এটি স্বয়ংক্রিয়ভাবে ফোল্ডারের সমস্ত ফাইলকে একই ফাইলের নাম সহ এমপিপুতে রূপান্তরিত করে / মুক্স করে? অথবা হতে পারে এমন একটি ব্যাচ যা ফাইলটিকে টেনে এনে ছেড়ে দেয়

2

এটি স্লহ্যাক উত্তর দেওয়া অংশের একটি টুইট (এবং ধন্যবাদ, স্লহ্যাক!) কারণ আমি দেখতে পেয়েছি যে কমান্ড সর্বশেষের (এই লেখায়) ffmpeg এর জন্য কাজ করে নি - সম্ভবত সংস্করণগুলির মধ্যে পরামিতিগুলি পরিবর্তিত হয়েছে?

উইন্ডোজ 7 তারিখে, ব্যবহার ffmpeg v.20130103-Git-9e36d9e-win64 স্ট্যাটিক (ডিকম্প্রেস এটা 7zip উপযোগ সঙ্গে) মাধ্যমে পাওয়া http://ffmpeg.zeranoe.com/builds/ মাধ্যমে ঘুরে http://ffmpeg.org /download.html , নিম্নলিখিত কমান্ড একটি .mov ফাইল (একটি আইফোন থেকে নেওয়া) একটি এমপি 4 ফাইলে রূপান্তরিত করেছে:

ffmpeg -i test.mov -vcodec copy -acodec copy test.mp4

আমি দেখতে পেলাম যে এর .mpi অংশটি .avi তে পরিবর্তন করে, এটি একটি .avi পাত্রে পরিবর্তন করতে। যে কোনও একটি টার্গেটের ধারক সহ, এই "-ভোডেক কপি -কোডেক কপি" পরামিতিগুলি কেবল নতুন ধারক (টার্গেটে) উত্স স্ট্রিমগুলিকে অনুলিপি করে বলে মনে হচ্ছে, সুতরাং এটি নিখুঁত রূপান্তর (এবং আমি অনুমান করছি যে এটির ক্ষেত্রে কেসটি ঘটবে) লক্ষ্য পাত্রে বিভিন্ন)।

ব্যাচ স্ল্যাকের এই টুইটগুলি আমার পক্ষেও কাজ করেছিল:

callConvert.bat:

for %%i IN (*.mov) DO (convert.bat "%%i")
pause

convert.bat:

IF EXIST %1.mov GOTO exit

@echo Conversion for %1 started on %DATE% %TIME% 
ffmpeg -i %1 -vcodec copy -acodec copy %1.avi

:exit 
@echo %1.avi already exists

1
-c:aএবং -acodec, -c:vএবং এবং এর মধ্যে কোনও পার্থক্য নেই -vcodec। প্রকৃতপক্ষে আমি আজও প্রাক্তনটি ব্যবহার করছি, এটি প্রস্তাবিত বাক্য গঠন এবং এফএফপিপেগ ডকুমেন্টেশনে উভয়েরই উল্লেখ রয়েছে । নোট করুন যে ধারকটিকে এভিআইতে রূপান্তর করা অনেকগুলি ভিডিও এবং অডিও কোডেকগুলির জন্য ভেঙে যেতে পারে, কারণ এভিআই ফাইলগুলির ভবিষ্যদ্বাণীমূলক কোডিংয়ের সমর্থন নেই (যা এইচ .২64 video ভিডিও ব্যবহার করে - আইফোন আপনাকে যা দেয়)। আপনি যদি এমপি 4 বা এমওভির ধারকটিকে লক্ষ্য হিসাবে ব্যবহার না করেন তবে পুনরায় এনকোড করা ভাল।
13'9

"যদি বিদ্যমান% 1.Mov GOTO প্রস্থান" এর পরিবর্তে "% 1.avi" (বা লক্ষ্য বিন্যাসটি উত্স বিন্যাসের পরিবর্তে যাই হোক না কেন) পড়তে হবে, না? এটি ছাড়াও এটি আমার পক্ষে দুর্দান্ত কাজ করেছে, আপনাকে ধন্যবাদ!
kjosh

0

পুরানো প্রশ্ন, তবে রেকর্ডটির জন্য আমার উত্তর এখানে। এমপি 4 সাবটাইটেলগুলি ভিডিও ফ্রেমের অংশ না তৈরি করতে পারে না তবে আমি এমপিভি ফাইলগুলি এমপি 4 তে রূপান্তর করি:

foreach($inputFile in get-childitem -recurse -Filter *.mkv) {
    $outputFileName = [System.IO.Path]::GetFileNameWithoutExtension($inputFile.FullName) + ".mp4";
    $outputFileName = [System.IO.Path]::Combine($inputFile.DirectoryName, $outputFileName);

    $progDir = ${env:ProgramFiles(x86)};
    if ($progDir -eq $null) {
        $progDir = $env:ProgramFiles;
    }

    $processName = $progDir + "\VideoLAN\VLC\vlc.exe";
    $processArgs = "-I dummy -v `"$($inputFile.FullName)`" --sout=#transcode{}:standard{access=`"file`",mux=`"mp4`",dst=`"$outputFileName`"} vlc://quit"

    start-process $processName $processArgs -wait
}

এটিকে mkv2mp4.ps1 হিসাবে সংরক্ষণ করুন এবং আপনি যে ফোল্ডারে কাজ করছেন তা এটিকে ফেলে দিন। রাইট ক্লিক করুন এবং "পাওয়ারশেল খুলুন" এবং এটি তার কাজটি করবে।

এই প্রথম আমি পাওয়ারশেলের দিকেও তাকালাম (এবং শেষ আমি আশা করি - এমএস কেন কেবল বাশকে বন্দর করতে পারেনি ?!) তবে এটি আমার পক্ষে কাজ করে এবং আমি এখানে যে কোড পেয়েছি তার উপর ভিত্তি করে: https: // wiki .videolan.org / How_to_Batch_Encode / # PowerShell


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