কীভাবে অনেক .ts ফাইল অর্ডার করবেন এবং মার্জ করবেন?


6

আমার কাছে অনেকগুলি ছোট ফাইল রয়েছে (প্রায় 500)। তারা সঠিক ক্রমে। আমি তাদের একীভূত করতে চাই। লিনাক্স কমান্ড এছাড়াও স্বাগত জানাই কারণ আমি তাদের আমার OS X এর মধ্যে কম্পাইল করতে পারেন কমান্ড cat *.ts > masi.tsভাল কাজ করে না। ফলাফল কিছু পয়েন্টে থামে। কেন এটি ঘটে তা আমি তদন্ত করছি। ভিডিওগুলির কিছু অংশ ক্রমযুক্ত নয়।

ভিডিওগুলির অংশগুলির নাম যেখানে প্রতিটি ফাইলের একটি উপস থাকে HRmasi453-27012016.mp4.ts

1.ts
2.ts
...
100.ts
101.ts
...
200.ts
...
300.ts

তাই ফাইলের নাম হল HRmasi453-27012016.mp4-01.ts... HRmasi453-27012016.mp4-300.ts। কমান্ডটি cat *.ts > masi.tsঅনুক্রমিক ক্রমে ভিডিওটি সংগঠিত করে না। আমি মনে করি ক্রমযুক্ত সমস্ত আইটেমের আগে আমার একটি তালিকা তৈরি করা উচিত। তারপরে, মার্জ করুন

pseudocode

  1. ক্রমানুসারে ভিডিওগুলির একটি তালিকা তৈরি করুন
  2. মার্জ cat items in list
    • লুপটিতে filename = prefix + itemInListনতুন তালিকা তৈরি না করেই এমন কিছু করুন ।
    • cat filename >> result.ts

আপনি কীভাবে অনেকগুলি ভিডিও ফাইল, .ts, ফাইলগুলিতে যোগদান করতে পারেন?


1
এটি যদি কাজ করে তবে একেবারেই নিশ্চিত নয় যে আপনি কয়েকটি ফাইল দিয়ে প্রথমে চেষ্টা করতে পারেন, আপনি কি পরে তা নিয়ে মনযোগ দেওয়ার চেষ্টা করেছেন cat?
ব্যবহারকারী 3439894

@ ব্যবহারকারী 3439894 প্রস্তাবটির জন্য আপনাকে ধন্যবাদ! কিছু বাগ আছে। কিছু পর্যায়ে কিছু ফাঁক, যা আমি বুঝতে পারি না। আমি আবার ফ্ল্যাশ শো রেকর্ড করব এবং তারপরে আবার পরীক্ষা করব। কখনও কখনও, ভিডিওর ক্রম মিশ্রিত হয়, সম্ভবত নামকরণের কারণে।
লিও লোপল্ড হার্টজ 준영

itemInListশীর্ষস্থানীয় 0 (শূন্য) উদাহরণস্বরূপ, 01 ... 09 সহ কেবলমাত্র সংখ্যাগুলি কি প্রকৃত ফাইল সংখ্যা মোট গণনা?
ব্যবহারকারী 3439894

আমার আপডেট হওয়া উত্তরটি দেখুন।
ব্যবহারকারী 3439894

উত্তর:


8

.tsফাইলগুলির সাথে কাজ না করে এই কথাটি বলার আগেই আমার এই প্রবন্ধটির দরকার আছে catযেগুলি ব্যবহার করে কেবল তাদের সাথে সংহত করা যায় কিনা তা আপনি জানেন না এবং আপনি যেমন দেখেছেন যে নামগুলি নামযুক্ত তারা ব্যবহার করার সময় মিশে যায় cat *.ts > masi.tsকারণ এটি অভিধানের সাজানোর কারণে, তাই একটি আদেশযুক্ত তালিকা ব্যবহার করে নির্দেশে. এটি মনে রেখে, আমি এখানে 500 সংখ্যার নামযুক্ত .tsফাইলগুলির একটি তালিকা তৈরি করতে এবং তারপরে তালিকাটি ব্যবহার করে তাদের সাথে সংযুক্ত করে যা করেছি।

