.y4m
muxers.c
typedef struct {
FILE *fh; //文件指针,用来保存一个已打开的文件的指针
int width, height; //宽、高
int next_frame; //下一帧,计数用
int seq_header_len, frame_header_len; /* */
int frame_size; //帧尺寸
} y4m_input_t; /* */
#define Y4M_MAGIC "YUV4MPEG2"
#define MAX_YUV4_HEADER 80
#define Y4M_FRAME_MAGIC "FRAME"
#define MAX_FRAME_HEADER 80
/*
* 名称:
* 功能:打开文件:"*.y4m"
* 参数:文件名,typedef void *hnd_t,x264_param_t
* 注意:
* 资料:YUV4MPEG2这种文件格式是一种以头文件存储视频规格的未压缩视频序列。简单来说,在原始的yuv序列的起始和每一帧的头部都加入了纯文字形式的视频参数信息,包括分辨率、帧率、逐行/隔行扫描方式、高宽比(aspect ratio),以及每一帧起始的”FRAME ”标志位。
* y4m到yuv的转换 了解了y4m的封装形式后,我们的工作就变得相当机械。只要把头文件和每帧的标志位去除即可,剩下的生肉既是原封不动的yuv数据,如果是4:2:0也不需要进一步的转换修整工作。
*/
int open_file_y4m( char *psz_filename, hnd_t *p_handle, x264_param_t *p_param )
{
... ...
}
下载了一个.y4m的视频序列测试文件,用UltraEdit打开查看,截几个图上来