আমি কীভাবে এফএলসি ফাইলগুলিকে এএসি তে রূপান্তর করব (পছন্দমতো ভিবিআর 320 কে +)?


12

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

avconv -i "inputfile.flac" -acodec aac -strict experimental "outputfile.m4a" -map_metadata "inputfile.flac":"outputfile.m4a"

তবে নিম্নলিখিতগুলি (ভাল তা করে না তবে 320 অডিও গুণমান এবং উপরি হিসাবে একই ফলাফলের জন্য উপেক্ষা করে):

avconv -i "inputfile.flac" -acodec aac -aq 320 -strict experimental "outputfile.m4a" -map_metadata "inputfile.flac":"outputfile.m4a"

আমি অনলাইনে অন্যান্য কমান্ডগুলি খুঁজে পেয়েছি যেমন "ffmpeg" তবে দৃশ্যত বেশিরভাগ বা তাদের সমস্তগুলি উপরের অ্যাঙ্কনভ পদ্ধতির পক্ষে অবহেলা করা হয়েছে। কোন সাহায্যের ব্যাপকভাবে প্রশংসা হবে! সত্য ভিবিআর না হলে আমি 320 কেবিপিএস নিয়ে বেঁচে থাকতে পারতাম, তবে কমপক্ষে 320 এর এলসি ভিবিআর সবচেয়ে ভাল হবে।


আমার উল্লেখ করা উচিত যে আমি 192k এর কাছাকাছি মানের কোনও ফাইল পেয়েছি তা উল্লেখ না করে এবং যদিও অ্যাভকনভের ম্যান পেজটি বলে যে আপনি অ্যাক্সের সাথে -Aq দিয়ে গুণমান নির্দিষ্ট করতে পারেন, ফলস্বরূপ ফাইলে কোনও পার্থক্য নেই। যদি আমি একটি 'কে' 320. যোগ আমি সেগমেন্টেশন ফল্ট পেতে
স্ট্যাটিক

যদি 320 কে + আপনার জন্য ঠিক থাকে তবে আপনি ওয়াভপ্যাক (হাইব্রিড মোড) ব্যবহার করে প্রকৃতপক্ষে নিরাপদ হতে পারেন (এটি তৃতীয় পক্ষের সফ্টওয়্যারটিতে অ্যান্ড্রয়েডে প্লেযোগ্য, উদাহরণস্বরূপ ডেডবিফের ক্ষেত্রে)। এটি সংকোচনের জন্য সম্পূর্ণ আলাদা পদ্ধতি ব্যবহার করে, যার কোনও বাধ্যতামূলক ক্ষতিকারক রূপান্তর নেই, এবং একমাত্র বাণিজ্য-বন্ধ হল কোয়ান্টাইজেশন গোলমালের পরিমাণ বনাম বিটরেট, মজার শৈল্পিক অসম্ভব। আমি কমপক্ষে চেষ্টা করার পরামর্শ দিই। আইফোন এখানে সমস্যা হতে পারে, যদিও: /
নাম

উত্তর:


16

প্রথমত, -aqএকটি মানের ভিত্তিক ভেরিয়েবল বিট রেট নির্ধারণ করে - আমি মনে করি আপনি খুঁজছেন -ab(নোট করুন যে আমি একজন এফফেম্পিগ ব্যবহারকারী, সুতরাং আমার অ্যাভকনভ সিনট্যাক্স সম্পর্কে জ্ঞান সীমাবদ্ধ - আমি জানি না যে এটি কতদূর প্রসারিত হয়েছে কাঁটাচামচ)।

নির্বিশেষে, বিল্ট-ইন অ্যাভকনভ / এফএফপিপেইগ এএসি এনকোডার খুব খারাপ।

fdk_aac

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

এটি একবার পেয়ে গেলে, এএসি এনকোডিং গাইডটি অনুসরণ করুন ; আমি fdk_aac এর -vbrবিকল্পটি চেষ্টা করার জন্য দৃ strongly়ভাবে প্রস্তাব দিচ্ছি - আমি চেষ্টা করেছি এমন সমস্ত ফাইলের জন্য 3 টির একটি সেটিংস আমার কাছে স্বচ্ছ শোনায়, আপনি যদি উচ্চতর বিট রেটের প্লাসবো চান, বা আপনি যদি সাউন্ড ইঞ্জিনিয়ার হন তবে আপনি একটি সেটিংস চেষ্টা করতে পারেন 5।

ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a

দরকার নেই -map_metadata, যেহেতু ffmpeg স্বয়ংক্রিয়ভাবে মেটাডেটা স্থানান্তর করবে (এবং আমি নিশ্চিত যে অ্যাভকনভও তা করবে)।

একটি নির্দিষ্ট বিট রেট 320 কেবিট / সেটের জন্য (গুরুত্ব সহকারে এটি মূল্যহীন নয়, এএসি অডিও স্বচ্ছতা বনাম অরিজিনাল সিডি অডিও প্রায় 128 কেবিট / সেকেন্ডে অর্জন করে):

ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k

neroAacEnc

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

neroAacEncনীরো ওয়েবসাইট থেকে উপলব্ধ । এটি আনজিপ করুন এবং এটি আপনার AT PATH এর কোথাও রাখুন।

দুর্ভাগ্যক্রমে neroAacEncকেবল ডাব্লুএইভি অডিওটিকে ইনপুট হিসাবে নিতে পারে; আপনি ডিকোডার হিসাবে avconv বা ffmpeg ব্যবহার করে এটি পেতে পারেন:

avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a

দুর্ভাগ্যক্রমে, এটি মেটাডেটা কেটে ফেলবে; হস্তান্তরের বিষয়ে উপর যে, ব্যবহার avprobe / ffprobe (সঙ্গে -show_formatনির্যাস এবং neroAacTag করার জন্য) সন্নিবেশ করতে। একটি ব্যাশ স্ক্রিপ্ট সম্ভবত ক্রমযুক্ত হবে।

নেরোএএসিএন্সে হাইড্রোজেন অডিও পাতায় দেখুন : মেমরি থেকে, -q0.4-এর একটি সেটিংস আমার কাছে দুর্দান্ত লাগছিল। আপনি এটি দিয়ে কিছুটা রেট লক্ষ্য করে -brতুলতে পারেন (আবার, আমি মনে করি এটি উপায় ওভারকিল হবে):

avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a

সম্পাদনা: এখানে অডিও ফাইলগুলিকে m4a এ neroAacEnc এর সাথে রূপান্তর করার জন্য স্ক্রিপ্ট, তারপরে ffprobe এবং neroAacTag এর সাথে ট্যাগ করা (সেগুলি আপনার $ PATH ডিরেক্টরিতে থাকা দরকার)। এটি একাধিক ইনপুট ফাইল নিতে পারে, সুতরাং আপনি যদি এটি সংরক্ষণ করে থাকেন তবে আপনি convert-to-m4aপ্রতিটি এফএলসি ফাইলকে একটি ডিরেক্টরিতে রূপান্তর করতে পারেন

convert-to-m4a *.flac

এটি কেবল এফএলসি ফাইলগুলিতে সীমাবদ্ধ নয়; আপনার ffmpeg / avconv ডিকোড করতে পারে যে কোনও অডিও ফর্ম্যাট কাজ করবে। আপনি ffprobe এবং ffmpeg এভপ্রোব এবং অ্যাভকনভিতে পরিবর্তন করতে পারেন:

#!/usr/bin/env bash

until [[ "$1" = '' ]]; do
  ffmpeg -i "$1" -f wav - | neroAacEnc -if - -ignorelength -q 0.4 "${1%.*}.m4a"
  tags=()
  while read -r; do
    tags+=("$REPLY")
  done < <(ffprobe -i "$1" -show_format 2>/dev/null | sed -ne 's/date/year/' -e '/TAG:/s/TAG/-meta/p')
  neroAacTag "${1%.*}.m4a" "${tags[@]}"
  shift
