Как обработать отдельный сегмент из фрагментированного контейнера mp4?

Я фрагментировал mp4, который транслирую. Сначала заголовок mp4, а затем отдельные сегменты, каждый из которых является GOP. Это видео в кодировке h264 и aac, которое я получаю с сервера RTMP.

Я хотел бы обработать эти отдельные сегменты с помощью ffmpeg (сомневаюсь, что есть другие инструменты). Либо отрегулируйте разрешение, либо битрейт, либо даже перекодируйте в vp8 / 9 или avi1, если необходимо.

Но похоже, что ffmpeg не может справиться с этим, потому что у сегмента нет заголовка. Итак, мне интересно, есть ли флаг или набор флагов для ffmpeg, чтобы иметь возможность обрабатывать эти сегменты без заголовка? Я мог бы просто взять необработанные пакеты h264 и aac из RTMP и не упаковывать их заранее в контейнер MP4, если это поможет - сможет ли ffmpeg их обработать?


person Community    schedule 14.09.2020    source источник


Ответы (1)


«Итак, я знаю, есть ли флаг или набор флагов для ffmpeg, чтобы иметь возможность обрабатывать эти сегменты без заголовка? ‘

Нет. Если бы это было возможно, ffmpeg просто сделал бы это без волшебного флага. Заголовок содержит информацию, необходимую для декодирования.

Вы можете представить заголовок на отдельном сегменте.

person szatmary    schedule 14.09.2020
comment
да, но тогда мне пришлось бы снова извлекать данные, что просто приводит к ненужным накладным расходам. как насчет необработанных данных, как уже упоминалось, может ли ffmpeg справиться с этим? ... или другая библиотека / программное обеспечение - person ; 14.09.2020
comment
НЕВОЗМОЖНО декодировать сегмент с заголовками последовательности для ffmpeg или любого другого инструмента или команды. Период. Он содержит информацию, необходимую для инициализации декодера, такую ​​как разрешение, профиль, методы сжатия, информацию о цвете и т. Д. Без заголовка декодер даже не знает кодека. RTMP также имеет заголовки последовательности, отправляемые в начале потока, вы просто не знаете этого, потому что вы еще не пробовали это. - person szatmary; 14.09.2020
comment
Я не знаю, что вы имеете в виду, когда снова извлекаете данные? Что вы подразумеваете под выпиской? и почему опять то, что в первый раз вы его извлекли? заголовки совершенно необходимы, нет ненужных накладных расходов. Это все необходимое. - person szatmary; 14.09.2020
comment
Вы правы насчет метаданных в заголовке. имеет смысл. Что касается извлечения - у меня есть фрагментированный контейнер mp4, поэтому заголовок - это просто ftyp + moov, а каждый сегмент - это просто moof + mdat, где mdat содержит видео h264 и аудиопакеты aac, или в моем случае я разделил их на отдельные дорожки для / v поэтому у меня есть два отдельных сегмента. поэтому, если бы я поместил заголовок в каждый сегмент для его обработки через ffmpeg, мне пришлось бы извлечь этот заголовок, чтобы иметь возможность использовать этот сегмент. хотя, поскольку у меня в первую очередь есть заголовок, нужно просто вырезать начальные N байтов. - person ; 15.09.2020