Как извлечь последние секунды видео GoPro без потерь с помощью FFmpeg: сохранение телеметрии и порядка потока

Извлечение последних секунд видео GoPro с помощью FFmpeg

Введение

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

Структура потоков видео GoPro

В видеофайлах GoPro содержится несколько потоков, каждый из которых несет разную информацию:

  1. Поток #0:0: Видео (кодек hevc)
  2. Поток #0:1: Аудио (кодек aac)
  3. Поток #0:2: Данные: нет (tmcd)
  4. Поток #0:3: Данные: bin_data (gpmd)

Важным аспектом является то, что при работе с потоками необходимо сохранять порядок и целостность телеметрических данных.

Использование FFmpeg для извлечения последних секунд видео

Чтобы извлечь последние несколько секунд видео без потерь, можно использовать следующую команду в FFmpeg:

ffmpeg -sseof -10 -i input.MP4 -map 0:v -map 0:a -map 0:3 -c copy -copy_unknown output.MP4

Однако, как показывает практика, эта команда может изменить порядок потоков, что недопустимо для нашей задачи.

Проблема с порядком потоков

При использовании вышеуказанной команды выходной файл может иметь измененный порядок потоков:

  1. Видео
  2. Аудио
  3. Данные: bin_data
  4. Данные: нет

Это может привести к утрате важной информации телеметрии.

Изменение порядка потоков

Рекомендуемый подход для поддержания порядка потоков заключается в использовании параметра -map, однако FFmpeg не всегда правильно обрабатывает неизвестные кодеки. Это может вызвать ошибки, например:

Could not find tag for codec none in stream #2

Возможное решение

В попытках исправить проблему можно попробовать перемещать -copy_unknown, но это не всегда приводит к желаемому результату. Например, применение следующей команды:

ffmpeg -sseof -10 -i input.MP4 -map 0:v -map 0:a -copy_unknown -map 0:3 -c copy output.MP4

По-прежнему не гарантирует сохранение порядка потоков.

Проверка полученных данных

Важно проверить выходной файл на наличие ошибок. Вы можете использовать команду:

ffmpeg -i output.MP4

Для детального анализа потоков и их метаданных.

Обходные пути и дополнительные советы

Если вы хотите сохранить данные телеметрии, можно попытаться использовать следующее:

ffmpeg -i GoPro_file_example.MP4 -map 0:2 -c copy -f data stream3_map0:2.bin

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

Заключение

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

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *