Как найти метку на видео

Сегодня видеосервис YouTube является для многих как развлекательной, так и образовательной платформой. Большинство пользователей Интернета пользуется ее услугами каждый день. Ведь ответы на большинство вопросов можно найти именно на YouTube. Удобнее не просто услышать, но еще увидеть, чем читать самому скучный текст. Вы учитесь новым для себя навыкам, смотрите обзоры на игры или фильмы, интересуетесь аналитикой? Все это есть на YouTube.

Как быстрой найти определенный фрагмент на видео в YouTube

💚 ПО ТЕМЕ: Как замедлять и ускорять YouTube-видео на iPhone и iPad.

Вот только видео может оказаться очень длинным, а вам понадобится перейти в ролике к конкретной временной отметке. Так бывает, когда вы следуете некоей видео-инструкции. В такой ситуации помогают таймкоды, где ролик разбит на части, каждая из которых имеет описание. Но можно в YouTube искать по видео и самостоятельно, что тоже довольно наглядно.

1. Запустите воспроизведение интересующего вас видео на YouTube.

2. Нажмите на экран. Вы увидите временную шкалу с ползунком воспроизведения, а также элементы управления.

Как быстрой найти определенный фрагмент на видео в YouTube

3. Потяните ползунок вертикально вверх.

Как быстрой найти определенный фрагмент на видео в YouTube

Неожиданно? Мало кто знает, что с ползунком можно поступать еще и так, все же обычно его просто перетягивают вправо или влево. После перемещения ползунка вверх временная шкала передвинется тоже вверх. А на ее месте появится горизонтальная лента с увеличенной раскадровкой ролика. По ней можно перемещаться и найти быстро нужный момент. Это куда удобнее, чем передвигать ползунок, пытаясь найти интересующий вас фрагмент.

Как быстрой найти определенный фрагмент на видео в YouTube

Существует еще один способ, позволяющий быстро перемещаться по видео вперед или назад отрезками по 10, 20, 30 сек. Об этом мы подробно рассказывали в этом материале.

🔥 Смотрите также:

  • Как увидеть все свои комменты на YouTube за все время?
  • Самые популярные видео на YouTube: ТОП 25 самых просматриваемых роликов на Ютубе за все время.
  • У кого больше всех подписчиков в Инстаграм – 40 самых популярных аккаунтов.

🍏 Мы в Telegram и YouTube, подписывайтесь!

Все знают, как искать нужную информацию в Google, конкретные сообщения в мессенджерах и специфические публикации в Инстаграме. А как искать информацию в видео на YouTube? Логично, что единственный способ найти что-то, что вам нужно, — это отсмотреть весь ролик целиком. В принципе, некоторые авторы снабжают свои видео содержанием с тайм-кодами, которое немного упрощает задачу, но кардинальным образом не решает. А что, если я скажу вам, что в YouTube есть функция, позволяющая найти вполне конкретный фрагмент по упоминанию одного-двух слов или фраз?

Как найти конкретный фрагмент видео на YouTube без тайм-кодов. В Ютубе есть удобная функция поиска по содержимому. Фото.

В Ютубе есть удобная функция поиска по содержимому

Как подписаться на YouTube Premium со скидкой за 130 рублей

Функция, о которой я говорю, — это транскрипция. Алгоритмы YouTube самостоятельно распознают, о чём идёт речь в видео, и формируют из этого своё содержание. Правда, оно больше техническое, чем пользовательское. Потому что, во-первых, не включает в себя обобщённых названий разделов ролика, а, во-вторых, строка перемотки при этом не делится на подразделы для удобного переключения. Однако переключение по темам, обсуждение которых ведётся в видео, транскрипция всё равно предусматривает, хоть и несколько иначе, чем мы привыкли.

Как найти нужный момент в видео

Допустим, я смотрю ролик журналиста AndroidInsider.ru Артёма Сутягина про фиолетовый iPhone 12, и мне нужно понять, что говорит Тим Кук про этот смартфон. Вот как выглядит список моих действий в этом случае:

  • Откройте YouTube и запустите нужное видео;
  • Под роликом нажмите на кнопку из трёх точек;

