লিনাক্স কমান্ড অডিও ফাইলগুলি সংযুক্ত করতে এবং সেগুলিকে og তে আউটপুট করে


10

বেশ কয়েকটি অডিও ফাইল সংমিশ্রিত করতে এবং সেগুলিকে একটি ওজি (এবং / অথবা এমপি 3) হিসাবে আউটপুট করার জন্য আমার কোন কমান্ড-লাইন সরঞ্জামগুলির প্রয়োজন?

আপনি যদি কমিটিকেট করতে সম্পূর্ণ কমান্ড সরবরাহ করতে পারেন এবং ওজিকে আউটপুট দিতে পারেন, এটি দুর্দান্ত।

সম্পাদনা : ইনপুট ফাইলগুলি (আমার ক্ষেত্রে বর্তমানে) wmaফর্ম্যাটে রয়েছে, তবে আদর্শভাবে এটি জনপ্রিয় ফর্ম্যাটগুলির বিস্তৃত সমর্থন করার জন্য যথেষ্ট নমনীয় হওয়া উচিত।

Edit2 : শুধু নির্মল আমি একত্রীকরণ চান না, সব wma , একটি নির্দিষ্ট ডিরেক্টরির মধ্যে গুলি আমি শুধু একটা মধ্যে 2 বা 3 ফাইল কনক্যাটেনেট করতে চাই।

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


1
কোন ইনপুট ফর্ম্যাটগুলির জন্য আপনার সমর্থন দরকার?
জন টি

নীতিগতভাবে, আপনি একে অপরের মধ্যে পাইপ আউটপুটে এই সমস্ত কমান্ডগুলিকে টুইট করতে পারেন। তবে ব্যবহারিকভাবে, এটি কাজ করা একটি ব্যথা এবং এটি ব্যর্থ হলে ডিবাগ করার জন্য একটি ব্যথা। টেম্প ফাইলগুলি করার বিভিন্ন উপায় রয়েছে। আমার পছন্দের পদ্ধতিটি হল mktemp -d /tmp/descriptive_name.XXXXXXতথ্যবহুল নাম সহ একটি অস্থায়ী ডিরেক্টরি তৈরি করা, তারপরে আমার সমস্ত টেম্প ফাইলগুলি প্রসেস করুন, তারপরে টেম্প ডায়ারের পরে rm -r করুন।
রায়ান সি থম্পসন

কেবল স্পষ্ট করে বলার জন্য , একটি ডিরেক্টরিতে সমস্ত ডাব্লুএমএর জন্য যে কোনও কাজ করে *.wma, একটি কমান্ডলাইনে নির্দিষ্ট করে , অবশ্যই একটি ছোট তালিকার জন্য কাজ করবে 1.wma 2.wma 3.wma 4.wma(৫.wma, 6.wma, & 7.wma রেখে) কেবল তাদের তালিকা তৈরি করে by এর মতো (ব্যবহারের পরিবর্তে *.wma)
কোয়াকোটা কোয়েসোট

উত্তর:


9

আমার পরামর্শটি এখানে: এমপিপ্লেয়ার এবং নামযুক্ত পাইপের সাথে যুক্ত ওগেনসি ব্যবহার করুন ।

  • mplayerঅডিও ডিকোড করতে ব্যবহার করুন । এটি বিভিন্ন ধরণের অডিও (এবং ভিডিও) ফর্ম্যাটগুলি প্লে করতে পারে এবং এটি একাধিক ফাইলও খেলতে পারে।

  • oggencওগ ভারবিসে অডিওটি এনকোড করতে ব্যবহার করুন ।

  • একটি অস্থায়ী ফাইলের প্রয়োজনীয়তা অপসারণ করতে এনকোডার এবং ডিকোডারের মধ্যে ডেটা স্থানান্তর করতে একটি নামযুক্ত পাইপ ব্যবহার করুন ।

এটিকে স্ক্রিপ্টে রেখে দেওয়া:

#!/bin/sh
# Usage: ./combine2ogg destination.ogg source1.wma source2.wma ...
# Requires: mplayer, oggenc
destination="$1"
shift
readpipe="$destination.tmpr"
writepipe="$destination.tmpw"
mkfifo "$readpipe"
mkfifo "$writepipe"
cat "$writepipe" > "$readpipe" &
mplayer -really-quiet -slave -nolirc -vc null -vo null -ao "pcm:fast:file=$writepipe" "$@" &
oggenc --quiet -o "$destination" "$readpipe"
rm -f "$readpipe"
rm -f "$writepipe"

