আমি কিউ দিয়ে ফ্ল্যাককে কীভাবে ভাগ করব?


71

আমি এর জন্য একটি সম্পূর্ণ অ্যালবাম ফ্ল্যাক এবং একটি কিউ ফাইল পেয়েছি। আমি কীভাবে এটিকে ট্র্যাকের ফ্ল্যাকে ভাগ করতে পারি?

আমি কেডিএর ব্যবহারকারী তাই আমি কেডিএ / কিউটি উপায়ে পছন্দ করি। আমি কমান্ড লাইন এবং অন্যান্য জিইউআই উত্তরগুলি দেখতে চাই তবে সেগুলি আমার পছন্দসই পদ্ধতি নয়।


উত্তর:


72

শ্নস্প্লিট সরাসরি ক্রু ফাইলটি পড়তে পারে যার অর্থ এটি কিউ ফাইল থেকে অন্য ডেটা অ্যাক্সেস করতে পারে (কেবল ব্রেকপয়েন্টগুলি নয়) এবং 'স্প্লিট - *। ফ্ল্যাক' এর চেয়ে আরও ভাল ফাইলের নাম তৈরি করতে পারে:

shnsplit -f file.cue -t %n-%t -o flac file.flac

মঞ্জুর, মূল ফ্ল্যাক ফাইলটি যদি একই ডিরেক্টরিতে থাকে তবে এটি cuetag.sh ব্যবহার করা আরও কঠিন করে তোলে।


17
ফেলো ডেবিয়ান ব্যবহারকারী:sudo apt-get install cuetools shntool
jwbensley

13
আপনি সম্ভবত ফাইলগুলি ট্যাগ করতে চানcuetag file.cue [0-9]*.flac
আগস্ট কার্লস্ট্রম

6
আমারও দরকার ছিল:sudo apt-get install flac
বেকো

22

আমি কেবল একটি সি এল এল উপায় জানি। আপনার সিউটুল এবং শান্টুল লাগবে।

cuebreakpoints file.cue | shnsplit -o flac file.flac
cuetag.sh file.cue "split-*".flac

2
এই কাম্বুসের জন্য ধন্যবাদ। আমি cuebreakpoints file.cue | shnsplit -o flac file.flacদীর্ঘদিন ধরে ব্যবহার করছি। দ্বিতীয় বিট অনেক সাহায্য করতে যাচ্ছে!
বোহহজ

1
cuetagশূন্যস্থান সম্বলিত ফাইলের নামগুলি ভাঙ্গা মনে হচ্ছে তবে সেগুলি মুছে ফেলার পরে এটি কাজ করে।
স্কাই

20

ফ্লাকন হ'ল একটি স্বজ্ঞাত ওপেন সোর্স জিইউআই যা ঠিক এটি করে: একটি সিএইউ দিয়ে একটি এফএলসি বিভক্ত করে।

ফ্ল্যাঙ্কন মিউজিকের পুরো অ্যালবামযুক্ত একটি বড় অডিও ফাইল থেকে পৃথক ট্র্যাকগুলি বের করে এবং এটিকে পৃথক অডিও ফাইল হিসাবে সংরক্ষণ করে। এটি করতে এটি উপযুক্ত সিইউ ফাইল থেকে তথ্য ব্যবহার করে।

এটি অন্যান্য বিষয়গুলির মধ্যে সমর্থন করে:

সমর্থিত ইনপুট ফর্ম্যাটগুলি: ডাব্লুএভি, এফএলএসি, এপিই, ওয়াভপ্যাক, ট্রু অডিও (টিটিএ)।

সমর্থিত ফর্ম্যাটগুলি: এফএলএসি, ডাব্লুএইভি, ওয়েভপ্যাক, এএসি, ওজিজি বা এমপি 3।

সিইউ ফাইলগুলির জন্য স্বয়ংক্রিয় অক্ষর সেট সনাক্তকরণ।

এটি ব্যবহার করার জন্য আপনাকে কেবল *.cueফ্লকন দিয়ে ফাইলটি খুলতে হবে। এরপরে এটি স্বয়ংক্রিয়ভাবে বড় *.flacফাইলটি সনাক্ত করতে হবে (যদি না হয় তবে আপনি এটি ম্যানুয়ালি নির্দিষ্ট করতে পারেন) এবং তারপরে আপনার ফ্ল্যাক আউটপুট ফর্ম্যাটটি নির্বাচন করা উচিত (এবং optionচ্ছিকভাবে এনকোডারটি কনফিগার করা) এবং রূপান্তর প্রক্রিয়া শুরু করা উচিত।

ফ্ল্যাঙ্ক ভি 5.4.0


1
ইউনিক্স ও লিনাক্স স্ট্যাক এক্সচেঞ্জে স্বাগতম! যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
slm

