使用MPEG4IP库接口实现音视频存储
MP4WriteSample 写音视频帧(需要精确控制时间戳,时间戳可以使用相对值,即当前帧时间戳减去上一帧的时间戳)
MP4AddH264VideoTrack 添加H264 track(timescale时间因子参数很重要,根据视频帧的时间戳类型定义,90000(视频标准采样时间戳)或1000(ms时间戳))
MP4AddAudioTrack 添加音频AAC track (timesacle时间因子参数设置为1000(ms时间戳))
音频AAC
采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。
。正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质
对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。
背景知识:
(一个AAC原始帧包含一段时间内1024个采样及相关数据)
分析:
1 AAC
音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)
一帧 1024个 sample。采样率 Samplerate 44100KHz,每秒44100个sample, 所以 根据公式
当前AAC一帧的播放时间是= 1024*1000000/44100= 22.32ms(单位为ms)
2 MP3
mp3 每帧均为1152个字节, 则:
frame_duration = 1152 * 1000000 / sample_rate
例如:sample_rate = 44100HZ时, 计算出的时长为26.122ms,这就是经常听到的mp3每帧播放时间固定为26ms的由来。
视频H264
视频帧时间戳,分两种类型标准采样时间戳(毫秒时间戳*90)和毫秒时间戳(按帧率计算,1000/帧率=播放持续时间)