ব্যাখ্যা:

  1. প্রথম কমান্ড লাইন প্যারামিটার থেকে গন্তব্য ফাইলের নাম নিন।
  2. কেবল উত্স ফাইলের নাম রেখে প্রথম কমান্ড লাইন প্যারামিটার সরান।
  3. Oggenc থেকে পড়ার জন্য পাইপের জন্য একটি নাম তৈরি করুন।
  4. এমপ্লেয়ারে লেখার জন্য পাইপের জন্য একটি নাম তৈরি করুন
  5. পাইপ তৈরি করুন।
  6. রিডপাইপটিকে অবিচ্ছিন্নভাবে রিডপাইপে ফেলে দেওয়ার জন্য বিড়ালটি ব্যবহার করুন (এটি এমপ্লেয়ার সমাপ্ত হতে পারে এমন সমস্যাগুলি এড়াতে সহায়তা করে, তবে এটি হওয়ার পরে ওগেনকে এটি চিন্তাভাবনা থেকে বাধা দেয়)
  7. এমপ্লেয়ার ব্যবহার করে উত্স ফাইলগুলি থেকে অডিও ডিকোড করুন। -really-quiet -slave -nolircবার্তাগুলি অক্ষম করার জন্য এবং এটি কীবোর্ড বা রিমোটটি না পড়ার জন্য বিকল্প রয়েছে। -vc null -vo nullভিডিও এনকোডিং এবং আউটপুট অক্ষম করার জন্য বিকল্পগুলি রয়েছে। -aoবিকল্প এটা আউটপুট নামে লেখার নল থেকে WAV ফরম্যাটে অডিও নির্দেশ।
  8. পূর্ববর্তী কমান্ডটি চলমান অবস্থায়, নামী পঠিত পাইপটি ওগজেঙ্ক ব্যবহার করে একযোগে এনকোড করুন।
  9. নামক পাইপগুলি সরান।

উন্নতির জন্য বাম থেকে স্টাফ: স্ক্রিপ্টটি প্রথম দিকে সমাপ্ত করে যদি কোনও কমান্ডের একটি ব্যর্থ (ব্যবহার set -e) ব্যর্থ হয় তবে তবুও সঠিকভাবে ফিফো পরিষ্কার করা হয় (প্রয়োজনীয় সংকেতগুলি ফাঁদে ফেলুন)।


কেবলমাত্র "সামান্য" সমস্যাটি হ'ল ফাইলগুলির মধ্যে ক্লিকের শব্দ রয়েছে
হ্যাসেন

@ হাসেন জে: আপনি যদি নিখুঁত হতে চান তবে অড্যাসিটি বা অন্য কোনও ওয়েভ-সম্পাদক ব্যবহার করুন। আপনি যদি ক্লিকের উত্সটি সন্ধান করতে পারেন তবে আপনি অপরাধীর উপর একটি বাগ্রেপোর্ট ফাইল করতে পারেন।
কোয়াকোট কোয়েক্সোট

15

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

sox file1.wav file2.mp3 file3.flac outfile.ogg

আমি বিশ্বাস করি যে যদি উত্স অডিও ফাইলগুলির মধ্যে একই সংখ্যার চ্যানেল থাকে তবে আমি এটি পরীক্ষা করেছি না।

আমি যতদূর জানি, SoX .WMA ফাইলগুলির জন্য শূন্য সমর্থন করে, তাই কমপক্ষে files ফাইলগুলিকে প্রথমে ffmpeg এর মতো কোনও রূপান্তর করা সম্ভবত অনিবার্য।

ffmpeg -i infile.wma outfile.wav

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

3

আমি ffmpeg ব্যবহার করব । ডাব্লুএমএকে ওজি ভার্বিসে রূপান্তর করতে চেষ্টা করুন:

ffmpeg -i sample.wma -acodec vorbis -aq 100 sample.ogg

বা এমপি 3:

ffmpeg -i input.wma -acodec libmp3lame output.mp3

