录制MP4视频
1.实验目的
通过摄像头录制视频并封装成MP4文件。
2.核 心代码
初始化 MP4 封装器
mp4_handle = mp4_muxer_init(file_name, fmp4_flag)
file_name
是要保存的 MP4 文件名
fmp4_flag
是否保存为 Fragment MP4(流式分片格式)
返回 mp4_handle
,用于后续添加轨道和写入数据
kd_mp4_create(handle, mp4_cfg)
实际调用底层 MP4 封装器创建函数。
创建视频轨道
mp4_video_track_handle = mp4_muxer_create_video_track(mp4_handle, width, height, video_payload_type)
配置视频宽、高和编码格式(H264 或 H265)
video_payload_type
是 K_MP4_CODEC_ID_H264
或 K_MP4_CODEC_ID_H265
返回轨道句柄 mp4_video_track_handle
,用于写入视频帧
初始化 Sensor
sensor = Sensor()
sensor.set_framesize(width=width, height=height)
sensor.set_pixformat(Sensor.YUV420SP)
设置图像分辨率为 1280x720
设置像素格式为 YUV420 半平面(兼容编码器)
启动 采集
sensor.run()
启动视频编码器
encoder = Encoder()
encoder.SetOutBufs(venc_chn, 8, width, height)
分配 8 个输出缓存池,用于编码后的视频帧
编码通道用的是 VENC_CHN_ID_0
,即通道 0
encoder.Create(venc_chn, chnAttr)
encoder.Start(venc_chn)
创建并启动编码器,使用指定分辨率、格式
chnAttr
包含编码器的 payload 类型和 profile(如 H264_MAIN)