Как найти нужный момент в видео. Транскрипция доступна только в веб-версии Ютуб. Фото.

Транскрипция доступна только в веб-версии Ютуб

  • Выберите «Посмотреть расшифровку видео»;
  • Нажмите CMD+F (Ctrl+F), чтобы открыть поиск;

Как найти нужный момент в видео. Искать лучше только по корню или не дописывая слова целиком. Фото.

Искать лучше только по корню или не дописывая слова целиком

  • Введите ключевое слово (у меня это «Тим Кук»);
  • Найдите в блоке с транскрипцией нужный раздел.

Заблокируют ли YouTube в России? Что говорят в Google

Вообще, на практике всё устроено намного проще, чем кажется из инструкции. По факту вам нужно совершить всего два действия: открыть блок с транскрипцией и найти фрагмент по тексту, который произносит ведущий. Никаких проблем с этим нет. Несмотря на то что распознавание производится машинным образом, в большинстве своём YouTube не допускает ошибок. Поэтому вы без проблем сможете отыскать тот фрагмент ролика, где говорят о том, что вам интересно.

Транскрипция в видео на YouTube

Транскрипция в видео на YouTube. В приложении для Android вы не найдёте кнопки транскрипции. Фото.

В приложении для Android вы не найдёте кнопки транскрипции

Особенно удобна транскрипция в длинных роликах. Даже если он будет иметь содержание, нет никакой гарантии, что вы найдёте в нём то, что нужно. Ведь авторы имеют обыкновение называть разделы видео максимально коротко и неинформативно. Так что транскрипция может быть единственным способом найти то, о чём реально говорится в ролике. Главное, не пытаться склонять слова, по которым вы ищете. Лучше вообще использовать один корень или не дописывать их до конца для более эффективного поиска.

YouTube тестирует функцию автоматического перевода на разные языки

К сожалению, единственный способ воспользоваться функцией транскрипции – задействовать веб-версию YouTube, а в приложении её нет. Неважно, с какого устройства вы откроете сайт видеохостинга и каким браузером для этого воспользуетесь. Это может быть и компьютер с Google Chrome, и iPhone с Safari. Просто открывайте youtube.com и следуйте положениям инструкции, представленной выше. Результат – я больше чем уверен в этом – вас не разочарует.

Бывало ли у вас так, что надо срочно найти интересный момент в видеоролике на Ютуб? В этом посте я расскажу, как можно легко это сделать.

Поиск фрагмента в конкретном видеоролике

Найти нужное место в YouTube-ролике поможет обычная опция поиска в браузере + скрытые субтитры.

Во многих роликах на Ютуб есть субтитры, которые добавлены автором или сгенерированы автоматически. Эти субтитры мы как раз и будем использовать для поиска интересующего фрагмента.

  • Откройте нужное видео.
  • Под плеером нажмите Ещё (три горизонтальные точки).
  • Далее жмите Показать текст видео. Появятся субтитры с таймкодами.

  • Теперь нажмите сочетание клавиш Ctrl + F (для Windows) либо Cmd + F (для Mac), чтобы вызвать опцию поиска браузера. Вбейте в поле ввода слово из фрагмента, который нужно найти. Система выделит это слово в расшифровке.

  • Щёлкните по выделенному месту, чтобы перейти к искомой части видео.

Поиск фрагмента сразу в нескольких видеороликах

  • Зайдите на сайт YouGlish.
  • Выберите свою страну.
  • Вбейте нужное слово (или целую фразу) в строке поиска и нажмите кнопочку Say it.

  • Найденное видео начнёт воспроизведение с нужного момента. Если в ролике есть ещё фрагменты с подобными словами, они будут отмечены жёлтым на полосе прокрутки.

  • Для перехода к следующему видео используйте сочетание клавиш Ctrl + стрелочка вправо (для Windows) либо Cmd + стрелочка вправо (для Mac).