এমপি 3 রূপান্তর করার জন্য আপনার খোঁড়া ইনস্টল করা দরকার। sudo apt-get install lame libmp3lame0

বিড়াল, তারপরে রূপান্তরটি ভাল কাজ করছে বলে মনে হচ্ছে না, যদিও আপনি ওয়েবে প্রচুর উল্লেখ খুঁজে পেতে পারেন যে আপনি এমন কিছু করতে পারেন cat *.wma | ffmpeg -i - -acodec ...- এটি আমার মেশিনে কাজ করে না - কেবল প্রথম ফাইলটি প্রক্রিয়াজাত হয়। Ffmpeg এর জন্য একটি 'অনুলিপি' কোডেক রয়েছে, তবে খুব বেশি পার্থক্য নেই।

প্রথমে ffmpeg দিয়ে রূপান্তরটি করা, তারপরে বিড়াল * .ogg> আউটপুট.ওজি আমার পক্ষে কাজ করেছিল।


1
ঠিক আছে, সংক্ষেপণ সম্পর্কে কি?
হাসেন

এর জন্যে দুঃখিত! আমার সংযোজন পড়ুন।
ডেভপ্যারিলো

ffmpeg সম্পর্কে নিশ্চিত না ... ডাব্লুএমএ ডিকোডার হিসাবে জরিমানা, তবে ওজিজি এনকোডার সম্পর্কে প্রচুর অভিযোগ। কমপক্ষে -acodec libvorbisffmpeg এর বিল্টিন এনকোডার এড়ানোর জন্য ব্যবহার করুন ।
কোয়াকোট কোয়েক্সোট

3

অডিও ফাইলগুলি সংযুক্ত করে এবং ট্রান্সকোড করতে, আপনি যে ওয়ার্কফ্লোটি অনুসরণ করতে চান তা এটি:

  1. WAV / PCM ডেটাতে ইনপুট অডিও ফাইলগুলি ডিকোড করুন,
  2. সংঘবদ্ধ WAV,
  3. আউটপুট অডিও কোডেক ফাইলটিতে WAV এনকোড করুন।

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

আমি প্রস্তাবিত পদক্ষেপগুলি এখানে। আমরা ffmpegডিকোডিং, soxকনটেনটেশন এবং oggencএনকোডিংয়ের জন্য ব্যবহার করব। আপনি যে কোনো ধাপের জন্য অন্যান্য সরঞ্জাম প্রতিস্থাপন যায়নি - mencoderএবং অন্যদের একটি ডিকোডার, এবং যে কোনো সরঞ্জাম যা এনকোড Ogg এনকোডার হিসাবে ব্যবহার করা যেতে পারে সূক্ষ্ম কাজ - যদিও আমি মনে করি আপনি চেয়ে ভাল টুল খুঁজে পাওয়া কঠিন টেপা হবেন soxজন্য সংযুক্তকরণের।

  1. find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
    ( ffmpeg -i infile.wma outfile.infile.wmaএটি বর্তমান ডিরেক্টরিতে প্রতিটি ডাব্লুএমএ ফাইলে চলে)

  2. sox outfile* all.wav
    (দ্রষ্টব্য outfileএকই পদক্ষেপ যা আমরা প্রথম ধাপে আউটপুট ফাইলগুলি দিয়েছি)

  3. oggenc all.wav all.ogg আপনি সম্ভবত এখানে কিছু মানের সেটিংস চান, তবে এটি শালীন মানের ডিফল্ট দেবে। আমি আমার পছন্দ মতো ফলাফল পাইনি ffmpegতবে আপনি এটি পছন্দ করতে পারেন, তাই নীচে ffmpeg সহ আমি একটি উদাহরণ অন্তর্ভুক্ত করেছি।

