Nano Hash - криптовалюты, майнинг, программирование

Как разделить видео со странными ключевыми кадрами pkt_pts_time=N/A?

Я могу запустить такую ​​команду для обычных видео (h264 на mkv):
avconv -i videofile.avi -c copy -flags +global_header -segment_time 60 -f segment "videofile-part."%03d".mp4"

но на видео с этим форматом и контейнером (по крайней мере, те, что есть у меня) не получится:
MPEG-4 на файле .avi

если я исследую это, я получаю ключевые кадры, которые игнорируются сплиттером:
ffprobe videofile.avi -show_entries frame=key_frame,pict_type,pkt_pts_time -select_streams v -of compact -v 0 | grep frame=1 (из этого совета https://stackoverflow.com/a/48687236/1422630)

и я получаю много этого:
"frame|key_frame=1|pkt_pts_time=N/A|pict_type=I"

обычное видео выводит такие строки:
"frame|key_frame=1|pkt_pts_time=44.252542|pict_type=I"

так что ясно, что для работы avconv требуется действительное "pkt_pts_time"...

В качестве альтернативы (не требующей инструмента командной строки):
какой-либо быстрый способ добавить правильные ключевые кадры (pkt_pts_time со значением) в видео, чтобы его можно было правильно разделить с помощью avconv?
или может быть Мне нужно быстро конвертировать большое видео (копируя видеопоток) в формат, в котором avconv обнаруживает нормальные ключевые кадры?

Примечания:
Я использую linux ubuntu.
Я создаю сценарий bash с помощью avconv, но другие инструменты с поддержкой сценариев (инструменты командной строки) приемлемы, если они работают.

PS. это лучше подходит для unix stackexchange?

05.04.2019

  • Какова ваша полная команда разделения? 06.04.2019
  • @Gyan обновил пост :) 06.04.2019

Ответы:


1

Используя последнюю версию ffmpeg (4.0+), используйте

ffmpeg -fflags +genpts -i videofile.avi -c copy -segment_time 60 -f segment "videofile-part.%03d.mp4"

Genpts назначит недостающие PTS.

06.04.2019
  • с ffmpeg 2.8.11 -fflags +genpts не получится, сейчас пытаюсь обновить (ubu16.04) 06.04.2019
  • установил ffmpeg 4.1.1 из launchpad.net/~jonathonf/+archive/ubuntu/ ffmpeg-4, но я все еще получаю сообщения такого рода [mp4 @ 0x560c0ae1a490] pts не имеет значенияme=00:40:28.44 битрейт=Н/Д скорость= 125x, и он создает только один файл (поэтому не разделяется). Но я следовал именно тому, как вы показали, и это сработало (в следующем комментарии)! 06.04.2019
  • Я использовал эту команду: ffmpeg -flags +global_header -fflags +genpts -i videofile.avi -c copy -segment_time 60 -f segment "videofile-part.%03d.mp4" (+global_header должен присоединиться к ним позже, если я не ошибаюсь). Хитрость заключалась в том, что параметр -fflags +genpts должен быть ПЕРЕД параметром -i, иначе он не разделится! Теперь я не знаю, будет ли работать старый ffmpeg, так как я не буду понижать его версию. Я буду смотреть части и снова присоединяюсь, чтобы увидеть, все ли хорошо :) 06.04.2019
  • Хитрость заключалась в том, что параметр -fflags +genpts должен быть ПЕРЕД -i --› да, как указано в моем ответе. 06.04.2019
  • xD, конечно, я имею в виду, что я настаивал на своей исходной командной строке (просто добавляя -fflags +genpts в середине) и заботился об этом порядке только после того, как увидел, что обновление не имеет значения 06.04.2019
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..