Что такое FFmpeg и как он используется в тестировании?

«Что такое FFmpeg и как он используется в тестировании?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

FFmpeg — это кроссплатформенный набор библиотек и инструментов командной строки с открытым исходным кодом для записи, конвертации, потоковой передачи и анализа мультимедийных файлов.

Основные возможности, релевантные для тестирования:

  • Конвертация форматов (например, MP4 в AVI, MKV).
  • Проверка целостности и метаданных медиафайлов.
  • Извлечение аудиодорожки или субтитров из видео.
  • Изменение параметров (разрешение, битрейт, частота кадров).
  • Создание тестовых медиафайлов заданной длительности и характеристик.

Пример использования в автоматизированном тестировании (скрипт на Python):

import subprocess
import json

def verify_video_file(file_path):
    """Проверяет валидность видеофайла и извлекает его метаданные."""
    # Команда для получения информации в формате JSON
    cmd = [
        'ffprobe',  # Инструмент из комплекта FFmpeg
        '-v', 'quiet',
        '-print_format', 'json',
        '-show_format',
        '-show_streams',
        file_path
    ]

    result = subprocess.run(cmd, capture_output=True, text=True)

    if result.returncode != 0:
        return False, "Файл повреждён или не является медиафайлом"

    info = json.loads(result.stdout)

    # Пример проверок:
    duration = float(info['format']['duration'])
    video_stream = next((s for s in info['streams'] if s['codec_type'] == 'video'), None)

    assert duration > 0, "Длительность должна быть положительной"
    assert video_stream is not None, "Файл должен содержать видеопоток"
    assert video_stream['codec_name'] == 'h264', "Кодек видео должен быть H.264"

    return True, info

# Пример команды FFmpeg для создания тестового файла (1 секунда чёрного экрана)
# ffmpeg -f lavfi -i color=c=black:s=1280x720:d=1 -c:v libx264 test_video.mp4

Использование: Автоматизация проверок медиаконтента в CI/CD, подготовка тестовых данных, анализ производительности кодирования.