Как определить, является ли файл файлом формата nv12?

У меня есть файл, я хочу знать, является ли он форматом NV12, как определить, что файл является файлом формата nv12? Есть ли какой-нибудь инструмент или тестовый код?


person Lyric    schedule 17.05.2013    source источник


Ответы (1)


Один из способов - использовать mplayer Следующее должно работать (здесь я предполагаю размер CIF, то есть 352, 288)

$ mplayer -demuxer rawvideo -rawvideo w=352:h=288:format=nv12 file.yuv

Чтобы преобразовать из. скажем, 4: 2: 0, разделенные плоскостью (он же YV12, что в значительной степени является стандартом), вы можете использовать ffmpeg:

$ ffmpeg -pix_fmt yuv420p -s 352x288 -i foreman_352x288.yuv -pix_fmt nv12 foreman_nv_12.yuv

yuv - это формат необработанных данных без каких-либо заголовков, поэтому вы ничего не можете сделать, кроме как пытаться просмотреть его в другом формате, пока вам не удастся найти совпадение.

Тем не менее, некоторые основные проверки согласованности заключаются в том, что NV12 является форматом 4:2:0, что означает, что цветовые плоскости субдискретизированы с коэффициентом 2 как по ширине, так и по высоте, и это дает общее количество байтов для одного кадра:

width * height * 3 / 2

это вы можете проверить по общему количеству байтов для файла.

person Fredrik Pihl    schedule 18.05.2013
comment
Привет, пытался использовать это преобразование, но я не могу играть на nv12 с плеером. при преобразовании с помощью ffmpeg в другой формат все работает нормально. - person ransh; 16.11.2015
comment
какого игрока вы имеете в виду? Используя ffmpeg, это должно работать ffplay -s 352x288 -pix_fmt nv12 file.yuv - person Fredrik Pihl; 17.11.2015
comment
Спасибо. У меня, должно быть, была проблема с глючной старой версией ffmpeg. Я сделал конвертацию и в конце концов поиграл - person ransh; 17.11.2015
comment
7yuv полезен для конвертации nv12 (и других) - person ransh; 18.11.2015
comment
или вы можете использовать мой отличный инструмент Python для преобразования формата :-) github.com/figgis/yuv-tools - person Fredrik Pihl; 19.11.2015