Проверьте эту демонстрационную ссылку (или получите SWF-файл для тестирования вне браузера через настольный Flash Player).
Примечание: Для демонстрации требуется FLV с видеокодеком H.264 и аудиокодеком AAC или MP3.
Исходный код для этого здесь: Github ссылка
В вышеприведенной демонстрации есть (основанный на байтах) поиск и покадровый пошаговый переход. Функции, которые вы хотите изучить, в основном:
Append_SEEK (сумма позиции) - эта информация будет указана в байтах и будет выполняться поиск ближайшего доступного ключевого кадра.
get_frame_TAG - это извлечет тег, содержащий один кадр данных. Звук также может быть в кадрах, но давайте предположим, что у вас есть только видео. Эта функция - ваша возможность настроить отметки времени . При запуске он также добавляет тег (так что каждый get_frame_TAG также является «шагом кадра»).
Например: у вас есть видео со скоростью 25 кадров в секунду, вы хотите, чтобы третий кадр воспроизводился через 4 секунды ...
1000 милисек / 25 кадров в секунду = 40 единиц для каждой временной метки.
4000 мс == 4 секунды + добавьте 40 х 3-й кадр == ожидаемая временная метка 4120.
Итак, получить этот кадр означает ... Сначала найдите ключевой кадр. Затем пройдитесь по каждому кадру, проверяя временные метки, которые представляют нужный вам кадр. Если это не так, измените его на то же, что и у самой последней отметки времени ключевого кадра (это заставляет Flash выполнять быструю перемотку вперед по всем кадрам, чтобы синхронизировать данные, поскольку предполагается, что кадр [с меньшей, чем ожидалось, отметкой времени] должен был воспроизводиться к этому времени) , Вы можете «спрятать» видеообъект во время этого процесса, если вам не нравится внешний вид ускоренной перемотки.