แปลง FLAC เป็น ALAC บน Windows อย่างไม่ลำบาก


10

ฉันสงสัยว่าใครมีเวิร์กโฟลว์ที่สะอาดและไม่เจ็บปวดสำหรับการแปลงไฟล์ FLAC เป็น ALAC ที่เทียบเท่าหรือไม่ มันควรจะเป็นการแปลงที่สมบูรณ์แบบบิตซึ่งหมายความว่ามันไม่ควรยากมาก แต่ .... มันเป็น

ทำไมฉันต้องทำเช่นนี้? (ก่อนที่กลุ่มคน OS จะกินฉันมีชีวิตอยู่) ส่วนใหญ่เป็นเพราะแอปเสียงที่ฉันใช้ (Serato Scratch Live) ไม่รองรับ FLAC และแม้จะมีผู้ใช้อย่างต่อเนื่องตลอดระยะเวลาห้าปีที่ผ่านมา (!) ส่วนใหญ่จะไม่ ในขณะที่ อย่างไรก็ตามพวกเขาทำแฮ็คด้วยกันสนับสนุน ALAC

นอกจากนี้ยังดูเหมือนว่าการให้ iTunes เล่นไฟล์ FLAC (และลดการแปลงให้ใช้พื้นที่อย่างมีประสิทธิภาพบน iPod ของฉัน) เป็นไปไม่ได้เลยทีเดียว

สิ่งที่จับได้เพียงอย่างเดียวคือฉันต้องการเก็บเมตาแท็กแปลก ๆ ไว้ด้วยกัน (BPM และคีย์เพลง) ที่จะเจ็บปวดเล็กน้อยในการงอกใหม่ ฉันทำอะไรกับ Windows หรือ Linux

ขอบคุณ

ทอม

คำตอบ:


11

ใน Ubuntu คุณสามารถเปิดเทอร์มินัลนำทางไปยังไดเรกทอรีที่เป็นปัญหาและทำลูปคำสั่งต่อไปนี้:

for f in *.flac; do ffmpeg -i "$f" -acodec alac "${f%.flac}.m4a"; done
  • จะแปลง.flacไฟล์ทั้งหมดในไดเรกทอรีเป็น.alacไฟล์โดยใช้วิธีที่สมบูรณ์แบบ
  • ffmpegไม่ได้มาพร้อมกับ Ubuntu ดังนั้นคุณต้องติดตั้งจาก repos อย่างไรก็ตามฉันไม่สามารถบอกได้ว่าจะเก็บข้อมูลแท็ก BPM ของคุณไว้

นอกจากนี้ยังดูเหมือนว่าการให้ iTunes เล่นไฟล์ FLAC (และลดการแปลงให้ใช้พื้นที่อย่างมีประสิทธิภาพบน iPod ของฉัน) เป็นไปไม่ได้เลยทีเดียว

มีโปรแกรมชื่อflukeformacที่อาจอนุญาตให้คุณเล่น.flacไฟล์ใน iTunes
สำหรับการแปลงเพื่อการใช้งาน iPod อย่างมีประสิทธิภาพวงคำสั่งต่อไปนี้จะทำการหลอกลวง:

for file in *.flac; do $(flac -cd "$file" | lame --preset fast extreme - "${file%.flac}.mp3"); done`
  • คุณอาจต้องการแทนที่--preset fast extremeด้วยตัวเลือกบิตเรตที่ต่ำกว่า
    ( เพิ่มเติมเกี่ยวกับที่lameตั้งไว้ล่วงหน้า)

1
คำตอบที่ยอดเยี่ยมและครอบคลุม ขอบคุณ
Tom Corelis

ฉันพยายามใช้ static build ของ ffmpeg ใน windows 10 มันสามารถแปลง acodec alac ได้ แต่ไม่สามารถแปลง vcodec h264 ได้แม้ว่า h264 เป็นรูปแบบที่รองรับในffmpeg --codecs
user1022209

6

สำหรับ Windows ที่ใช้PowerShellและffmpeg(ตาม @boehj answer):

Ls -Recurse -Include *.flac | %{C:\path_to_ffmpeg\ffmpeg.exe -i $_.FullName -acodec alac ($_.DirectoryName+"\\"+$_.BaseName+'.m4a')}


4

ไปที่บรรทัดคำสั่ง (Windows) ติดยาเสพติดที่นั่น:

ฉันได้เขียนสคริปต์อัตโนมัติสำหรับ iTunes สำหรับ Windows ที่ชุดนั้นนำเข้าไฟล์ FLAC ทั้งหมดจากโฟลเดอร์ที่กำหนดและโฟลเดอร์ย่อยลงใน iTunes ในรูปแบบ ALAC โดยรักษารูปแบบข้อมูลสำคัญเช่นอัลบั้มศิลปินและชื่อเพลง มันต้องการflac.exeและmetaflac.exeยูทิลิตี้ตัวช่วยขนาดเล็กสำหรับการแปลงชุดอักขระ คุณสามารถดาวน์โหลดแพ็คเกจสำเร็จรูปที่มีการอ้างอิงเหล่านั้น (ดูด้านล่าง) หรือแยกโครงการของฉันใน GitHub

สำหรับเรื่องราวที่เต็มดาวน์โหลดไบนารีข้อ จำกัด อื่น ๆ โปรดดูที่ฉันโพสต์บล็อก


2

ใน Windows คุณสามารถเปิดคำสั่งที่รวดเร็วและเรียกใช้คำสั่งต่อไปนี้ในการแปลงไฟล์ FLAC เพื่อ ALAC ในไดเรกทอรีเดียวกันบนไดรฟ์ที่แตกต่างกัน (ในแบบที่ฉันชอบที่จะมีมัน) โดยใช้qaac, libFLACและ iTunes:

  1. เปลี่ยนไดเรกทอรีการทำงานปัจจุบันเป็นไดเรกทอรีแหล่งที่มีไฟล์ flac ของคุณ ( s:\musicใช้ที่นี่เป็นตัวอย่าง)

  2. คัดลอกโฟลเดอร์ทั้งหมดของคุณไปยังไดเรกทอรีปลายทางรวมถึงไฟล์หน้าปกอัลบั้มที่มีชื่อไฟล์ ( folder.(jpg|png|gif)):

    robocopy "s:\music" "d:\music" folder.jpg folder.png folder.gif /E

    ตัวเลือก/Eรวมถึงไดเรกทอรีที่ว่างเปล่า หากคุณไม่ต้องการคัดลอกพวกเขาใช้/Sตัวเลือก

  3. ใช้qaacเพื่อแปลงไฟล์ FLAC ทั้งหมดในไดเรกทอรีนั้นเป็นไฟล์ ALAC บนไดรฟ์อื่นในลักษณะ 'สมบูรณ์แบบบิต' และเก็บเมตาดาต้าดั้งเดิมส่วนใหญ่ไว้:

    FOR /R %I IN (*.flac) DO qaac64 -A --copy-artwork -o "d:%~pI%~nI.m4a" "%I"

    การแทรกIF NOT EXIST "d:%~pI%~nI.m4a"คำสั่งด้านบนหลังจากนั้นDOจะข้ามการแปลงไฟล์ที่มีอยู่แล้วในไดเรกทอรีปลายทาง

โปรดทราบว่า

  • ชื่อไดเรกทอรีในไดรฟ์ต้นทาง ( s:) และปลายทาง ( d:) จะต้องเหมือนกัน (ไม่เช่นนั้นคุณจะต้องแก้ไขตัวแปรในFORคำสั่งqaacไม่ให้สร้างไดเรกทอรีให้คุณ)
  • คุณต้องเปลี่ยนเป็นไดเรกทอรีต้นทาง ( s:\musicในตัวอย่างด้านบน) เพื่อให้คำสั่งทำงาน
  • ไดเรกทอรีปลายทาง ( d:\musicในตัวอย่างด้านบน) ควรว่างเปล่าเพื่อหลีกเลี่ยงการเขียนทับไฟล์
  • คุณสามารถใช้SUBSTคำสั่งเพื่อแมปไดเรกทอรีกับอักษรระบุไดรฟ์หากคุณต้องการสร้างไฟล์ ALAC ในไดรฟ์เดียวกัน
  • คุณจะต้องทำงานอย่างน้อยรุ่น 2.57 qaacและใช้ไบนารีที่เหมาะสมสำหรับรุ่น windows ของคุณ (32 บิตหรือ 64 บิต)
  • qaacจำเป็นต้องอยู่ในPATHตัวแปรWindows ของคุณหรือคุณจะต้องรวมเส้นทางแบบเต็มไปยังไบนารีในFORคำสั่งด้านบน
  • qaac ต้องการ iTunes หรือ QuickTime ติดตั้งเพื่อใช้งาน
  • qaacต้องการสำเนาที่ตรงกันของlibFLACDLL ในไดเรกทอรีเพื่ออ่านไฟล์ FLAC คุณสามารถค้นหาได้ในเว็บไซต์rarewares
  • iDevices ไม่สามารถจัดการไฟล์ที่มีอัตราตัวอย่างสูงกว่า 48,000 kHz และขนาดตัวอย่างสูงกว่า 24 บิต (ต้นปี 2559) iTunes จะไม่อนุญาตให้คุณคัดลอกไฟล์เหล่านี้ไปยังอุปกรณ์ของคุณเตือนคุณว่าแทร็ก "ไม่ถูกคัดลอกเพราะ" iDevice ไม่รองรับอัตราการสุ่มตัวอย่าง การโทรqaacด้วยตัวเลือก--rate 48000 --bits-per-sample 24จะแก้ไขปัญหานี้ แต่อย่าลืมใช้ตัวเลือกเหล่านี้กับไฟล์ความละเอียดสูงที่แท้จริงเพราะมิฉะนั้นคุณจะขยายไฟล์ทั้งหมดของคุณโดยไม่ได้รับอะไรเลย!
  • ไฟล์ ALAC จะหายไปจากข้อมูลระดับเสียงที่ Apple iTunes และ iDevices ใช้ในการตรวจสอบเสียง (ปรับระดับเสียงการเล่นเพลงให้อยู่ในระดับเดียวกัน) สามารถเพิ่มข้อมูลลงในไฟล์โดยใช้iTunes (ดูเหมือนว่าจะเก็บข้อมูลปริมาณไว้ในไลบรารีของมัน), beaTunes (ซอฟต์แวร์เชิงพาณิชย์), iVolume (ซอฟต์แวร์เชิงพาณิชย์) และเครื่องมืออื่น ๆ บนแพลฟอร์มฟอร์มต่าง ๆ
  • นี่ไม่ใช่เวิร์กโฟลว์การซิงโครไนซ์: คำสั่งด้านบนที่รันเป็นครั้งที่สองจะเพิ่มไฟล์ FLAC ที่คุณเพิ่มไปยังไดเรกทอรีต้นทางในไดเรกทอรีปลายทางของคุณ แต่จะไม่เก็บไดเรกทอรีสองเพลงของคุณซิงค์ (ไฟล์ที่ถูกเปลี่ยนชื่อจะส่งผลให้ ไฟล์ ALAC ที่ทำซ้ำที่มีชื่อแตกต่างกันไฟล์ที่ถูกลบจะไม่ถูกลบออกจากไดเรกทอรีปลายทางของคุณหากคุณใช้IF NOT EXISTเมตาดาต้า - การเปลี่ยนแปลงเนื่องจากการเรียกใช้ครั้งล่าสุดจะไม่ปรากฏในไฟล์ ALAC)

ยินดีต้อนรับสู่ Super User! ขอบคุณสำหรับการโพสต์คำตอบแรกที่ครอบคลุม :)
Excellll

1

FFmpegควรจะสามารถทำได้ มันขึ้นอยู่กับคุณที่จะหาคำสั่งที่ถูกต้องที่จะทำ


นี่คือโพสต์โบราณ แต่จริงๆแล้วมันมีความคิดเห็นมากกว่าทางออก โปรดพิจารณาขยายคำตอบ ขอบคุณ
fixer1234

1

ฉันพบว่าตัวเองกำลังถามคำถามที่คล้ายกันสำหรับรูปแบบที่แตกต่างกันดังนั้นฉันจึงทำhttps://www.blisshq.com/music-library-management-blog/2017/06/20/matrix-free-audio-file-converters/

หน้าเว็บที่กล่าวว่า ... foobar2000 ดังนั้นมันขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "ไม่เจ็บปวด" - ฟรีเช่นเดียวกับเบียร์


1

มีหลายวิธีในการแปลง FLAC เป็น ALAC

  • ใน Windows คุณสามารถใช้ foobar2000 และแพ็ค Encoder
  • บน Windows, Linux และ Mac คุณสามารถใช้ PowerShell, และflacffmpeg

    $folder = "d:\demo"
    
    # Convert flac to wav
    Get-ChildItem -Recurse "$folder\*.flac" | ForEach-Object {
      & C:\tools\flac.exe -d --force --silent $_.FullName
    }
    
    # Convert wav to alac
    Get-ChildItem -Recurse "$folder\*.wav" | ForEach-Object {
      $filename = [System.IO.Path]::ChangeExtension($_.FullName, ".m4a")
      & C:\tools\ffmpeg.exe -hide_banner -loglevel panic -i $_.FullName -acodec alac -sample_fmt s16p $fileName
    }
    
    # Remove wav and flac file
    Get-ChildItem -Recurse "$folder\*.wav" | Remove-Item
    Get-ChildItem -Recurse "$folder\*.flac" | Remove-Item

ตรวจสอบโพสต์บล็อกของฉันสำหรับรายละเอียดเพิ่มเติม: แปลงไฟล์เพลงจาก FLAC เป็น ALAC


0

MediaMonkeyสามารถทำสิ่งนี้ได้เช่นกัน แต่จะเก็บแท็ก BPM เท่านั้น (ฉันไม่ทราบว่าคีย์เพลงเป็นแท็กที่ได้มาตรฐานในรูปแบบเหล่านี้)

หมายเหตุ: คุณจะต้องซื้อ 'MediaMonkey Codec Pack' สำหรับการเข้ารหัส ALAC


0

ฉันใช้ FooBar และ iTunesEncode สำหรับตัวแปลง

  1. รับiTunesEncode
  2. ไปที่ FooBar> เลือกทั้งหมดในรายการเล่น FLAC ของคุณ> คลิกขวา - แปลง
  3. ด้านขวา> รูปแบบ> กำหนดเอง

    Encode Tool : path to iTunesEncode.exe
    Extension : m4a 
    Parameters : -d -e "Lossless Encoder" -a "%artist%" -l "%album%" -t "%title%" -g "%genre%" -y %date% -n %tracknumber% -i %s -o %d
    Format is: lossless
    next propery : 24
    
    DisplayInfo example :
    "Encoder name" - iTunes
    "Bitrate" - 1000
    "Setting" - Apple Lossless
  4. กรอกพารามิเตอร์อื่น ๆ เพื่อแปลง> บันทึกการกำหนดค่า (ทางเลือก)> แปลง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.