LINUX.ORG.RU

Формат потока H.264

 , ,


0

1

Обнаружил странную вещь: некоторые файлы, содержащие поток h264 (напр. если поток создан mencoder/x264) при дампе видеопотока дают вполне воспроизводимый файл (mplayer и ffmpeg его берут, а file опознаёт как JVT NAL sequence, H.264 video @ L 13. Некоторые же (напр. скачанный с tomsk.fm flv) воспроизводиться не хотят: file их не опознаёт, а mplayer видит всякие непонятные форматы. ffmpeg с -f h264 пытается его воспроизвести, но:

[h264 @ 0x43e0e870] missing picture in access unit with size 16997619
[h264 @ 0x43e0e870] no frame!
[h264 @ 0x43e004a0] Stream #0: not enough frames to estimate rate; consider increasing probesize
[h264 @ 0x43e004a0] decoding for stream 0 failed
[h264 @ 0x43e004a0] Could not find codec parameters for stream 0 (Video: h264): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[h264 @ 0x43e004a0] Estimating duration from bitrate, this may be inaccurate
aaa.raw: could not find codec parameters


Причём в файле были заголовки с упоминанием x264
Так же такой файл можно получить, используя аппаратный кодер cedarx в sun4i.
Утилита для кодирования по умолчанию создавала mkv файлы. Немного поковыряв код, я добафил возможность отключить mkv и писать файл в прямой поток. Выходной файл полностью совпадает с результатом дампа из mkv. Причём, mkv воспроизводится, а дамп нет.
Какую информацию нужно добавить в поток, чтобы он был воспроизводимым?

★★★★★

tomsk.fm flv

ffmpeg с -f h264

Может потому, что -f должен быть flv?

Что выдаёт ffprobe без левых опций?

Какую информацию нужно добавить в поток, чтобы он был воспроизводимым?

Не нужно никакого колдунства и ковыряния. В общем случае нужно элементарные медиапоток(и) просто передавать в медиаконтейнере, а не «голышом».

Krieger_Od ★★ ()
Ответ на: комментарий от Krieger_Od

Так я не flv, а голый h264 ему подаю.
Конечная цель - прикрутить этот кодировщик к jitsi (sun4i с софтверным кодированием не справляется, а при низкой частоте кадров камера ничинает выдавать неверный буфер). А для этого надо разобраться с форматом потока получше. Ну и конечно хочется получить файл такого же типа, как и выдаёт x264. Медиаконтейнеры - это хорошо, но если есть возможность обойтись без них - ещё лучше.

mittorn ★★★★★ ()
Ответ на: комментарий от anonymous

Но и поток с кодера записан по фреймово.
В коде первые 4 байта - размер кадра, после них передаётся кадр

mittorn ★★★★★ ()
Ответ на: комментарий от mittorn

Медиаконтейнеры - это хорошо, но если есть возможность обойтись без них - ещё лучше.

Нет.

anonymous ()
Ответ на: комментарий от puding

Уже.
Продампил поток с jitsi, он идентичен h264-es с mencoder. Вероятно там byte stream.

mittorn ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.