Câu trả lời:
Không có cái nào đi kèm với OS X.
Bạn có thể tải xuống giao diện dòng lệnh MediaInfo (xem liên kết "CLI" trong x64). Nó cũng có sẵn thông qua Homebrew trong media-info
gói.
Sử dụng thiết bị đầu cuối mẫu:
$ mediainfo myMovie.mov
Đối với video, nó sẽ tạo ra một cái gì đó giống như đầu ra sau:
Format : MPEG-4
Format profile : QuickTime
Format settings : Compressed header
Codec ID : qt
File size : 12.1 MiB
Duration : 2mn 27s
Overall bit rate mode : Variable
Overall bit rate : 689 Kbps
Encoded date : UTC 2006-06-13 06:43:09
Tagged date : UTC 2006-06-13 06:43:12
Writing library : Apple QuickTime
Video #1
ID : 2
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main@L2.1
Format settings, CABAC : No
Format settings, ReFrames : 2 frames
Format settings, GOP : M=2, N=24
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 2mn 23s
Source duration : 2mn 23s
Bit rate mode : Variable
Bit rate : 569 Kbps
Maximum bit rate : 770 Kbps
Width : 320 pixels
Height : 240 pixels
Display aspect ratio : 4:3
Frame rate mode : Constant
Frame rate : 24.975 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.297
Stream size : 9.74 MiB (80%)
Source stream size : 9.74 MiB (80%)
Language : English
Encoded date : UTC 2006-06-13 06:18:04
Tagged date : UTC 2006-06-13 06:43:12
Color primaries : BT.601-6 525, BT.1358 525, BT.1700 NTSC, SMPTE 170M
Transfer characteristics : BT.709-5, BT.1361
Matrix coefficients : BT.601-6 525, BT.1358 525, BT.1700 NTSC, SMPTE 170M
Bạn có thể nhận được nhiều thông tin bằng cách sử dụng lệnh dựng sẵn mdls, đây là một tiện ích siêu dữ liệu tệp mục đích chung. Nó hoạt động không chỉ cho các tập tin video, mà cho tất cả các loại tập tin. Nó là tiện ích được người tìm thấy sử dụng khi bạn sử dụng lệnh menu "lấy thông tin".
Đây là một phần của đầu ra mà tôi nhận được khi có lệnh trên tệp mp4 có tên Forest.mp4
$mdls forest.mp4
kMDItemCodecs = (
"H.264"
)
kMDItemContentCreationDate = 2014-10-17 05:08:09 +0000
kMDItemContentModificationDate = 2014-10-17 05:08:09 +0000
kMDItemContentType = "public.mpeg-4"
kMDItemContentTypeTree = (
"public.mpeg-4",
"public.movie",
"public.audiovisual-content",
"public.data",
"public.item",
"public.content"
)
kMDItemDateAdded = 2016-01-11 20:30:01 +0000
kMDItemDisplayName = "forest.mp4"
kMDItemDownloadedDate = (
"2014-12-08 15:11:56 +0000"
)
kMDItemDurationSeconds = 29.96166666666667
kMDItemFSContentChangeDate = 2014-10-17 05:08:09 +0000
kMDItemFSCreationDate = 2014-10-17 05:08:09 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "forest.mp4"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 45363721
kMDItemFSTypeCode = ""
kMDItemKind = "MPEG-4 Movie"
kMDItemLogicalSize = 45363721
kMDItemMediaTypes = (
Video
)
kMDItemPhysicalSize = 45367296
kMDItemPixelHeight = 1080
kMDItemPixelWidth = 1920
kMDItemStreamable = 0
kMDItemTotalBitRate = 12110
kMDItemVideoBitRate = 12110
Hơn nữa, bạn có thể chỉ định thuộc tính nào bạn muốn liệt kê. Ví dụ: để chỉ lấy thời lượng của bộ phim:
$ mdls -name kMDItemDurationSeconds forest.mp4
kMDItemDurationSeconds = 29.96166666666667
Nếu nó hữu ích, đây là một đoạn script nhỏ để xuất tên tệp và độ dài cho tất cả các MP4 trong một thư mục cụ thể:
#! /bin/bash
# get video length of file.
for MP4 in `ls *mp4`
do
echo "\"$MP4\",\c"
mediainfo $MP4 | grep "^Duration" | head -1 | sed 's/^.*: \([0-9][0-9]*\)mn *\([0-9][0-9]*\)s/00:\1:\2/'
done
# END
Không hoạt động nếu có khoảng trắng trong tên tệp. Nếu video của bạn> 1 giờ chỉ cần điều chỉnh REGEXP cho phù hợp.
Cải thiện nhỏ so với sử dụng mediainfo
.
Bạn sẽ cần jq
( brew install jq
) và sử dụng đầu ra JSON từmediainfo
Sau đó, bạn có thể sử dụng nó như một tập lệnh độc lập hoặc đặt nó vào ~/.bashrc
hoặc ~/.zshrc
:
#!/bin/bash
IFS=$'\n'
# accepts any list of files, eg. video_times *.{mp4,mov}
video_times() {
for file in $* ; do
duration=$(mediainfo --Output=JSON "$file" | jq -r '.media.track[] | select(."@type"=="General") | .Duration | tonumber | floor')
minutes=$(($duration / 60))
seconds=$(($duration % 60))
echo "$file: ${minutes}m${seconds}s"
done
}
video_times $*
port install mediainfo
nếu sử dụngports
.