done
exit 0

আমি আপনার প্রতিক্রিয়ার প্রশংসা করি এবং যত তাড়াতাড়ি সম্ভব চেষ্টা করব এবং এটি কীভাবে হয় তা আপনাকে জানাতে চাই। আমি প্রথম / ffmpeg বিকল্পটি পছন্দ করব, তবে ffmpeg হ'ল আমাকে অ্যাভকনভি ব্যবহার করতে বলেছে কারণ এটি আমার ধারণা / নতুন পছন্দ। (এফওয়াইআই)
স্থির

1
@ স্ট্যাটিক প্রকৃতপক্ষে, এফএফএমপিগ এবং অ্যাভকনভ উভয়ই সক্রিয়ভাবে উন্নত প্রকল্পগুলি; দেবিয়ান / উবুন্টু সংগ্রহস্থলের 'ffmpeg' আসল ffmpeg নয়, তবে অ্যাভকনভ বিকাশকারীদের দ্বারা সরবরাহ করা একটি জাল, এবং এই বার্তাটি প্রচুর বিভ্রান্তির সৃষ্টি করেছে। দেখুন 'কে ffmpeg, libav, এবং avconv এর মধ্যে পার্থক্য এবং সম্পর্ক আমাকে বলতে পারে?' এবং 'দ্য এফএফম্পেগ / লিবাভ পরিস্থিতি'
অসুরসপ

আরও মনে রাখবেন যে এখানে স্ক্রিপ্টটি ব্যাপকভাবে পরীক্ষা করা হয়নি, এটি কিছু মেটাডেটা দিয়ে ভালভাবে ভেঙে যেতে পারে
31'13

2
"আপনাকে নিজেরাই সংকলন করতে হবে": যেহেতু @ স্ট্যাটিক একটি ম্যাকের কথা উল্লেখ করেছেন, তাই আমি বলাই বুদ্ধিমানের সাথে বলেছিলাম যে আমি হোমব্রিউয়ের সাথে সহজেই লিফফডকে_এ্যাক দিয়ে ffmpeg ইনস্টল করেছি। brew install ffmpeg --with-fdk-aac। আপনি বিকল্পগুলির একটি তালিকা পেতে পারেন brew info ffmpeg। তবে আপনার স্ত্রীর ম্যাক চুরি না করা ভাল ধারণা :)
জোনাথন কোমার

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

6

আমি এফএফএম্পিকে ব্যবহার করার পরামর্শ দিচ্ছি এফএলএসি থেকে এএসি তে রূপান্তর করতে। এফএফএমপিগ সহজেই একটি ম্যাক ওএস এক্স মেশিনে মদযুক্ত ইনস্টল করা থাকে:

brew install ffmpeg

তারপরে বর্তমান ডিরেক্টরিতে থাকা সমস্ত এফএলসি ফাইলগুলিকে এএসি তে রূপান্তর করতে নিম্নলিখিত কমান্ডটি চালান:

for i in *flac;do of="${i/.flac/.m4a}"; ffmpeg -i "${i}" -vn -acodec libvo_aacenc -b:a 320k -f mp4 -y "${of}";done

এবং এগুলিকে এমপি 3 এ রূপান্তর করতে:

for i in *flac;do of="${i/.flac/.mp3}"; ffmpeg -i "${i}" -vn -acodec mp3 -b:a 320k -f mp3 -y "${of}";done

2
ফ্ল্যাক ৩.১.৪ ব্যবহার করে আমাকে এএসি রূপান্তরকরণের জন্য নিম্নলিখিতটি ব্যবহার করতে হয়েছিল: for i in *flac;do of="${i/.flac/.m4a}"; ffmpeg -i "${i}" -vn -acodec aac -b:a 320k -f mp4 -y "${of}";done
ইয়ানিক উর্ম

2

কোনও সমর্থিত অডিও ফর্ম্যাটটিকে এএসি তে রূপান্তর করার জন্য এটি আমার স্ক্রিপ্ট মোড়ক (libfdk-aac এনকোডার যা ffmpeg উইকি দ্বারা প্রস্তাবিত aac এনকোডার হিসাবে ব্যবহার করা হয়)।

#!/usr/bin/env python2.7

from optparse import OptionParser
from subprocess import call
from os.path import splitext
import sys, os

def ffaac(filename, opts):
    cmd = ['ffmpeg', '-hide_banner', '-y', '-i', filename, 
            '-vn', '-c:a', 'libfdk_aac']
    profile = {'lc':'aac_low', 'he':'aac_he', 'he2':'aac_he_v2', 
            'ld':'aac_ld', 'eld':'aac_eld'}
    if not opts.br and not opts.vbr:
        cmd.extend(['-b:a', '320k'])
    if opts.br:
        cmd.extend(['-b:a', str(opts.br)+'k'])
    if opts.vbr:
        cmd.extend(['-vbr', opts.vbr])
    if opts.ar:
        cmd.extend(['-ar', opts.ar])
    if opts.ch:
        cmd.extend(['-ac', opts.ch])
    cmd.extend(['-profile:a', profile[opts.prof]])
    if opts.prof == 'eld' and opts.sbr:
        cmd.extend(['-eld_sbr', '1'])
    cmd.extend(['-f', 'adts'])

    if filename.lower().endswith('.aac'):
        return
    outfile = splitext(filename)[0] + '.aac'
    cmd.append(outfile)

    return call(cmd)

if __name__=='__main__':
    parser = OptionParser(sys.argv[0]+' [OPTIONS] FILE ...')
    parser.add_option('-b', metavar='NUM', type=int, dest='br', help='bitrate')
    parser.add_option('-r', metavar='NUM', choices=['8000','11025','16000','22050','32000', '44100', '48000'], dest='ar', help='sample rate: 8000/11025/22050/32000/44100/48000')
    parser.add_option('-c', metavar='NUM', choices=['1','2'],dest='ch', help='channels: 1/2')
    parser.add_option('-p', metavar='TYPE',choices=['lc', 'he', 'he2', 'ld', 'eld'], default='lc', dest='prof', help='profile: lc/he/he2/ld/eld')
    parser.add_option('-v', metavar='QUAL', choices=['1', '2', '3', '4', '5'], dest='vbr', help='vbr quality: 1/2/3/4/5')
    parser.add_option('-s', action='store_true', dest='sbr', help='use SBR for ELD')
    parser.add_option('-d', action='store_true', dest='delete',help='delete source after converting')
    opts,  args = parser.parse_args()
    for f in args:
        if ffaac(f, opts) == 0 and opts.delete :
            try:
                os.remove(f)
            except OSError:
                pass

কমান্ড লাইন সহায়তা বার্তা:

Usage: /Users/leon/bin/ffaac.py [OPTIONS] FILE ...

Options:
  -h, --help  show this help message and exit
  -b NUM      bitrate
  -r NUM      sample rate: 8000/11025/22050/32000/44100/48000
  -c NUM      channels: 1/2
  -p TYPE     profile: lc/he/he2/ld/eld
  -v QUAL     vbr quality: 1/2/3/4/5
  -s          use SBR for ELD
  -d          delete source after converting

1

পরিপূরক উত্তর (অশুভ উত্তরের জবাব)

সামলাতে

  • সাব-ডিরেক্টরিতে সমস্ত ফাইল
  • ফাইলের নামের মধ্যে স্থান ( findএর -print0+ + xarg'র -0)
  • (তাদের উৎস FLAC ফাইল হিসেবে একই ডিরেক্টরির মধ্যে নব নির্মিত m4a ফাইলগুলি রাখুন $1থেকে sh -cএর অবস্থানগত যুক্তি --FILEদ্বারা সেট xargs 'এর -I)

এক রৈখিক

find . -name '*.flac' -print0 | xargs -0 -I FILE sh -c 'ffmpeg -i "$1" -c:a libfdk_aac -vbr 3 "${1%.flac}.m4a"' -- FILE
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.