大侠已经完成了很多操作了,唯一不足的是,工程完整性差一些,而且对于一些关键点的说明,不太明确,至少对于我这样的人来说,看mp4v2的代码是有些吃力了.
引用文:http://blog.csdn.net/jwzhangjie/article/details/8857892
根据此文作者的相关几篇文章,已经成功实现了编译,打包视频了.
也遇到评论中的一些问题,视频除了vlc,其它都无法播放.
而且根据不同的sps,pps,出现的结果不太一样.具体为手机中(9500)中的文件浏览器中的缩略图显示与否.
本人用了作者的h264文件,发现其实它算是完整的mp4文件应该,把后缀修改下,可以在各播放器中正常播放.
通常,我们需要保存的是h264帧,raw数据,和aac流,比如视频监控的数据,目前这没有aac音频,无法测试,但有h264数据帧,所以进行了测试.
sps,pps的取值与作者有些不同.然后我又查了下资料,发现是000001或00000001开头的数据,然后是sps,然后又是这段,pps,然后又这段,再是其它(mp4文件其它元素)等.然后把I帧打开一看
00 00 00 01 67 42 E0 14 DA 05 82 51 00 00 00 01
68 CE 30 A4 80 00 00 00 01 06 E5 01 A2 80 00 00
00 01
这是头部分
67就是sps的开头,68是pps,通常在一个流中,这些都是固定的,所以取一帧即可,而且要I帧.而且是00 00 00 01开头,标识的,没有作者程序中的aavc这样的数据,这个似乎是一个mp4文件中才存在的.而raw流应该是00 00 00 01开头的.
明白这个后,sps,pps就容易取出来的,因为只有这样的标识,没有长度标识,所以相对固定一些,可以解析,也可以直接用16进制查看得到.然后就有了.
unsigned char sps_pps_640[17] = {0x67, 0x42, 0xE0, 0x14, 0xDA, 0x05, 0x82, 0x51, 0x68, 0xCE, 0x30, 0xA4, 0x80};
sps,8个单位67 42 E0 14 DA 05 82 51
pps是5个68 CE 30 A4 80,作者是将二者合并的,其实不必
MP4AddH264SequenceParameterSet(fileHandle, video, sps_pps, sps_index);
MP4AddH264PictureParameterSet(fileHandle, video, sps_pps + sps_index, pps_index);
可惜啊,这样得到的视频,一般播放器无法播放,手机里的vlc可以,但pc上却不行.文件浏览器可以看到缩略图了,系统播放器依旧无法播放.
sps,pps无法正确地得到,但不明白哪个步骤出了错误,只有再研究了,还有作者的那块h264文件 个人觉得不适合用,视频监控的I帧也上传一个,可以测试下.
工程sps替换上面的就可以了.然后长度修改下.包含jni部分,也可以自己编译,在jni目录中运行ndk-build就可以了.
- I.rar (11.2 KB)
- 下载次数: 134
分享到:
相关推荐
基于富瀚6630平台移植mp4v2库将h264流保存为mp4文件
mp4v2将H264+AAC合成mp4文件源码 mp4v2将H264+AAC合成mp4文件源码 mp4v2将H264+AAC合成mp4文件源码 mp4v2将H264+AAC合成mp4文件源码
Android使用Mp4v2用h264流和acc流合成mp4 使用mp4v2源码在linux系统下生成对应的so包,AndroidStudio用最新的cmake利用mp4v2库生成mp4文件,用h264流生成mp4文件同一个套路,android进行h264的解码,将生成的每一帧喂...
Android使用Mp4v2用h264流和acc流合成mp4 使用mp4v2源码在linux系统下生成对应的so包,AndroidStudio用最新的cmake利用mp4v2库生成mp4文件,用h264流生成mp4文件同一个套路,android进行h264的解码,将生成的每一帧喂...
本程序利用mp4v2将h264和pcm文件打包成mp4, 测试命令为Debug目录下执行:conver_mp4.exe 1280 720 16000 enc.h264 000.pcm out.mp4; conver_mp4.exe 视频宽 视频高 音频采样率 h264文件 pcm文件 输出mp4文件
mp4v2封装h264裸流的库文件,网址https://blog.csdn.net/u012478275/article/details/84328143 有编译说明和API解析
mp4v2封装h264
Android使用Mp4v2用h264流和acc流合成mp4.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
这个示例工程可以完整的展示:如何使用libmp4v2将原始的音视频数据帧存储为mp4文件。可以帮助流媒体开发人员快速存储mp4文件。
自己写的一个mp4v2封装类,用的14/06的mp4v2版本。嘿嘿,大家需要地快下,帮我攒积分啊
使用MP4v2库 封装,解码H264码流。 1.包含live555拉流操作。 2.mp4v2库 3.mp4muxer 把H264封装成MP4 4.MP4demuxer 从MP4文件读取h264码流 5.测试项目
MP4V2把H264封装为Mp4测试API,函数使用和封装流程,详细在文档中有说明 https://blog.csdn.net/u012478275/article/details/84328143
mp4v2库实现h264格式转换成MP4格式,实现文件的格式的转换
根据MP4文件协议直接将H264包封装成MP4格式,通过Mp4v2可以很方便的将H264编码成MP4格式文件 参考博客文章:https://blog.csdn.net/davebobo/article/details/79648900
自己移植的MP4V2开源库可以直接使用代码封装H264和AAC linux.zip
C++ MP4v2获取rtsp流并保存为MP4文件,ffmpeg版本为4.0.1,其中的dll,lib,include在程序中已经提供,编译环境为vs2012
本人自行开发的标准H264文件转MP4(mp4v2+VS2015)功能。使用的是mp4v2开源库将标准H264文件封装成MP4文件,Windows自带播放器可播放。