Размеры видео играют решающую роль в различных приложениях, таких как обработка, перекодирование и отображение видео. В этой статье блога мы рассмотрим различные методы извлечения размеров видео с помощью ffprobe, мощного инструмента командной строки, предоставляемого мультимедийной платформой FFmpeg. Мы также предоставим примеры кода для демонстрации каждого метода. Итак, приступим!
Метод 1: использование базовой команды ffprobe
Самый простой способ получить размеры видео — использовать базовую команду ffprobe. Вот пример:
ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4
Метод 2: анализ вывода JSON
ffprobe также может выводить метаданные в формате JSON, что упрощает извлечение конкретной информации программным способом. Рассмотрим следующий пример на Python:
import subprocess
import json
def get_video_dimensions(filename):
cmd = ['ffprobe', '-v', 'quiet', '-print_format', 'json', '-show_streams', '-select_streams', 'v:0', filename]
output = subprocess.check_output(cmd).decode('utf-8')
data = json.loads(output)
width = data['streams'][0]['width']
height = data['streams'][0]['height']
return width, height
dimensions = get_video_dimensions('input.mp4')
print(f"Width: {dimensions[0]}, Height: {dimensions[1]}")
Метод 3: использование библиотек FFmpeg
Библиотеки FFmpeg предоставляют API для различных языков программирования, обеспечивая прямой доступ к метаданным видео. Вот пример на C с использованием библиотеки libavformat:
#include <libavformat/avformat.h>
int main() {
av_register_all();
AVFormatContext* formatContext = avformat_alloc_context();
if (avformat_open_input(&formatContext, "input.mp4", NULL, NULL) != 0) {
printf("Failed to open file\n");
return -1;
}
if (avformat_find_stream_info(formatContext, NULL) < 0) {
printf("Failed to retrieve stream information\n");
return -1;
}
int streamIndex = av_find_best_stream(formatContext, AVMEDIA_TYPE_VIDEO, -1, -1, NULL, 0);
if (streamIndex < 0) {
printf("Failed to find video stream\n");
return -1;
}
AVStream* videoStream = formatContext->streams[streamIndex];
int width = videoStream->codecpar->width;
int height = videoStream->codecpar->height;
printf("Width: %d, Height: %d\n", width, height);
avformat_close_input(&formatContext);
return 0;
}
В этой статье мы рассмотрели три различных метода определения размеров видео с помощью ffprobe. Мы начали с базовой команды ffprobe, затем перешли к анализу вывода JSON для программного доступа и, наконец, продемонстрировали, как использовать библиотеки FFmpeg на C. В зависимости от ваших требований и предпочитаемого языка программирования вы можете выбрать наиболее подходящий метод для эффективно извлекайте размеры видео.