Xuất tổng chiều dài của tệp mp3 trong một thư mục?


2

Tôi có nhiều thư mục của các tệp mp3 và tôi muốn có một danh sách thời lượng kết hợp của tất cả các mp3 trong mỗi thư mục. Đó sẽ là giải pháp lý tưởng, nhưng một số phương tiện thực hiện in thư mục đính kèm thời lượng mp3 riêng lẻ cũng sẽ tốt. Bất kì sự trợ giúp nào đều được đánh giá cao. Tôi đang chạy Windows 7 Home Premium, nhưng có quyền truy cập vào một số HĐH Windows / Mac khác.

Chỉnh sửa - Tôi thực sự tìm thấy một giải pháp bằng cách sử dụng chức năng xuất trong chương trình phần mềm miễn phí Tagscanner.


Tôi có một ứng dụng WPF tôi đã viết sẽ làm điều đó (trong số những thứ khác), nhưng tôi chưa tải nó lên bất cứ nơi nào - vẫn thực sự chỉ để sử dụng nội bộ. Tuy nhiên, nếu không có gì khác tôi có thể cho phép bạn có một bản sao.
ChrisF

Câu trả lời:


5

Nếu bạn đang làm việc trên Mac OS hoặc bất kỳ hệ thống Unix nào, bạn có thể cài đặt ffmpeg và sử dụng lệnh sau để trích xuất thời lượng của một tệp:

ffmpeg -i filename.mp3 2>&1 | egrep "Duration" | cut -d ' ' -f 4 | sed s/,//

Ví dụ, điều đó sẽ trả về "00: 08: 17.4".

Tất nhiên, bạn có thể sử dụng tập lệnh này trong tập lệnh shell, vì vậy, ví dụ như điều này sẽ liệt kê tất cả các tệp mp3 trong một thư mục và thời lượng của chúng ở bên phải.

#!/bin/bash
# call me with mp3length.sh directory
# e.g. ./mp3length . 
# or ./mp3length my-mp3-collection

for file in $1/*.mp3
do
    echo -ne $file "\t"
    ffmpeg -i "$file" 2>&1 | egrep "Duration"| cut -d ' ' -f 4 | sed s/,//
done

4

Bạn có thể lấy nó dễ dàng với một lớp lót:

$ for file in *.mp3; do mp3info -p "%S\n" "$file"; done | paste -sd+ | sed 's+\(.*\)+(\1)/60+' | bc

Giải thích:

  • mp3info : có độ dài mp3 riêng lẻ tính bằng giây
  • dán : kết hợp cột kết quả với + làm dải phân cách
  • quyến rũ : đặt () khoảng tổng và chia cho 60 (phút
  • bc : thực hiện phép toán số học

2

Bạn có thể thêm một cột vào danh sách tệp trong Wtubndows Explorer. Thêm "Độ dài" thuộc tính colum vào thư mục. Sau đó chọn tất cả các tệp mp3 trong thư mục. Bạn có thể thấy tổng chiều dài trong khung tóm tắt dưới cùng của win.Ex ...

(Không phải toàn bộ giải pháp cho câu hỏi của bạn nhưng bạn đã nói "mọi trợ giúp đều được đánh giá cao: D)


Cảm ơn, đây là khá nhiều những gì tôi làm vào lúc này. Vấn đề là các tệp này nằm trên nhiều ổ đĩa cứng, vì vậy tôi muốn có thể xuất thông tin này để sử dụng trong bảng tính và tương tự mà không cần thực hiện thủ công.
Anastasia

1

Một chút muộn trong ngày (thập kỷ!), Nhưng tôi muốn làm chính xác điều tương tự. Nhờ vào Quyền hạn của Windows , đây là một kịch bản nhỏ mà tôi đã viết ngày hôm nay.

$path = '~\MS Subbulakshmi\1. Toronto 1977\'
$shell = New-Object -COMObject Shell.Application
$folder = $path
$shellfolder = $shell.Namespace($folder)
$total_duration = [timespan] 0
foreach($file in Get-ChildItem $folder)
{
    $shellfile = $shellfolder.ParseName($file.Name)
    $total_duration = $total_duration + [timespan]$shellfolder.GetDetailsOf($shellfile, 27);
}
Write-Host "Total Duration of $folder is $total_duration"

Đầu ra sẽ như thế này

Tổng thời lượng của ~ \ MS Subbulakshmi \ 1. Toronto 1977 \ là 01:52:28

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.