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


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.