Различия между контейнером MPEG-1 и контейнером MPEG-2

Я ищу конкретные способы различать файлы, использующие контейнеры MPEG-1 и MPEG-2, поскольку большинство ресурсов, которые я нахожу, предполагают, что начальный код - 00 00 01 BA для обоих контейнеров.

Я попытался преобразовать видео в контейнере MP4 в контейнер MPEG-1, используя графический интерфейс VLC, и код начала пакета для полученного файла был 00 00 01 BA, что является причиной моего замешательства.

Возможно ли даже преобразовать видео в MP4 в контейнер MPEG-1, используя FFMPEG, поскольку все, что я пытаюсь, вместо этого генерирует файл в контейнере программного потока MPEG-2. Используемая команда была ffmpeg -i video.mp4 video.mpg.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
628
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Команда ffmpeg -i video.mp4 video.mpg создаст системный контейнер MPEG-1. Используйте ffmpeg -i video.mp4 -f vob video.mpg для MPEG-2 PS.

Сразу после PACK START CODE 00 00 01 BA. если следующие два бита - 01, это MPEG-2 PS (VOB, DVD-VOB или SVCD), иначе - 0010. это системы MPEG-1 или VCD.

Я попробовал обе команды и запустил ffprobe -show_format в выходных файлах, дал тот же результат, который: «имя_формата = mpeg, имя_формата = MPEG-PS (программный поток MPEG-2)». Я ошибаюсь, полагая, что 00 00 01 B3 - это начальный код пакета для контейнера MPEG-1.

Ajit 31.07.2018 00:22

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

Gyan 31.07.2018 06:42

У меня есть файл mpeg-2, который начинается с 00 00 01 B3. Параметр -show_format на ffprobe возвращает следующий результат «имя_формата = mpegvideo, имя_длинного_формата = необработанное видео MPEG». Меня смущает формат контейнера, используемый в этом случае. Разве в данном случае это не контейнер MPEG-1 или MPEG-2?

Ajit 31.07.2018 11:27

Это необработанный битовый поток, то есть MPEG ES, а не контейнер PS. У него будет ровно один поток.

Gyan 31.07.2018 11:30

Другие вопросы по теме