H264与AAC ES打包成MP4
注意
设置图像的sps pps
MP4AddH264SequenceParameterSet(file,video,sps,sizeof(sps));
MP4AddH264PictureParameterSet(file,video,pps, sizeof(pps));
设置音频解码信息
MP4SetTrackESConfiguration(file,audio,pConfig,configSize);
MP4FileHandle file = MP4CreateEx("new.mp4");//创建mp4文件
if (file == MP4_INVALID_FILE_HANDLE){
printf("open file fialed.\n");
return -1;
}
MP4SetTimeScale(file, 1000);
//添加h264 track
MP4TrackId video = MP4AddH264VideoTrack(file, 12800, 12800 / 25, 1280, 720,
0x4d, //sps[1] AVCProfileIndication
0x40, //sps[2] profile_compat
0x1f, //sps[3] AVCLevelIndication
3); // 4 bytes length before each NAL unit
if (video == MP4_INVALID_TRACK_ID){
printf("add video track failed.\n");
return -1;
}
MP4SetVideoProfileLevel(file, 0x01);
// write sps
unsigned char sps[] = {0x67,0x4D,0x40,0x1F,0xDA,0x01,0x40,0x16,0xEC,0x04,0x40,0x00,0x00,0x03,0x00,0x40,0x00,0x00,0x0C,0x83 ,0xC6 ,0x0C ,0xA8};
unsigned char pps[] = {0x68 ,0xEF ,0x3C ,0x80};
MP4AddH264SequenceParameterSet(file,video,sps,sizeof(sps));
// write pps
MP4AddH264PictureParameterSet(file,video,pps, sizeof(pps));
//添加aac音频
MP4TrackId audio = MP4AddAudioTrack(file, 48000, 1024, MP4_MPEG4_AUDIO_TYPE);
if (audio == MP4_INVALID_TRACK_ID){
printf("add audio track failed.\n");
return -1;
}
MP4SetAudioProfileLevel(file, 0x2);
unsigned char Buf[409600] = {0};
for(int i = 0; i < sampleTotalCount[0]; ++i){
fseek(fp, sampleList[0][i].offset, SEEK_SET);
fread(Buf, sampleList[0][i].size, 1, fp);
printf("\nsample_list[%d].size:%d#", i, sampleList[0][i].size);
for (int k = 0; k < 16; ++k){
printf("%02x ", Buf[k]);
}
MP4WriteSample(file, video, (uint8_t*)(Buf), sampleList[0][i].size, sampleList[0][i].delta, 0, 1);
}
for(int i = 0; i < sampleTotalCount[1]; ++i){
fseek(fp, sampleList[1][i].offset, SEEK_SET);
fread(Buf, sampleList[1][i].size, 1, fp);
MP4WriteSample(file, audio, (uint8_t*)Buf, sampleList[1][i].size , sampleList[1][i].delta, 0, 1);
}
MP4Close(file);
H264与AAC ES打包成MP4的更多相关文章
- 利用ffmpeg0.6.1把.h264纯码流打包成.mp4 .avi等格式 (转载)
转自:http://cache2.weidaohang.org/h/index.php?q=aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1cWluZ183MzkvYXJ0aWNsZS ...
- H264视频编码成MP4文件
firehood的专栏 Wince嵌入式开发 目录视图 摘要视图 订阅 赠书 | AI专栏(AI圣经!<深度学习>中文版) 每周荐书:Kotlin.分布式.Keras ...
- 将h264和aac码流合成flv文件
在视频应用中,经常需要将接收到h264和aac数据保存成文件. 本来想用mp4格式,但是mp4在没有正常关闭的情况下会导致文件打不开,而在实际应用中经常会出现设备直接拔电,程序不是正常结束的情况.于是 ...
- H264编码 封装成MP4格式 视频流 RTP封包
H264编码 封装成MP4格式 视频流 RTP封包 分类: 多媒体编程 2013-02-20 21:31 3067人阅读 ...
- (原)从mp4,flv文件中解析出h264和aac,送解码器解码失败
转载请注明出处:http://www.cnblogs.com/lihaiping/p/5285166.html 今天在做本地文件解码测试,发现从mp4,flv文件中读出来的帧数据,h264和aac帧直 ...
- js对flv提取h264、aac音视频流
FLV提取里面的h264视频流 FLV和MP4支持的编码 流媒体和媒体文件的区别 流媒体是指将一连串的多媒体资料压缩后,经过互联网分段发送资料,在互联网上即时传输影音以供观赏的一种技术与过程,此技术使 ...
- 使用librtmp进行H264与AAC直播
libx264 版本是 128libfaac 版本是 1.28 1.帧的划分 1.1 H.264 帧 对于 H.264 而言每帧的界定符为 00 00 00 01 或者 00 00 01. 比如下面的 ...
- 打包成apk,生成apk文件,上传到网站服务器提供链接下载
Android开发把项目打包成apk: 做完一个Android项目之后,如何才能把项目发布到Internet上供别人使用呢?我们需要将自己的程序打包成Android安装包文件--APK(Android ...
- 工具---《.264视频 转成 MP4视频》
<.264视频 转成 MP4视频> 安装了“爱奇艺万能播放器”可以打开.264视频,但是opencv却不能直接读取.264视频,还是需要想办法“.264视频 转成 MP4/avi视频”. ...
随机推荐
- 前端为什么要对url进行编码
为什么要对url进行编码 url有规范,在参数值中出现&字符会截断参数 url中文的问题,编码客转换为英文 也是第一种情况,url中有个参数值是url,传输的时候会出现错误 例1 有这样一串参 ...
- 耗子学Python了(1)___Python环境配置
一:写在开始的开始 最近我们团对的老大问我想看什么书,我让老大买了一本<Python 3面向对象编程>,所以在看的时候边敲边实践,决定在自己电脑配置下相应的环境,然后开始Python的学习 ...
- PHP扩展--Yaf框架安装
安装/配置 编译安装 wge thttp://pecl.php.net/get/yaf-2.3.5.tgz tar -zxvfyaf-2.3.5.tgz cd yaf-2.3.5/ cd extens ...
- 自己实现KNN算法
import numpy as np from math import sqrt from collections import Counter class KNNClassifier(object) ...
- codeforces contest 864 problemD
Ivan has an array consisting of n elements. Each of the elements is an integer from 1 to n. Recently ...
- [BZOJ2946][Poi2000]公共串解题报告|后缀自动机
鉴于SAM要简洁一些...于是又写了一遍这题... 不过很好呢又学到了一些新的东西... 这里是用SA做这道题的方法 首先还是和两个字符串的一样,为第一个字符串建SAM 然后每一个字符串再在这个SAM ...
- 【51NOD-0】1089 最长回文子串 V2(Manacher算法)
[算法]回文树 #include<cstdio> #include<algorithm> #include<cstring> using namespace std ...
- httpd -v command not found
使用 find / -name "apachectl"查找文件目录下执行 ./apachectl -v
- ”未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项
引用:http://www.cnblogs.com/joey0210/archive/2012/09/29/2708420.html 上一篇文章说到了DLL引用问题,主要是说的程序中如果使用过了反射, ...
- Perl6 Bailador框架(6):获取用户输入
use v6; use Bailador; get '/' => sub { ' <html> <head><title></title>< ...