আমি প্রথম হিসাবে একটি নিয়ন্ত্রণ হিসাবে ফাইলের নাম .tsসংখ্যা সহ 500 সংখ্যাযুক্ত নামযুক্ত ফাইল তৈরি করেছি .ts। আমি ব্যবহার করেছি for i in {1..500}; do echo $i > $i.ts; done এগুলি আসলে বৈধ .tsফাইল ছিল না তবে এটির সাথে কাজ করার জন্য আমার 500 টি ফাইল রাখার অনুমতি দেয় এবং তারপরে combined.tsফাইলটির মধ্যে অর্ডার করা সংখ্যাসূচক তালিকা দেখার জন্য ফাইলটি খোলার সময় এগুলি যথাযথ ক্রমে সংশ্লেষিত হয়েছিল তা দেখুন।

যেহেতু আপনার কাছে ইতিমধ্যে 500 টি .tsফাইল রয়েছে তাই টার্মিনালে নিম্নলিখিতটি করুন:

cd ts_files_directory
echo {1..500}.ts | tr " " "\n" > tslist
while read line; do cat $line >> combined.ts; done < tslist


আমার উত্তর এবং আপনার আপডেট হওয়া প্রশ্নের আপনার মন্তব্য অনুযায়ী প্রকৃত ফাইলের নাম অন্তর্ভুক্ত করার জন্য আপডেট করা হয়েছে।

নিম্নলিখিত অনুমান যে শুধুমাত্র সংখ্যা itemInListএকটি নেতৃস্থানীয় 0 (শূন্য) সঙ্গে যেমন, 01 ... 09 এবং যা আপনি পরিবর্তন 500মধ্যে {100..500}প্রকৃত কমান্ডের অংশ গণনা

ডিরেক্টরি রয়েছে যার মধ্যে .tsফাইল রয়েছে ।

cd ts_files_directory

নিম্নলিখিত দুটি কমান্ড tslistফাইল তৈরি করে যা catডিকোসোগ্রাফিকাল বাছাইয়ের সমস্যাটি এড়ানোর জন্য লক্ষ্যযুক্ত ফাইলের নামগুলির একটি সংখ্যাগতভাবে আদেশ করা তালিকা ।

echo 'HRmasi453-27012016.mp4-'{01..99}.ts | tr " " "\n" > tslist
echo 'HRmasi453-27012016.mp4-'{100..500}.ts | tr " " "\n" >> tslist

সংখ্যা অনুসারে অর্ডার করা তালিকা তৈরি হওয়ার সাথে সাথে tslistফাইলের বিষয়বস্তুর উপর ভিত্তি করে সম্মিলন করতে নিম্নলিখিত কমান্ড লাইনটি ব্যবহার করুন।

while read line; do cat $line >> combined.ts; done < tslist

ফাইলের নামটিতেও রয়েছে HRmasi453-27012016.mp4-। সুতরাং কনকানেটেট প্রয়োজন। আমি অসফলভাবে চালাচ্ছি do cat "HRmasi453-27012016.mp4-" $line"। এছাড়াও ব্যর্থতা echo "HRmasi453-27012016.mp4-" {1...500}। আপনি কী মনে করেন যেখানে তালিকার আইটেমগুলির সাথে উপসর্গকে একত্রিত করা ভাল? আমি মনে করি বাস্তবে অনেক বেশি জায়গা নিয়ে তালিকার আইটেমগুলিতে স্ট্রিংটি অন্তর্ভুক্ত করা স্মার্ট নয়। আমি মনে করি শেষ পর্যন্ত একরকম ডু বিড়ালটিকে সংঘবদ্ধ করা ভাল।
লিও লোপল্ড হার্টজ 준영

গ্রেট! মনে হচ্ছে এটি কাজ করে। আমি কিছু গ্লোব যোগ করা প্রয়োজন echo 'HRmasi453-2701201?.mp4-'{01..99}.ts | tr " " "\n" > tslist
লিও লোপল্ড হার্টজ 준영

আমি মানের আশ্বাসে থ্রেড প্রসারিত করেছি। আমি এখানে ইউনিক্স.স্ট্যাকেক্সেঞ্জঞ্জ.com
লিও লোপোল্ড হার্টজ-

