Это можно сделать с помощью проекта FFmpeg :
ffprobe 'Breaking The Girl-EVmfXA3vjuE.mp4'
Результат:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Breaking The Girl-EVmfXA3vjuE.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2016-10-05T03:35:07.000000Z Duration: 00:04:55.38, start: 0.000000, bitrate: 330 kb/s Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 200 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default) Metadata: creation_time : 2016-10-05T03:35:07.000000Z handler_name : ISO Media file produced by Google Inc. Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default) Metadata: creation_time : 2016-10-05T03:35:07.000000Z handler_name : ISO Media file produced by Google Inc.
Оба выражения определяют все файлы.
Нет, первое правило сообщает make
, как получить файл .o
с соответствующим файлом .c
. Обратите внимание на единственное число: один файл.
Второе правило (утверждает) сообщает make
, как получить группу файлов .o
при наличии другой группы соответствующих файлов .c
. Обратите внимание на множественное число: все файлы .c
, полученные в результате подстановки *. C
.
Кстати, %. O:% c
является расширением GNU.
С другой стороны, вы не узнаете, как использовать make
в StackOverflow. Вместо этого вам следует подумать о чтении книги.
Конструкция:
%.o: %.c
$(CC) -c $^ -o $@
представляет собой шаблонное правило , которое является типом неявного правила. Он определяет одну цель и одну зависимость и вызывает один вызов $ (CC)
для каждой цели. Хотя это:
SOURCE := $(wildcard *.c)
$(SOURCE:.c=.o): SOURCE
$(CC) -c $^ -o $@
является стандартным правилом, но у него (возможно) много целей и много зависимостей. Тем не менее, он вызовет $ (CC)
только один раз.