এখনও 2017

6

যদি উচ্চ-মানের ফাইলগুলি ব্যবহার করা হচ্ছে তবে শ্নস্প্লিট আনন্দের সাথে ত্রুটিযুক্ত হচ্ছে

shnsplit: error: m:ss.ff format can only be used with CD-quality files

ভাগ্যক্রমে ফ্ল্যাক বাইনারি --স্কিপ = মিমি: এসএসএসএস এবং --until = মিমি: এসএসএসএসকে সমর্থন করে যাতে কোনও স্ক্রিপ্ট এর মতো কিউব্রেকপয়েন্ট ব্যবহার করতে পারে:

[..]
time[0]="00:00.00"
c=1
for ts in $(cuebreakpoints "${cue_file}"); do
    time[${c}]=${ts}
    c=$((c+1))
done
time[${c}]='-0'
for ((i=0;i<$((${#time[@]}-1));i++)); do
    trackno=$(($i+1))
    TRACKNUMBER="$(printf %02d ${trackno})"
    title="$(cueprint --track-number ${trackno} -t '%t' "${cue_file}")"
    flac --silent --exhaustive-model-search --skip=${time[$i]} --until=${time[$(($i+1))]} --tag=ARTIST="${ARTIST}" --tag=ALBUM="${ALBUM}" --tag=DATE="${DATE}" --tag=TITLE="${title}" --tag=TRACKNUMBER="${TRACKNUMBER}" "${aud_file}" --output-name="${TRACKNUMBER}-${title}.flac"
done

এটি আমার জন্য কাজ করা একমাত্র পদ্ধতি।
coffekid

3

আপনি যদি k3bফাইল টাইপ সেটিংসে কিউ ব্যবহার করতে চান , k3bআপনি যদি কিউ ফাইলটি খোলেন তবে স্বয়ংক্রিয়ভাবে ফাইলটি বিভক্ত করবে এবং আপনাকে পুনরায় ফিরতে দেবে।


1

একটি প্রকল্প রয়েছে যা বেশ কয়েকটি ইনপুট ফাইলের জন্য কাজ করে: split2flac

প্রকল্পের বিবরণ থেকে:

স্প্লিট 2ফ্ল্যাক একটি বড় এপিই / এফএলএসি / টিটিএ / ডব্লিউভি / ডাব্লুএইভি অডিও চিত্র (বা এ জাতীয় ফাইলগুলির একটি সংকলন) সাথে সিইউ শীটটি FLAC / M4A / MP3 / OGG_VORBIS / ডাব্লুএইভি ট্র্যাকগুলিতে ট্যাগিং, পুনর্নামকরণ, অক্ষরূপের রূপান্তর রূপান্তর, অ্যালবাম কভার ইমেজ। এটি কনফিগারেশন ফাইলও ব্যবহার করে, তাই প্রতিবার প্রচুর পরিমাণে আর্গুমেন্ট পাস করার দরকার নেই, কেবল একটি ইনপুট ফাইল। যে কোনও POSIX- অনুগত শেল কাজ করা উচিত।


1

আমি খুঁজে পেয়েছি mac( shntoolএপিই ফাইলগুলি ডিকোডিংয়ের জন্য ব্যবহৃত কমান্ডটি ) ffmpegউত্স ফাইলে সামান্য ত্রুটি রয়েছে তার চেয়ে কম সহনশীল rant

সাধারণত প্রক্রিয়া চলাকালীন খুব সম্ভবত একটি ত্রুটি নিক্ষেপ করার সময় সাধারণত ffmpegফাইলটি সম্পূর্ণ রূপান্তরিত হয় mac

সুতরাং আমি এপিই ফাইলকে বিভক্ত করার জন্য স্ক্রিপ্ট লিখে শেষ করে সিএইউ ফাইলটি বিশ্লেষণ করে এবং এপিই ফাইলকে এফএলসি ফাইলগুলিতে রূপান্তর করে ffmpeg ব্যবহার করে শিরোনাম দ্বারা পৃথক করেছিলাম:

#!/usr/bin/env python2.7

import subprocess as subp
import sys
import os
from os.path import splitext, basename
import random
import glob

records = []
filename = ""
album=''
alb_artist=''
codec = 'flac'
ffmpeg_exec = 'ffmpeg'
encodingList = ('utf-8','euc-kr', 'shift-jis', 'cp936', 'big5')

filecontent = open(sys.argv[1]).read()
for enc in encodingList:
    try:
        lines = filecontent.decode(enc).split('\n')
        encoding = enc
        break
    except UnicodeDecodeError as e:
        if enc == encodingList[-1]:
            raise e
        else:
            pass

for l in lines:
    a = l.split()
    if not a:
        continue
    if a[0] == "FILE":
        filename = ' '.join(a[1:-1]).strip('\'"')
    elif a[0]=='TRACK':
        records.append({})
        records[-1]['index'] = a[1]
    elif a[0]=='TITLE':
        if len(records)>0:
            records[-1]['title'] = ' '.join(a[1:]).strip('\'"')
        else:
            album =  ' '.join(a[1:]).strip('\'"')
    elif a[0]=='INDEX' and a[1]=='01':
        timea = a[2].split(':')
        if len(timea) == 3 and int(timea[0]) >= 60:
            timea.insert(0, str(int(timea[0])/60))
            timea[1] = str(int(timea[1])%60)
        times = '{0}.{1}'.format(':'.join(timea[:-1]), timea[-1])
        records[-1]['start'] = times
    elif a[0]=='PERFORMER':
        if len(records)>1:
            records[-1]['artist'] = ' '.join(a[1:]).strip('\'"')
        else:
            alb_artist = ' '.join(a[1:]).strip('\'"')

for i, j in enumerate(records):
    try:
        j['stop'] = records[i+1]['start']
    except IndexError:
        pass

if not os.path.isfile(filename):
    tmpname = splitext(basename(sys.argv[1]))[0]+splitext(filename)[1]
    if os.path.exists(tmpname):
        filename = tmpname
        del tmpname
    else:
        for ext in ('.ape', '.flac', '.wav', '.mp3'):
            tmpname = splitext(filename)[0] + ext
            if os.path.exists(tmpname):
                filename = tmpname
                break

if not os.path.isfile(filename):
    raise IOError("Can't not find file: {0}".format(filename))

fstat = os.stat(filename)
atime = fstat.st_atime
mtime = fstat.st_mtime

records[-1]['stop'] = '99:59:59'

if filename.lower().endswith('.flac'):
    tmpfile = filename
else:
    tmpfile = splitext(filename)[0] + str(random.randint(10000,90000)) + '.flac'

try:
    if filename != tmpfile:
        ret = subp.call([ffmpeg_exec, '-hide_banner', '-y', '-i', filename, 
            '-c:a', codec,'-compression_level','12','-f','flac',tmpfile])

        if ret != 0:
            raise SystemExit('Converting failed.')

    for i in records:
        output = i['index'] +' - '+ i['title']+'.flac'
        commandline = [ffmpeg_exec, '-hide_banner', 
        '-y', '-i', tmpfile,
        '-c', 'copy', 
        '-ss', i['start'], '-to', i['stop'],
        '-metadata', u'title={0}'.format(i['title']), 
        '-metadata', u'artist={0}'.format(i.get('artist', '')),
        '-metadata', u'performer={0}'.format(i.get('artist', '')),
        '-metadata', u'album={0}'.format(album), 
        '-metadata', 'track={0}/{1}'.format(i['index'], len(records)), 
        '-metadata', u'album_artist={0}'.format(alb_artist), 
        '-metadata', u'composer={0}'.format(alb_artist), 
        '-metadata', 'encoder=Meow', 
        '-write_id3v1', '1', 
        output]
        ret = subp.call(commandline)
        if ret == 0:
            os.utime(output, (atime, mtime))
finally:
    if os.path.isfile(tmpfile):
        os.remove(tmpfile)

ভুলতে মূল ফাইলটি মুছে ফেলা এড়াতে আপনি পরিবর্তন if os.path.isfile(tmpfile)করতে চাইতে পারেন if tmpfile != filename and os.path.isfile(tmpfile)
উলফম্যানেক্স

ট্র্যাক শিল্পী সেট করার শর্তটি যদি অবশ্যই হয় len(records)>0
উলফম্যানেক্স

1

shntool উবুন্টু 14.04 এ

snhtoolmac(বানরের অডিও কনসোল) নির্বাহযোগ্য নির্ভরতা অনুপস্থিত এবং এটি কেবলমাত্র প্যাকেজেই খুঁজে flaconপেল যা এটি পিপিএতে ছিল:

sudo add-apt-repository -y ppa:flacon
sudo apt-get update
sudo apt-get install -y flacon shntool
shntool split -f *.cue -o flac -t '%n - %p - %t' *.ape

flaconএটি একটি জিইউআই shntool, তবে এটি সমস্ত কোডেকগুলির প্রয়োজন সহ এটি আসে ... অন্যথায় আমি ত্রুটি পেয়েছি:

shnsplit: warning: failed to read data from input file using format: [ape]
shnsplit:          + you may not have permission to read file: [example.ape]
shnsplit:          + arguments may be incorrect for decoder: [mac]
shnsplit:          + verify that the decoder is installed and in your PATH
shnsplit:          + this file may be unsupported, truncated or corrupt
shnsplit: error: cannot continue due to error(s) shown above
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.