这几天一直在搞Darwin Streaming Server的点播功能,对MP4文件的点播是没有问题的,但是对音频(比如aac音频文件)该如何点播呢?
想到了一种转发思路:就是将aac文件打包到MP4文件中,然后在进行MP4文件的点播;
直接上代码:
int main(int argc, char *argv[])
{
FILE *fpAudio = NULL;
int len;
MP4TrackId audio = MP4_INVALID_TRACK_ID;
uint8_t buf[2] = {0x15, 0x88};
//创建 mp4 文件
file = MP4Create("test.mp4", 0);
if (file == MP4_INVALID_FILE_HANDLE)
{
printf("Open file failed!\n");
return 1;
}
// 设置时间片
MP4SetTimeScale(file, AUDIO_TIME_SCALE);
// 添加 AAC track
audio = MP4AddAudioTrack(file,8000, 1930, MP4_MPEG4_AUDIO_TYPE);
if (audio == MP4_INVALID_TRACK_ID)
{
printf("Add audio track failed!\n");
return 1;
}
// 设置音频属性
MP4SetAudioProfileLevel(file, 0x02);
MP4SetTrackESConfiguration(file, audio, buf, 2);
fpAudio = fopen("input.aac", "rb");
if (fpAudio == NULL)
{
printf("File could not open!\n");
return 1;
}
buffer = (unsigned char *)malloc(4097);
memset(buffer,0,4097);
while((len = fread(buffer,1,4096,fpAudio)) > 0)
{
MP4WriteSample(file,audio,buffer,len,MP4_INVALID_DURATION,0,0,1);
}
fclose(fpAudio);
free(buffer);
MP4Close(file, 0);
}
这样就可以将aac文件打包到MP4文件中;