1
@ মসি, যদি ফাইলের নামগুলি আপনার শেষের মতো দেখানো এবং বিবৃত করা থাকে তবে -উদাহরণস্বরূপ HRmasi453-27012016.mp4-, আপনার কেন এটির পরিবর্তনের দরকার রয়েছে তা দেখতে আমি ব্যর্থ 'HRmasi453-2701201?.mp4-। এটি বলেছিল, তবুও আমি খুশি যে আমি যা উপস্থাপন করেছি তা ব্যবহার করতে পেরেছি। অতিরিক্ত হিসাবে আমি যুক্ত করতে চাই যে আপনি যদি কোন প্রশ্ন জিজ্ঞাসা করার সময় আরও সঠিক এবং আরও সম্পূর্ণ তথ্য দিতে চান তবে পরিস্থিতির উত্তরের যথাযথতা দেওয়া আরও সহজ হবে। শুধু একটি ভাবনা. :)
ব্যবহারকারী 3439894

1
পার্শ্ব নোট হিসাবে, আপনি যদি tsতাদের টাইমস্ট্যাম্পের মাধ্যমে ফাইলগুলির তালিকায় পড়তে চান তবে আপনি উপরের লাইনটি 2ls -tr *.ts | tr " " "\n" > tsList
কিংলিয়াম

0

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

আমি বিশ্বাস করি একটি ম্যাক সংস্করণ রয়েছে সুতরাং আপনাকে এটি ffmpeg.org এর উত্স থেকে সংকলন করতে হবে না তবে এর বাইরে অন্য কাউকে তা যাচাই করতে হবে এবং সঠিক কমান্ড সিনট্যাক্সটি আপনাকে সহায়তা করবে।


0

বিড়াল? .ts ??। ts ???। ts> all.ts


প্রশ্ন অনুসারে, সমস্ত ফাইলের একটি উপসর্গ রয়েছে HRmasi453-27012016.mp4.ts, তাই ব্যবহৃত ওয়াইল্ডকার্ডগুলির এখানে কিছু সংশোধন প্রয়োজন হতে পারে।
nohillside

0

Ffmpeg ডক্স ভিত্তিক খুব সহজ উপায়; গৃহীত উত্তর আরও জটিল।

  1. প্রথমে একটি ফাইলের সমস্ত ফাইলের তালিকা মুদ্রণ করুন: mylist.txt, আপনার ফাইলের জন্য এক্সটেনশন দিন, এখানে .ts is

    printf "file '%s'\n" ./*.ts > mylist.txt
    
  2. অবশেষে txt তালিকা ব্যবহার করে ফাইলটিতে যোগদান করুন, শেষ প্যারামিটারের নাম ফাইলটি যুক্ত হয়েছে, উত্স ফাইলগুলি একই এক্সটেনশনটি ব্যবহার করবে।

    ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.ts
    

সংক্ষিপ্ত সম্পর্কে আরও তথ্য:

https://trac.ffmpeg.org/wiki/Concatenate


আপনি দয়া করে আপনার উত্তরটি ব্যবহারকারী 3439894 এর একটির সাথে তুলনা করতে পারেন?
লিও লোপল্ড হার্টজ 준영

আপনি কি বোঝাতে চেয়েছেন? আমার উত্তর ffmpeg
ডক্সে

printf "file '%s'\n" ./*.ts > mylist.txtঠিক একই কারণে ওপি প্রথম স্থানে পোস্ট করা ব্যর্থ হয়েছিল। ফাইলগুলির নাম কীভাবে দেওয়া হয়েছে তার কারণে mylist.txtসঠিকভাবে অর্ডার করা তালিকা থাকবে না .tsএবং ভিডিওটি নষ্ট হবে কারণ তালিকার .tsফাইলগুলি অর্ডার অফ। মাইলিস্ট.টেক্সট এর বিষয়বস্তুগুলির জন্য এই লিঙ্কটি দেখুন: পেস্ট.ইই
ইউজার 3439894

@ লও লোপল্ড হার্টজ 준영, স্ট্যাকড্যাভের উত্তরটি সম্পর্কে আমার মন্তব্য দেখুন।
ব্যবহারকারী 3439894

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