使用MP4V2开源库将AAC打包到MP4文件中

来源:互联网 发布:小猫软件scratch下载 编辑:程序博客网 时间:2024/05/29 18:20

这几天一直在搞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文件中;

0 0
原创粉丝点击