শুরু এবং স্টপ সময়গুলি ব্যবহার করে অডিও ফাইলটি ছাঁটাই


34

অডিও ছাঁটাতে আমার কাছে এফএফপিপিগ কমান্ড রয়েছে:

ffmpeg -ss 01:43:46 -t 00:00:44.30 -i input.mp3 output.mp3

এই কমান্ডটি নিয়ে আমার যে সমস্যাটি রয়েছে তা হ'ল বিকল্পটি 01:43:46-t থেকে একটি সময়কাল (সেকেন্ডে) প্রয়োজন । আমি শুরু / স্টপ সময়গুলি ব্যবহার করে অডিও ট্রিম করতে চাই, উদাহরণস্বরূপ 01:43:46 এবং 00: 01: 45.02 এর মধ্যে ।

এটা কি সম্ভব?


1
সুতরাং আপনি একটি শুরুর সময় এবং একটি সময়কালের পরিবর্তে স্টার্ট এবং স্টপ সময়গুলি ব্যবহার করে একটি অডিও ফাইলের একটি অংশ বের করতে চান, এটি কি সঠিক?

1
@ নাশা এটি সঠিক। আরও পরিষ্কার করার জন্য আমি পোস্টটি সম্পাদনা করব।
— ব্যবহারকারী 8547

1
আমি আপনার প্রশ্নটি সেই অনুসারে পুনরায় উত্তর দিয়েছি। প্রকৃতপক্ষে ffmpegকোনও শুরুর সময় এবং একটি সময়কাল ছাড়া আর কিছুই সরবরাহ করার কথা মনে হচ্ছে না। এবং mplayerহয় না।

উত্তর:


45

ffmpeg একটি নতুন বিকল্প আছে বলে মনে হয় -to মধ্যে ডকুমেন্টেশন :

-তে অবস্থান ( ইনপুট / আউটপুট ) আউটপুট
লেখা বা অবস্থানের ইনপুট পড়া বন্ধ করুন । পজিশনের একটি সময়কাল নির্দিষ্টকরণ হতে হবে, ffmpeg-utils (1) ম্যানুয়ালটিতে সময়কাল বিভাগটি (ffmpeg-utils) দেখুন।

-থেকে এবং -টি পারস্পরিক একচেটিয়া এবং এটির অগ্রাধিকার রয়েছে।

দুটি সময় বিন্যাস সহ নমুনা কমান্ড

ffmpeg -i file.mkv -ss 20 -to 40 -c copy file-2.mkv
ffmpeg -i file.mkv -ss 00:00:20 -to 00:00:40 -c copy file-2.mkv

এটিতে 20 সেকেন্ডের চিহ্ন থেকে 40 সেকেন্ডের চিহ্নের মধ্যে ফাইল.এমকেভির একটি অনুলিপি (ফাইল -২.মেকভি) তৈরি করা উচিত।


2
Tx, যে দুর্দান্ত কাজ করে। আমি দেখতে পেলাম যে আমি যদি copyঅডিও / ভিডিও সিঙ্কের বাইরে থাকা অংশটি সরিয়ে না ফেলেছি , তাই আমি সেটিকে সরিয়ে আছি -async 1এবং এটি মনোযোগের মতো কাজ করে। অবশ্যই এটি পুনরায় কোডিং প্রয়োজন, সুতরাং একটি উন্নতি একটি কমান্ড হতে পারে copyযা সিঙ্ক সমস্যাগুলি ছাড়াই তবে অনুমতি দেয় ।
— ব্যবহারকারী 8547

1
একাধিক বিরতি থাকা কি এগুলি সম্ভব এবং তারা একসাথে যোগদান করবে? অর্থাত্ffmpeg -i file.mp3 -ss 10 -to 11 -ss 20 -to 21 -ss 30 -to 31 ....
— আভনার বার

@ অ্যাভনারবায়ার আমি জানি না এটি সম্পূর্ণভাবে এফএফম্পেগের মাধ্যমে সম্ভব কিনা, তবে আমি জানি মেনকোডার দিয়ে এটি সম্ভব। -toবিকল্পটি ব্যবহার করে এটি কাজ করে :ffmpeg -i mmm.mp4 -ss 00:04:04 -to 00:04:35 -c copy output1.mp4 && ffmpeg -i mmm.mp4 -ss 00:05:47 -to 00:06:05 -c copy output2.mp4 && mencoder -ovc copy -oac mp3lame -idx output1.mp4 output2.mp4 -o complete.mp4
— ব্যবহারকারী 8547

1

আপনি যদি পিএইচপি ইনস্টল করে থাকেন তবে এটিকে একটি স্ক্রিপ্ট তৈরি করুন:

টাইমডিফ.এফপি বিষয়বস্তু:

<?php
// Create datetime objcects
$dt1 = new DateTime($argv[1]);
$dt2 = new DateTime($argv[2]);

// Conver difference to seconds
$dt3 = $dt2->format('U') - $dt1->format('U');

// echo $dt3."\n";
$h = (int)($dt3 / 3600);
$dt3 %= 3600;
$m = (int)($dt3 / 60);
$dt3 %= 60;
$s = $dt3;

// Dump as H:M:S
echo $h . ":" . $m . ":" . $s;

?>

Audiochop.sh সামগ্রী:

#!/bin/bash
INFILE=$1
START=$2
STOP=$3
OUTFILE=$4

OFFSET=`php TimeDiff.php "$START" "$STOP"`

echo "Disecting $INFILE starting from $START to $STOP (duration $OFFSET)"
ffmpeg -ss "$START" -t "$OFFSET" -i "$INFILE" "$OUTFILE"

ব্যবহার:

./audiochop.sh [input.mp3] [startchop] [stopchop] [output.mp3]

যেখানে [স্টার্টচপ] এবং [স্টপচপ] ট্র্যাকের শুরু থেকে উভয়ই পরম টাইমস্ট্যাম্প।

এনবি: স্ক্রিপ্ট (গুলি) এর প্ল্যাটফর্মের সংস্করণ ইত্যাদির উপর নির্ভর করে টুইটারের প্রয়োজন হতে পারে ...


তাহলে কমান্ডটি কি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে? Audiochop.sh ইনপুট.এমপি 00:01:30 00:01:50 আউটপুট.এমপি 3
— ব্যবহারকারী 8547

হ্যাঁ, ঠিক তাই
— লিচ

এটি আসলে সম্পূর্ণ কমান্ড:। কাজ।
— ব্যবহারকারী 8547

ঘটনাচক্রে, আমি দেখতে পেয়েছি যে এই পিএইচপি / বাশ স্ক্রিপ্টটি এমপি 4 ভিডিওগুলিতেও কাজ করে, সুতরাং আমি ধরে নিই যে এটি কোনও ভিডিও ফর্ম্যাট নিয়ে কাজ করবে।
— ব্যবহারকারী 8547

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