Apakah ada perintah yang dianalogikan dengan afinfo untuk video pada Mac OS X?

12

Mac OS X memiliki perintah afinfountuk mengambil info file audio. Apakah ada perintah serupa untuk mengambil info file video untuk video ( .mov, .m4v) selain mdlsperintah?

merokok
sumber

Jawaban:

28

Tidak ada yang datang dengan OS X itu sendiri.

Anda dapat mengunduh antarmuka baris perintah MediaInfo (lihat tautan "CLI" di bawah x64). Ini juga tersedia melalui Homebrew dalam media-infopaket.

Contoh penggunaan terminal:

$ mediainfo myMovie.mov

Untuk video, itu akan menghasilkan sesuatu seperti output berikut:

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                           : [email protected]
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
slhck
sumber
Juga port install mediainfojika menggunakan ports.
toddkaufmann
5

Anda bisa mendapatkan banyak informasi menggunakan perintah mdls builtin, yang merupakan utilitas metadata file tujuan umum. Ini berfungsi tidak hanya untuk file video, tetapi untuk semua jenis file. Ini adalah utilitas yang digunakan oleh finder ketika Anda menggunakan perintah menu "get info".

Inilah bagian dari output yang saya dapatkan ketika dengan perintah pada file mp4 bernama 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

Selanjutnya, Anda dapat menentukan atribut mana yang ingin Anda daftarkan. Misalnya, untuk hanya mendapatkan durasi film:

$ mdls -name kMDItemDurationSeconds forest.mp4
kMDItemDurationSeconds = 29.96166666666667
BrunoFrechette
sumber
Saya pikir ini adalah jawaban yang sangat bagus, karena menggunakan alat yang sama dengan sistem, dan itu bekerja di luar kotak. Seharusnya menang;)
Christian Tismer
0

Jika ini membantu, berikut ini adalah skrip kecil untuk menampilkan nama file dan panjang untuk semua MP4 di direktori tertentu:

#! /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

Tidak berfungsi jika ada spasi dalam nama file. Jika video Anda> 1 jam, sesuaikan REGEXP agar sesuai.

Ric
sumber
0

Peningkatan kecil dibandingkan menggunakan mediainfo.

Anda akan membutuhkan jq( brew install jq) dan menggunakan output JSON darimediainfo

Kemudian Anda dapat menggunakannya sebagai script yang berdiri sendiri atau memasukkannya ke dalam Anda ~/.bashrcatau ~/.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 $*
bonkey
sumber