कैसे कई एमपी 3 फ़ाइलों में शामिल होने / विलय करने के लिए?


59

Google को कई एमपी 3 फ़ाइलों में शामिल होने / विलय करने के बारे में खोज करने पर यह पता चलता है कि मुझे catउन्हें बस एक साथ करना चाहिए ।

यह "काम" हो सकता है, लेकिन स्पष्ट रूप से यह ऐसा करने का सही तरीका नहीं है, क्योंकि आईडीवी 3 टैग के प्रत्येक हेडर और सेट को भी संक्षिप्त किया जाएगा।

क्या एक लिनक्स प्रोग्राम मौजूद है जिसे कई एमपी 3 में शामिल होने / विलय करने के लिए स्क्रिप्ट किया जा सकता है?

Mplayer / mencoder / ffmpeg कर सकते हैं?

जवाबों:


79

यह दो एमपी 3 फाइलों को सम्‍मिलित करेगा, और परिणामी मेटाडेटा पहली फाइल की होगी:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3

ऐसा इसलिए है, क्योंकि ffmpeg के लिए, संपूर्ण "कॉनकट:" भाग एक सिंगल "इनपुट फाइल" है, और इसका मेटाडेटा पहली कॉन्टेनेटेड फाइल का होगा। यदि आप इसके बजाय दूसरी फ़ाइल से मेटाडेटा का उपयोग करना चाहते हैं, तो आपको इसे एक डमी इनपुट फ़ाइल के रूप में जोड़ना होगा और इसके मेटाडेटा को आउटपुट के रूप में मैप करना होगा:

ffmpeg -i "concat:file1.mp3|file2.mp3" -i file2.mp3 -acodec copy test.mp3 -map_metadata 0:1

यदि आप दो मेटाडेटा से अपना मेटाडेटा बनाना चाहते हैं, तो आपको इसे हाथ से करना होगा। आप फ़ाइल के मेटाडेटा को डंप कर सकते हैं

ffmpeg -i file1.mp3 -f ffmetadata file1.metadata

दोनों मेटाडेटा को डंप करने और नए मेटाडेटा के निर्माण के बाद, आप इसे आउटपुट फ़ाइल के साथ जोड़ सकते हैं -metadata, और आप -map_metadataएक नकारात्मक इनपुट फ़ाइल नंबर से मैपिंग सेट करके मेटाडेटा की प्रतिलिपि बना सकते हैं । यह एक नाम मान और कोई अन्य मेटाडेटा सेट करता है:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1

FYI करें इसके लिए ffmpeg के एक निश्चित संस्करण की आवश्यकता होती है। अगर यह कहता है कि फ़ाइल को कॉनैट नहीं मिला है ... इसे फिर से अपग्रेड करने और चलाने की कोशिश करें
समीर

Gentoo में ffmpeg 0.10.4 में ठीक काम करता है। तुम क्या प्रयोग कर रहे हो? क्या आप वाकई केवल आदेश को गलत नहीं मानते हैं?
अम्ब्रोज़ बिज्जक

1
बस दूसरों के लिए कुछ चीजों को स्पष्ट करना चाहता था: -acodecइसका मतलब है कि ऑडियो कोडेक का उपयोग किया जाएगा और copyइसका मतलब है कि केवल मक्सिंग और डेमोक्सिंग होगा, लेकिन एन्कोडिंग / ट्रांसकोडिंग नहीं है (यानी बहुत तेज और कोई गुणवत्ता नुकसान नहीं)
5

1
यह बहुत अच्छा होगा यदि कोई GUI प्रोग्राम था जहां मैं कई फ़ाइलों को खींच सकता हूं और छोड़ सकता हूं (जैसे क्रमिक रूप से रिकॉर्ड की गई रिकॉर्डिंग के लिए कालानुक्रमिक रूप से सॉर्ट किया गया है, और शायद कुछ फाइलें संपादित की गई हैं) और फिर यह एक फाइल आउटपुट करेगा।
जेम्स रे

1
यह एक अच्छा जवाब है, हालांकि लगभग हर मामले में, परिणामस्वरूप एमपी 3 फ़ाइल में एक छोटी (उप-दूसरी) खाई होती है, जहां फाइलें शामिल हुई थीं। इसलिए यदि आप सीमलेस प्लेबैक एल्बम / सेट / जो कुछ भी बनाने के लिए एमपी 3 ट्रैक्स को मर्ज करने की कोशिश कर रहे हैं, तो यह काफी सही नहीं है।
छिपकली

13

Mp3Wrap - कमांड-लाइन उपयोगिता जो कई एमपी 3 फाइलों को एक एकल, बजाने वाले एमपी 3 में लपेटती है, बिना फाइलनाम या आईडी 3 की जानकारी खोए बिना, और रेनकोडिंग के बिना। इसके अलावा, गैर-ऑडियो डेटा जैसे कि प्लेलिस्ट, सूचना फ़ाइलों और एमपी 3 के अंदर छवियों को कवर करने का समर्थन करता है। इन फ़ाइलों को बाद में अनपैक किया जा सकता है (mp3splt, उदा) का उपयोग करके; साधारण एमपी डिकोडर पूरे ऑडियो स्ट्रीम को एक लंबे ट्रैक के रूप में चला सकते हैं।


1
इस सिफारिश के लिए धन्यवाद .. बहुत हल्का / सरल समाधान तो ffmpeg, क्योंकि मैं 100+ mp3 का संयोजन कर रहा था और मूल में वापस विभाजन का विकल्प चाहता था।
joshbaptiste

यह अब प्रॉपर्टी का काम नहीं करता है - कुछ फाइलों को समेटने की कोशिश करें और आउटपुट फाइल का निरीक्षण करें mp3val- यह सिंक त्रुटियों की रिपोर्ट करेगा। इसका मतलब यह है कि यह क्रोम 64+ में पहला चंक ( बगेसच्रोमियम. org/p/chromium/issues/detail?id= 794782 और bugs.chromium.org/p/chromium-issues/detail?id देखें) के बाद नहीं चलेगा = 806601 # c10 )
गृहिणी

विंडोज पर काम नहीं करता है। कोई मेटाडेटा संरक्षित नहीं है।
ग्रबेर

9

यह एमपी 3 से भरे एक फोल्डर को एक सिंगल MP3 फाइल में बदल देगा:

1) को बदलने के लिए एमपी 3 फ़ाइलों की एक सूची सहेजें, जैसे,

$ cat mylist.txt
file '/tmp/01.mp3'
file '/tmp/02.mp3'
file '/tmp/03.mp3'
file '/tmp/04.mp3'
file '/tmp/05.mp3'
file '/tmp/06.mp3'
file '/tmp/07.mp3'

2) निम्न आदेश (भागो -safe 0है की आवश्यकता नहीं है, तो mylist.txt संबंधित पथ का उपयोग करता है के बजाय ):

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

3

यदि आप वर्तमान निर्देशिका की सभी एमपी 3 फाइलों को समाप्‍त करना चाहते हैं:

function join_by { local IFS="$1"; shift; echo "$*"; }
files=(*.mp3)
ffmpeg -i "concat:`join_by "|" $files`" -acodec copy output.mp3

0

यदि आपको स्क्रिप्टिंग की आवश्यकता है, तो आप शायद ffmpeg समाधान का उपयोग कर रहे हैं। हालांकि, अगर आपको कभी भी इस तरह से सामान करने के लिए एक आवेदन की आवश्यकता होती है, तो आप ऑडेसिटी की कोशिश कर सकते हैं । यह ओपन सोर्स और क्रॉस प्लेटफॉर्म है। मैंने इसे MP3 में शामिल करने के लिए उपयोग नहीं किया है, लेकिन मैंने इसे एक एमपी 3 से फसल वर्गों के लिए उपयोग किया है और अंत में उन्हें फीका कर रहा हूं। मैं शर्त लगा सकता हूं कि आप एमपी 3 में शामिल हो सकते हैं और उन्हें एक-दूसरे के साथ क्रॉस कर सकते हैं।


4
दुस्साहस, जहां तक ​​मुझे पता है, कच्चे ध्वनि डेटा पर काम करता है, और एमपी 3 को इसके साथ स्थानांतरित करने के परिणामस्वरूप ट्रांसकोडिंग के कारण गिरावट होगी।
अम्ब्रोज़ बिज्जक

0

zsh:

audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1

audio-join output.mp3 *.mp3

हम स्पष्टीकरण शामिल करने के लिए जवाब की उम्मीद करते हैं। (इस पृष्ठ के सभी उत्तर अच्छे उदाहरण नहीं हैं।)
स्कॉट

0

मीलों वोल्बे के जवाब के आधार पर, यहाँ एक लाइनर है जो मेरे लिए काम करता है:

ls *.mp3 | \
    sed -e "s/\(.*\)/file '\1'/" | \
    ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.