মনে রাখবেন যে soxসমস্ত ডাব্লুএইভি ফাইলগুলি একই ফর্ম্যাট না হলে কমান্ডটি সঠিকভাবে কাজ করবে না - কিছু 22kHz এবং কিছু 44.1kHz হয়, উদাহরণস্বরূপ, আপনাকে কমান্ডলাইন soxসুইচগুলির মাধ্যমে সেগুলি সনাক্ত করতে হবে এবং আপনি কোন ফর্ম্যাটটি চান তা নির্দিষ্ট করতে হবে আউটপুট ইন। আমি কোন কমান্ডলাইন সরঞ্জামগুলি soxকনটেনটেশন পদক্ষেপের মতো সক্ষম হিসাবে জানি না । আপনি পারে সম্ভবত ধাপ 1 এবং ব্যবহারের একটি কাঁচা পিসিএম বিন্যাস আউটপুট catধাপ 2 জন্য, কিন্তু যে শুধুমাত্র would কাজ যদি তারা একই বিন্যাসে, এবং আপনি উভয় আপনার ডিকোডার এবং হিসাবে এনকোডার অত্যন্ত নির্দিষ্ট হতে প্রয়োজন চাই কি ফর্ম্যাট তারা আশা করা উচিত।

এফএফএমপিগের সাথে এনকোডিং: নেট এর আশেপাশে প্রচুর পোস্ট অভিযোগ করে যে এফএফএমপিগের বিল্টইন ভারবিস এনকোডার খুব ভাল নয়। যদি আপনার সংস্করণটি লাইভোভারবিস সমর্থন দিয়ে নির্মিত হয়, তবে -acodec libvorbisপরিবর্তে ব্যবহার করুন। নমুনা কমান্ডলাইন:

ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg

1

.Ogg ফাইলগুলির জন্য কাজ করবে না, তবে এমপি 3 র্যাপ একক ফাইলে একাধিক। এমপি 3 ফাইল সংযুক্ত করতে পারে। কমান্ড লাইন থেকে, আপনি এই জাতীয় কিছু করতে পারে

for FILE in *.wma; do ffmpeg -i "$FILE" "`basename "$FILE" .wma`.mp3"; done
mp3wrap bigmp3_MP3WRAP.mp3 *.mp3

এটি আপনার সমস্ত .wma ফাইলগুলিকে .mp3 এ রূপান্তর করতে ffmpeg ব্যবহার করবে এবং তারপরে সমস্ত .mp3 ফাইলগুলিকে একক ফাইলে একত্রিত করবে।


1

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

সম্পাদনা: আমি aconvert.sh পেয়েছি। দুর্ভাগ্যক্রমে, এটি কেবল একটি অডিও ফাইল রূপান্তর করতে ডিজাইন করা হয়েছে। তবে কোডটি এখানে যাই হোক না কেন, যদি কেউ এটির জন্য কোনও কমান্ড লাইন তৈরি করতে চায় যা একাধিক অডিও ফাইলকে রূপান্তর করে।

#!/bin/sh

# Author: Jonas Jermann
# Description: A hack to allow mencoder to encode from an audio only file

if [ "$1" = "" ]; then
    echo "Usage: $0 <\"input file\"> <\"output file\"> <\"options\">"
    exit 0
fi

options=${3:-"-oac mp3lame"}

mencoder -demuxer rawvideo -rawvideo w=1:h=1 -ovc copy -of rawaudio -endpos `mplayer -identify $1 -frames 0 2>&1 | grep ID_LENGTH | cut -d "=" -f 2` -audiofile $1 -o $2 $options $1


0

ভেবেছি আমি আমার উত্তরটি ফেলে দিয়েছি This সম্ভবত এটি সবচেয়ে মার্জিত উপায় নয়, তবে এটি আমার যা ইচ্ছা তা করেছে।

ধাপ 1: ধর্মান্তরিত OGG করার জন্য (ব্যবহারসমূহ mplayer, pacplএবং ruby, মুক্ত ডেবিয়ান Repos থেকে সব উপলব্ধ আমি।)

#! /usr/bin/ruby

ARGV.each do |target|
  file_ext = target.scan(/\.\w*$/)[0]
  name = target.sub(file_ext, "")

  `mplayer -novideo -ao pcm:file="tmp.wav" "#{target}"`
  `pacpl -t ogg --outfile "#{name}" tmp.wav`
  `rm tmp.wav`
end

পদক্ষেপ 2: ওগ ফাইল কনেকেটেট করুন

cat *ogg > big-file.ogg

0

cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3এমপি 3 সহ আমার জন্য সুন্দরভাবে কাজ করেছেন: আমি ধারণা করি এটি অন্যান্য ফর্ম্যাটগুলির সাথেও কাজ করবে। ক্রেডিটগুলি লিন্ডাইলেক্সে যায়

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