Надо сказать, что YouGlish найдёт только те видеоролики, в которых субтитры добавлены только вручную, а не сгенерированы автоматически.


Теги:
web
YouTube
YouGlish

Водяные знаки для вычисления пиратов
Друзья, у нас интересное обновление в системе защиты от записи с экрана — это новые, НЕВИДИМЫЕ водяные знаки!

Что такое водяные знаки?

Это текстовые метки с серийным номером покупателя, которые появляются на защищенном видео во время его просмотра. В случае записи видео с экрана на видео камеру эти метки позволяют точно идентифицировать покупателя, который купил курс.

Метки выводятся в случайных местах в случайное время, так что найти и затереть их все будет не просто, а выкладывать в свободный доступ видео со своими данными захочет далеко не каждый пират. Кстати, наши метки имеют случайный уровень прозрачности, что исключает их автоматический поиск и затирание в специализированных программах для стирания водяных знаков на видео (есть и такие).

На скриншоте в начале статьи вы можете видеть полупрозрачный ключ доступа покупателя. Такой формат меток выбран не случайно, он рассчитан что бы была возможность визуально различить хотя бы 2-3 символа для идентификации пирата, выложившего видео в сеть.

Что мы придумали нового?

Когда мы внедрили технологию простановки водяных знаков в 2012 году, то заметили, что количество выложенных экранных записей курсов в нашей защите уменьшилось на порядок! Но, возможность осталась и пираты, ради того, что бы заработать 20$ готовы сидеть выискивать метки на видео и затирать их. Вот от таких пиратов мы и выпустили нововведение.

Теперь на видео имеются специальные, невидимые глазу метки, о местонахождении которых знают только наши разработчики.

По существу, это маленькие точки, ненадолго вспыхивающие на экране, которые составляют последовательность — ключ, идентифицирующий владельца и автора копии.

Такие технологии протестированы и используются в кинотеатрах, благодаря им правообладатели определяют, записанный в каком кинотеатре фильм попал на торренты. Если каким-либо образом 3-4 пиратских фильма уходят из одного и того же кинотеатра… дистрибьюторы приходят и начинают расследование, откуда идёт утечка, вынуждают усилить меры безопасности и т.д.

В нашей же защите эта технология позволяет выявить самых изобретательных среди нечестных покупателей курсов и навсегда ограничить их доступ к инфопродуктам, внеся их данные в наш чёрный список.

О чем мы не можем рассказать?

Мы не можем рассказывать вам детали о всех наших новых технологиях, поэтому кратко: Обновлена база программ для записи с экрана и исправлены найденные ошибки. Так же мы разработали и внедрили новые секретные трюки усиливающие защиту от пиратов.

Обновление защиты на файлах

Что бы получить все эти нововведения вам нужно обновить защиту на файлах.

Самостоятельно и бесплатно обновить защиту на своих файлах Вы можете в специальном личном кабинете (запросите такой в нашей поддержке). Если Вы хотите, чтобы наши специалисты сами произвели обновление — это будет стоить 500р за один продукт. В этом случае, если Вы у нас заказывали создание dmg образа для Mac и подготовку меню. то мы вышлем Вам курс в обновленной защите сразу с Вашим меню и обновим файлы в dmg образе. Бесплатное обновление нашими специалистами доступно при дозаказе ключей на продукт.

Время на прочтение
5 мин

Количество просмотров 12K

В данной статье хочу рассказать про поиск объектов на видео с помощью Python и OpenCV. Помимо обычных видео, можно использовать и камеры.

Полный код и все исходники можно найти на моем Github.

Данный проект является продолжением моей предыдущей статьи — Поиск объектов на фото с помощью Python. Для того, чтобы не тратить много времени на ее изучение, я распишу весь процесс по новой.

Для того, чтобы написать легковесное приложение для обнаружения объектов на видео, установим необходимые библиотеки:

pip install opencv-python
pip install numpy
pip install art

Перейдем к написанию самого приложения, которое будет находить объекты на видео при помощи YOLO и отмечать их.

