Параметр codecs
задается RFC 6381. В частности, см. section 3.3 для значений avc1
и mp4a
значений.
В случае avc1.4D401E
, avc1
показывает H.264 видео, и это следует точка и три шестнадцатеричных чисел 2 цифр, определяемой the H.264 standard:
profile_idc
- байты, содержащая
constraint_set
флаги (в настоящее время constraint_set0_flag
через constraint_set5_flag
и reserved_zero_2bits
)
level_idc
Некоторые примеры:
avc1.42E01E
: H.264 базовый профиль Constrained Уровень 3
avc1.4D401E
: H.264 Main Profile Level 3
avc1.64001E
: H.264 High Profile Level 3
Это также второй, третий и четвертый байты набора параметров последовательности и блок конфигурации AVC в файле MP4. Вы можете сбрасывать эти байты с помощью такой программы, как mp4file
: mp4file --dump movie.mp4
. Найдите поле avcC
(Конфигурация AVC) и шестнадцатеричные значения для AVCProfileIndication
, profile_compatibility
и AVCLevelIndication
.
Что касается mp4a.40.2
, mp4a
указывает звук MPEG-4. Затем следует точка и шестнадцатеричный ObjectTypeIndication
(objectTypeId
в mp4file
выход), который можно посмотреть на the MPEG4 registration site. Если это шестнадцатеричное значение равно 40
(ISO/IEC 14496-3 Audio), за ним следует еще одна точка и тип аудио объекта в десятичном формате. Они перечислены в стандарте ISO/IEC 14496-3 и на Wikipedia и соответствуют первым 5 битам DecoderSpecificInfo
(decSpecificInfo
) (если только эти биты не равны 31, и в этом случае добавить 32 к следующим 6 битам). mp4a.40.2
указывает аудио AAC LC, что обычно используется с видео H.264 HTML5.
Например, codecs="avc1.42E01E, mp4a.40.2"
будет правильным для ниже фильма:
$ mp4file --dump movie.mp4
...
type avcC (moov.trak.mdia.minf.stbl.stsd.avc1.avcC) ◀━━ avc1
configurationVersion = 1 (0x01)
AVCProfileIndication = 66 (0x42) ◀━━ 42
profile_compatibility = 224 (0xe0) ◀━━ E0
AVCLevelIndication = 30 (0x1e) ◀━━ 1E
...
type esds (moov.trak.mdia.minf.stbl.stsd.mp4a.esds) ◀━━ mp4a
version = 0 (0x00)
flags = 0 (0x000000)
ESID = 2 (0x0002)
streamDependenceFlag = 0 (0x0) <1 bits>
URLFlag = 0 (0x0) <1 bits>
OCRstreamFlag = 0 (0x0) <1 bits>
streamPriority = 0 (0x00) <5 bits>
decConfigDescr
objectTypeId = 64 (0x40) ◀━━ 40
streamType = 5 (0x05) <6 bits>
upStream = 0 (0x0) <1 bits>
reserved = 1 (0x1) <1 bits>
bufferSizeDB = 0 (0x000000) <24 bits>
maxBitrate = 78267 (0x000131bb)
avgBitrate = 78267 (0x000131bb)
decSpecificInfo
info = <2 bytes> 11 90 |..| ◀━━ 2 (first 5 bits in decimal)
...
Спасибо за информацию - очень полезный – user2302694
Удивительный ответ. Я потратил часы на поиск этой информации. Спасибо! – nbz