হ্যান্ডব্রেক কীভাবে ক্যাপচারের সময় / তৈরির সময় সংরক্ষণ করবেন?


14

হ্যান্ডব্রেক একটি দুর্দান্ত ভিডিও সংক্ষেপণ সরঞ্জাম, তবে কোনও ভিডিও সংকোচনের পরে এটি মূল ক্যাপচারের সময়টি সংরক্ষণ করবে বলে মনে হয় না। কোন ধারনা কিভাবে এটা ঠিক করতে হবে?


@ এসএলএইচএইচ হ্যাঁ আমার অর্থ সৃষ্টির সময়। আমি আমার ভিডিওগুলি পরিচালনা করতে লাইটরুম ব্যবহার করি এবং সংক্ষেপণের পরে ক্যাপচার / তৈরির সময় পরিবর্তিত সময় হয়ে যায়।
পিক্সেলফ্রেক

উত্তর:


21

FFmpeg ব্যবহার করে ভিডিওটি পুনরায় এনকোড করার প্রয়োজন ছাড়াই আপনি বিদ্যমান মেটাডেটা এক ফাইল থেকে অন্য ফাইলটিতে অনুলিপি করতে পারেন । এটি মূলত এক সেকেন্ড সময় নেয়। এটি করার জন্য, তিনটি ফাইল ধরে নেওয়া যাক:

  • in.mp4 - রূপান্তর করার আগে আসল ফাইল
  • out.mp4 - হ্যান্ডব্রেক রূপান্তরের পরে ফাইল
  • fixed.mp4 - "সংশোধন" মেটাডেটা সহ ফাইল

নতুন ফাইলটিতে সম্পূর্ণ মেটাডেটা রেকর্ডটি অনুলিপি করতে FFmpeg কমান্ডটি হ'ল:

ffmpeg -i in.mp4 -i out.mp4 -map 1 -map_metadata 0 -c copy fixed.mp4

বাক্যবিন্যাসের ব্যাখ্যা:

এটি ভেঙে ফেলার জন্য, এটি নিম্নলিখিতগুলি করে:

  • দুটি ইনপুট ফাইল ( in.mp4এবং out.mp4) নিন, যা যথাক্রমে 0 এবং 1 আইডি নির্ধারিত হয়।
  • ফাইল 1 থেকে আউটপুট ( -map 1) এ কেবল ভিডিও / অডিও / সাবটাইটেল স্ট্রিমগুলি মানচিত্র করুন , তাই আমরা ইতিমধ্যে রূপান্তরিত বিট স্ট্রিমগুলি গ্রহণ করি
  • ফাইল 0 থেকে আউটপুট ( -map_metadata 0) পর্যন্ত কেবল মেটাডেটা মানচিত্র করুন
  • -c copyভিডিওটি পুনরায় এনকোডিংয়ের পরিবর্তে সমস্ত বিটস্ট্রিমগুলি অনুলিপি করতে অনুলিপি কোডেক ( ) ব্যবহার করুন।

এর পরে, আপনি অবশ্যই পুনরায় নামকরণ fixed.mp4করতে পারেন out.mp4


প্রমাণ:

উদাহরণ হিসাবে, এখানে আমার আসল ফাইলটির মেটাডেটা রেকর্ডের অংশ:

$ mediainfo in.mp4 | grep "Encoded date" | head -n 1
Encoded date : UTC 2012-01-08 11:16:19

হ্যান্ডব্রেক রূপান্তর হওয়ার পরে ফাইলটি এখানে:

$ mediainfo out.mp4 | grep "Encoded date" | head -n 1
Encoded date : UTC 2012-12-24 11:39:35

মেটাডেটা ম্যাপিংয়ের পরে এখানে চূড়ান্ত ফাইলটি রয়েছে:

$ ffmpeg -i in.mp4 -i out.mp4 -map 1 -map_metadata 0 -c copy fixed.mp4
[…]

$ mediainfo fixed.mp4 | grep "Encoded date" | head -n 1
Encoded date : UTC 2012-01-08 11:16:19    

আপনি যদি এফএফপিপেইগ দিয়ে সব করতে চান:

আসলে, আপনি যদি এফএফপিপেইগ ব্যবহার করতে পারেন তবে হ্যান্ডব্রেকটি ব্যবহার করার দরকার নেই, যা হ্যান্ডব্রেক যেভাবেই নির্ভর করে। সবচেয়ে সহজ ক্ষেত্রে আপনি আপনার রূপান্তরটি এইভাবে করতে পারেন:

ffmpeg -i in.mp4 -c:v libx264 -crf 23 -c:a aac -map_metadata 0 out.mp4

এটি x264 এনকোডার এবং এএসি অডিও সহ ইনপুটটিকে আউটপুট ফাইলে রূপান্তর করবে, মূল মেটাডেটা অনুলিপি করবে। আউটপুটটির গুণমান পরিবর্তন করতে, আপনি:

  • ভিডিওর জন্য সিআরএফ মান পরিবর্তন করুন। নিম্ন মানে আরও ভাল মানের। 23 ডিফল্ট এবং 18 এর নীচের কিছু সম্ভবত দৃষ্টিশক্তিহীন হবে।
  • অডিওর জন্য বিটরেট পরিবর্তন করুন। দেখুন এএসি এনকোডিং নির্দেশিকা আরও তথ্যের জন্য।

আরও জন্য FFmpeg উইকিতে x264 এনকোডিং গাইড পড়ুন ।


1
বাহ, এটি একটি দুর্দান্ত কাজ, যদিও কিছুটা ভয়ঙ্কর মনে হচ্ছে, হ্যাণ্ডব্রেক এই দৃশ্যের পিছনে কাজটি করুক। ধন্যবাদ!
পিক্সেলফ্রিয়াক

মেটাডেটা ট্রান্সফার কমান্ডটি কাজ করে, তবে রূপান্তরটি করার জন্য সর্বশেষ কমান্ডটি আমাকে Unknown encoder 'libfaac'ত্রুটি দিয়েছে
পিক্সেলফ্রাইক

তাহলে আপনার ffmpeg এফএএসি সমর্থন দিয়ে সংকলিত হয় না। -c:a aac -strict experimentalপরিবর্তে চেষ্টা করুন।
ছোঁয়া

5

দুর্ভাগ্যক্রমে মনে হচ্ছে হ্যান্ডব্র্যাকটি নিজে থেকে এটি করতে পারে না, তবে একইভাবে ffmpeg উদাহরণস্বরূপ, টাইমস্ট্যাম্পগুলি touchইউনিক্স কমান্ডটি ব্যবহার করে সংক্ষেপণের পরে মূল থেকে অনুলিপি করা যেতে পারে :

touch -r MVI_1234.MOV compressed_MVI_1234.m4v

এটি প্রদত্ত রেফারেন্স ফাইলের মতো সংকুচিত ফাইলের টাইমস্ট্যাম্পটি সেট করবে।


1
এটি ফাইলের টাইমস্ট্যাম্প সেট করবে, হ্যাঁ, তবে কেবল ফাইল সিস্টেমে। EXIF ডেটাতে সঠিক "তারিখ / সময় মূল" টাইমস্ট্যাম্প থাকবে না।
স্টিফেন শ্রাউগার

3

আমি এটি করার একটি সহজ উপায় খুঁজে পেয়েছি Adapter: একটি আলাদা সফটওয়্যার ব্যবহার করে : http://www.macroplant.com/adapter/

এটিতে হ্যান্ডব্রেকের মতো সমস্ত উন্নত সেটিংস নেই তবে এটি কাজ করে (এছাড়াও ffmpeg ব্যবহার করে) এবং আমার প্রয়োজন মেটাটাটা ধরে রাখে।


1
আমি মনে করি না অ্যাডাপ্টার এটি করতে সক্ষম। আমি সবেমাত্র নতুন সংস্করণটি পরীক্ষা করেছি এবং মেটাডেটা ধরে রাখার জন্য সেটিংসটি কোথাও খুঁজে পাচ্ছি না। অতিরিক্ত হিসাবে, এটি সমস্ত ভিডিও ফাইলের ধরণের যেমন এমটিএস ইত্যাদিতে রূপান্তরিত করে বলে মনে হচ্ছে না
জেজেজে

খুব খারাপ এটি সনি'র এম 2 টি ফর্ম্যাটের সাথে সামঞ্জস্যপূর্ণ নয়
ডিয়েগো ভিয়েরা

2

আমি ম্যাকোস ইয়োসেমাইট এবং হ্যান্ডব্রেকব্যাচ ব্যবহার করছি - ফাইলগুলি রূপান্তর করতে এটি ব্যবহার করুন, তবে "পছন্দসমূহ" মেনুতে "ফাইল তৈরি এবং পরিবর্তনের তারিখগুলি রাখুন" বক্সে ক্লিক করুন।

তারপরে, আমি লাইটরুম 5 এ ভিডিওগুলি আমদানি করি তবে তারা এখনও তৈরির তারিখ রাখে না। তবে, সবচেয়ে গুরুত্বপূর্ণ, ফাইলগুলি সঠিক অনুসন্ধানের তারিখ সহ ফাইন্ডারে প্রদর্শিত হয়। তাই আমি লাইটরুমের লাইব্রেরিতে all মেটাডেটা (ডান ডায়ালগ কলাম) → ক্যাপচার সময় File ফাইলের তৈরির তারিখে পরিবর্তন All সমস্ত পরিবর্তন করে তাদের সকলকে নির্বাচন করেছি।

আমার 850 টি পুরানো পারিবারিক ভিডিও রয়েছে - আমার 100 টি ব্যাচে এই প্রক্রিয়াটি করতে হয়েছিল Hand অনেক ফাইল সহ হ্যান্ডব্রেক ক্র্যাশ।


ভাল সন্ধান করুন, নিজেকে এই অ্যাপটি অনেক ব্যবহার করে দেখতে পারেন।
calum_b

নোট করুন যে অ্যাপটি আর রক্ষণাবেক্ষণ করা হয় না : osomac.com/2013/08/08/andbrake-adds-real-batch-processing
slhck

1

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

কোডটি আমার প্রথম যথাযথ বাশ স্ক্রিপ্ট হিসাবে সম্ভবত নিকটতম হতে পারে না তবে এটি আমার পক্ষে বেশ দ্রুত এবং স্থিতিশীল ছিল, তাই এখানে চলে যায়:

#!/bin/bash
#Sets IFS to \n to allow for filenames with spaces
IFS=$'\n'

#Source directory and converted direcotry
dir1=$1
dir2=$2

#Array with source filepaths
srcf=()
#Array with converted filepaths
cnvf=()

#Adds filepaths from the source directory to srcf array
for file in $(ls -1 $dir1); do
    srcf+=("$dir1/$file")
done
#Adds filepaths from the converted directory to cnvf array
for file in $(ls -1 $dir2); do
    cnvf+=("$dir2/$file")
done

#Checks if source and convert folders have the same number of files
if [ ${#srcf[*]} -eq ${#cnvf[*]} ]
then
    #Counter variable
    fnum=0
    #Loops through the arrays and runs touch command on pairs of files to transfer the metadata
    while [ $fnum -lt ${#srcf[*]} ]; do
        echo $fnum
        echo ${srcf[$fnum]} ${cnvf[$fnum]}
        touch -r ${srcf[$fnum]} ${cnvf[$fnum]}
        ((fnum++))
    done
else
    echo "The provided paths do not have the same number of files. Both paths must have the same number of files in the same order."
fi

চালানোর জন্য: sudo bash script.sh /sourcedir /converteddir


1

আপনি যদি ফাইল-স্তরের পরিবর্তনের সময় বলতে চান তবে আমারও একই সমস্যা ছিল এবং এক্সিফটোল দিয়ে এটি পুনরুদ্ধার করতে সক্ষম হয়েছি

exiftool -tagsFromFile input.mp4 -extractEmbedded -all:all -FileModifyDate -overwrite_original output.mp4

এই মেটাডাটা নেয় এবং FileModifyDateথেকে input.mp4এবং কপি এটি output.mp4

এই স্বয়ংক্রিয় হিসাবে আমি ট্রান্সকোড ফাইল সংখ্যক ছিল, আমি নামক একটি সরঞ্জাম তৈরি Shrinkwrap যে সঙ্গে প্রথম ট্রান্সকোড FFmpeg (আমি দূরে handbrake থেকে কারণ আরো মেটাডাটা সংরক্ষণ করা প্রয়োজন এর সরানো), তারপর exiftool সঙ্গে পরিমার্জন টাইমস্ট্যাম্প recovers।


0

অনেক অনুসন্ধানের পরে, আমি বেশিরভাগ আমার নতুন হ্যান্ডব্রেক-সংক্ষেপিত ভিডিও ফাইলগুলির তৈরি / সংশোধিত তারিখটি ওভাররাইট করতে সঠিক তারিখ তৈরি / সংশোধিত সহ পুরানো ভিডিও ফাইলগুলি ব্যবহার করা ছেড়ে দিয়েছি। যেহেতু আমার বেশিরভাগ ভিডিওর ফাইলের তারিখ / সময় রয়েছে তাই আমি পরীক্ষা করে কাজ করার দুটি পদ্ধতি পেয়েছি। প্রথম এবং সর্বোত্তম হ'ল অ্যাডভান্সড রেনামারের টাইমস্ট্যাম্প পদ্ধতিটি ব্যবহার করা, যা কেবল ফাইলের নাম নয়, ফাইলের তারিখ পরিবর্তন, তৈরি এবং অ্যাক্সেস করতে পারে। https://www.advancedrenamer.com/download

আমি একটি পাওয়ারশেল স্ক্রিপ্টও পেয়েছি https://www.michaelmiklis.de/set-creation-and-modication-date-from-filename/ যা অন্য ফাইলের নাম / তারিখের ফর্ম্যাটের জন্য প্রোগ্রামার দ্বারা অভিযোজিত হতে পারে। বর্তমান অবস্থাতে এটি কেবলমাত্র তখনই কাজ করে যদি ফাইলের নামটি যেমন উদাহরণ হিসাবে রয়েছে ঠিক তেমন কাঠামোযুক্ত হয়।

ভাগ্যক্রমে ফাইল নামটিতে সংশোধিত তারিখ ব্যতীত আমার ভিডিওর সংখ্যা কম হ'ল আমি নিজে নিজে এগুলি পরিবর্তন করতে পারি, খুব বেশি সময় লাগবে না।

আমি ffmpeg ব্যবহার করার চেষ্টা করেছি, তবে এর মানচিত্র_মেডাটাটা কমান্ড কেবল ফাইলের ভিতরে ডেটা পরিবর্তন করে, তারিখ পরিবর্তিত হয় না, ফাইলটি নিজেই তৈরি করে created এই জাতীয় অভ্যন্তরীণ মেটাডাটা হ্যান্ডব্রেক ইতিমধ্যে যাইহোক ভাল করে।


0

মাইএফএফম্পেগ প্রোগ্রামটি এটি খুব ভাল করে। এর বিকল্পগুলিতে উত্স ফাইল থেকে মূল তৈরি / পরিবর্তিত তারিখ রাখার বিকল্প রয়েছে ।

আমি এটি সন্ধান করছিলাম কারণ আমার একটি হোম প্লাস্টিক সার্ভারে আমার ভিডিও রয়েছে এবং ফাইলগুলি তৈরির তারিখ দ্বারা সংগঠিত করা হয়, আপনি যদি কোনও নির্দিষ্ট বছর থেকে স্টাফ দেখতে চান তবে এটি খুব কার্যকর।

দুর্ভাগ্যক্রমে এটি একটি নিখরচায় বিকল্প নয়, বর্তমানে 20 ইউরো বা প্রায় 21 মার্কিন ডলার ব্যয়। আপনাকে লাইসেন্স কেনার আগে তাদের 10 টি ব্যবহারের জন্য একটি ট্রায়াল রয়েছে। অবাক করা কিছু ফ্রি ffmpeg জিইউআই নেই বা এই বিকল্পটি যুক্ত করুন।


0

আমি আমার অবিশ্বাস্যভাবে বড় GoPro MP4 ভিডিওগুলিকে H.264 এ সংকুচিত করার সময় আমি তৈরির তারিখ বজায় রাখার চেষ্টা করি।

আমি হ্যান্ডব্র্যাকব্যাচ প্রোগ্রামটি পেয়েছি । এটি তৈরির তারিখ (মেটাডেটা) রাখার সময় আমার একবারে 1000 টিরও বেশি ফাইল সংকোচনের প্রয়োজন what

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


নোট করুন যে হ্যান্ডব্র্যাকব্যাচটি আর রক্ষণাবেক্ষণ করা হয় না : osomac.com/2013/08/08/andbrake-adds-real-batch-processing
slhck
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.