Скачаем с моего Github исходники и поместим в директорию Resources в проекте. Посмотрим, какие объекты сможет определять наша будущая программа:

'person', 'bicycle', 'car', 'motorbike', 'aeroplane', 'bus', 'train', 'truck', 'boat', 'traffic light',
'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',
'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',
'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',
'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'sofa',
'pottedplant', 'bed', 'diningtable', 'toilet', 'tvmonitor', 'laptop', 'mouse', 'remote', 'keyboard',
'cell phone', 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors',
'teddy bear', 'hair drier', 'toothbrush'

Первым делом импортируем необходимые библиотеки:

import cv2
import numpy as np
from art import tprint

Напишем функции для применения YOLO. С ее помощью определяются самые вероятные классы объектов на изображении, а также координаты их границ, которые в дальнейшем будут использованы для отрисовки.

def apply_yolo_object_detection(image_to_process):
    """
    Recognition and determination of the coordinates of objects on the image
    :param image_to_process: original image
    :return: image with marked objects and captions to them
    """

    height, width, _ = image_to_process.shape
    blob = cv2.dnn.blobFromImage(image_to_process, 1 / 255, (608, 608),
                                 (0, 0, 0), swapRB=True, crop=False)
    net.setInput(blob)
    outs = net.forward(out_layers)
    class_indexes, class_scores, boxes = ([] for i in range(3))
    objects_count = 0

    # Starting a search for objects in an image
    for out in outs:
        for obj in out:
            scores = obj[5:]
            class_index = np.argmax(scores)
            class_score = scores[class_index]
            if class_score > 0:
                center_x = int(obj[0] * width)
                center_y = int(obj[1] * height)
                obj_width = int(obj[2] * width)
                obj_height = int(obj[3] * height)
                box = [center_x - obj_width // 2, center_y - obj_height // 2,
                       obj_width, obj_height]
                boxes.append(box)
                class_indexes.append(class_index)
                class_scores.append(float(class_score))

    # Selection
    chosen_boxes = cv2.dnn.NMSBoxes(boxes, class_scores, 0.0, 0.4)
    for box_index in chosen_boxes:
        box_index = box_index
        box = boxes[box_index]
        class_index = class_indexes[box_index]

        # For debugging, we draw objects included in the desired classes
        if classes[class_index] in classes_to_look_for:
            objects_count += 1
            image_to_process = draw_object_bounding_box(image_to_process,
                                                        class_index, box)

    final_image = draw_object_count(image_to_process, objects_count)
    return final_image

Добавим функцию, которая обведет найденные на изображении объекты с помощью координат границ, полученных из функции apply_yolo_object_detection:

def draw_object_bounding_box(image_to_process, index, box):
    """
    Drawing object borders with captions
    :param image_to_process: original image
    :param index: index of object class defined with YOLO
    :param box: coordinates of the area around the object
    :return: image with marked objects
    """

    x, y, w, h = box
    start = (x, y)
    end = (x + w, y + h)
    color = (0, 255, 0)
    width = 2
    final_image = cv2.rectangle(image_to_process, start, end, color, width)

    start = (x, y - 10)
    font_size = 1
    font = cv2.FONT_HERSHEY_SIMPLEX
    width = 2
    text = classes[index]
    final_image = cv2.putText(final_image, text, start, font,
                              font_size, color, width, cv2.LINE_AA)

    return final_image

Помимо отрисовки объектов, можно добавить вывод их количества. Напишем для этого еще одну функцию:

def draw_object_count(image_to_process, objects_count):
    """
    Signature of the number of found objects in the image
    :param image_to_process: original image
    :param objects_count: the number of objects of the desired class
    :return: image with labeled number of found objects
    """

    start = (10, 120)
    font_size = 1.5
    font = cv2.FONT_HERSHEY_SIMPLEX
    width = 3
    text = "Objects found: " + str(objects_count)

    # Text output with a stroke
    # (so that it can be seen in different lighting conditions of the picture)
    white_color = (255, 255, 255)
    black_outline_color = (0, 0, 0)
    final_image = cv2.putText(image_to_process, text, start, font, font_size,
                              black_outline_color, width * 3, cv2.LINE_AA)
    final_image = cv2.putText(final_image, text, start, font, font_size,
                              white_color, width, cv2.LINE_AA)

    return final_image

Напишем функцию, которая будет обрабатывать видео по кадрам и выводить результат обработки на экран:

def start_video_object_detection(video: str):
    """
    Real-time video capture and analysis
    """

    while True:
        try:
            # Capturing a picture from a video
            video_camera_capture = cv2.VideoCapture(video)
            
            while video_camera_capture.isOpened():
                ret, frame = video_camera_capture.read()
                if not ret:
                    break
                
                # Application of object recognition methods on a video frame from YOLO
                frame = apply_yolo_object_detection(frame)
                
                # Displaying the processed image on the screen with a reduced window size
                frame = cv2.resize(frame, (1920 // 2, 1080 // 2))
                cv2.imshow("Video Capture", frame)
                cv2.waitKey(1)
            
            video_camera_capture.release()
            cv2.destroyAllWindows()
    
        except KeyboardInterrupt:
            pass

Чтобы не нагружать устройство обработкой каждого кадра, можно добавить обновление экрана по нажатии любой клавиши:

def start_video_object_detection(video: str):
    """
    Real-time video capture and analysis
    """

    while True:
        try:
            # Capturing a picture from a video
            video_camera_capture = cv2.VideoCapture(video)
            
            while video_camera_capture.isOpened():
                ret, frame = video_camera_capture.read()
                if not ret:
                    break
                
                # Application of object recognition methods on a video frame from YOLO
                frame = apply_yolo_object_detection(frame)
                
                # Displaying the processed image on the screen with a reduced window size
                frame = cv2.resize(frame, (1920 // 2, 1080 // 2))
                cv2.imshow("Video Capture", frame)
                cv2.waitKey(0):
                		break
            
            video_camera_capture.release()
            cv2.destroyAllWindows()
    
        except KeyboardInterrupt:
            pass

Теперь напишем функцию main, где будем передавать аргументы в функции.

Данный блок не является обязательным, но я захотел сделать красивый вывод текста в консоль:

# Logo
    tprint("Object detection")
    tprint("by")
    tprint("paveldat")

Создадим функцию main, в которой настроим нашу сеть:

if __name__ == '__main__':
		# Loading YOLO scales from files and setting up the network
    net = cv2.dnn.readNetFromDarknet("Resources/yolov4-tiny.cfg",
                                     "Resources/yolov4-tiny.weights")
    layer_names = net.getLayerNames()
    out_layers_indexes = net.getUnconnectedOutLayers()
    out_layers = [layer_names[index - 1] for index in out_layers_indexes]

    # Loading from a file of object classes that YOLO can detect
    with open("Resources/coco.names.txt") as file:
        classes = file.read().split("n")

    # Determining classes that will be prioritized for search in an image
    # The names are in the file coco.names.txt

    video = input("Path to video (or URL): ")
    look_for = input("What we are looking for: ").split(',')
    
    # Delete spaces
    list_look_for = []
    for look in look_for:
        list_look_for.append(look.strip())

    classes_to_look_for = list_look_for

    start_video_object_detection(video)

Программа будет запрашивать путь до видео и объекты, которые хотим найти. Вместо пути до видео можно использовать ссылку на видео с камеры. Объекты должны перечисляться через запятую, если их несколько.

Запускаем программу и тестируем.

Path to video (or URL): Result/input/example.mp4
What we are looking for: person, car, bus

Исходное видео:

Обработанное видео:

Мы проверили, как алгоритм YOLO справился с тестам. Погрешность все же есть, но в основном программа успешно находит необходимые объекты.

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти спец символы
  • Как найти текущую папку
  • Как исправить свою внешность мужчины
  • Как составить свою программу питания для похудения
  • Как найти длины вектора по трем точкам

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии