VLC播放器所需的SPS,PPS获取方法
来源:互联网 发布:大数据怎么用 编辑:程序博客网 时间:2024/05/22 02:06
通过直接观察VLC访问的sdp文件可以发现
其中主要的3个参数即为 profile-level-id sprop-parameter-sets其中sprop-parameter-sets 包含sps和pps的信息,以逗号隔开。
那么这3个数值从哪里获取?有什么含义?
可以参考http://www.cnblogs.com/skyseraph/archive/2012/04/01/2429384.html
通过这段时间的研究发现,sprop-parameter-sets 后面的数值为码流中sps和pps获取的值经过base64编码以后的数值,
profile-level-id为sps数值67以后的3个字节对应的16进制字符串
那么获取了sps和pps的数值以后就可以获取sdp文件的关键信息了
关于获取sps和pps,我在网上找了这样一段代码,经实测,可以得到正确的结果,代码可以在上一篇博客中找到
http://blog.csdn.net/devillee11123213/article/details/9452261
通过代码获取以后可以得到结果
SPS长度为:22
SPS的内容为:67 42 c0 16 ab 40 50 1e d0 80 00 00 03 00 80 00 00 0f 47 8b 17 50
----------
PPS长度为:4
PPS的内容为:68 ce 3c 80
----------
即我们得到的sps为67 42 c0 16 ab 40 50 1e d0 80 00 00 03 00 80 00 00 0f 47 8b 17 50
pps为68 ce 3c 80
这其中通过winhex 和MP4info等工具对比了下sps和pps 发现通过程序获取的sps和pps与正确结果是一样的,说明获取的sps和pps数值没有问题。
接下来就是将sps pps变成sdp中所需的字符串,通过查阅相关资料发现,sdp中的sps和pps数值是经过base64编码以后转换的。
直接将此字符串进行base64编码,结果肯定是错误的。
经过测试 我将sps的数值转化为byte数组
再调用Android中的base64编码方法
得到结果为:SPS:Z0LAFqtAUB7QgAAAAwCAAAAPR4sXUA==
PPS:aM48gA==
至此,就得到了关于sdp中的关键内容,经测试,VLC可以通过访问该sdp实现播放。
- VLC播放器所需的SPS,PPS获取方法
- VLC播放器所需的SPS,PPS获取方法
- 如何获取播放H264原始数据文件的宽高信息(from SPS PPS)
- vlc没有收到pps和sps
- H264 获取SPS与PPS
- RTP传输H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- RTP传输H264时的sps和pps的获取
- live555中是如何获取SPS和PPS的
- 解决h264readInt()值太大 以及 SPS和PPS的获取
- MP4文件中h264的 SPS、PPS获取
- MP4文件中h264的 SPS、PPS获取
- HashSet存储自定义对象
- [转]Vim打开中文文件乱码 Vim有四个跟字符编码方式有关的选项,encoding、fileencoding、fileencodings、termencoding(这些选项设置请参考Vim文档中e
- Js_面向对象_01
- 第七届 山东省ACM Fibonacci(暴力)
- Oracle blob like 查询
- VLC播放器所需的SPS,PPS获取方法
- Android Studio工程Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.错误
- 多线程之重入锁ReentrantLock(四)
- 深拷贝链表
- 动态规划拦截导弹(基础dp)
- Atlas:手淘Native容器化框架和思考
- Android响应式编程之RxJava2.0
- 微信小程序01-基础
- Aneka(二)学习笔记--定价机制