通过直接观察VLC访问的sdp文件可以发现

[plain]  view plain copy
  1. v=0
  2. o=- 0 0 IN IP4 192.168.1.112
  3. s=Stream-0
  4. i=N/A
  5. c=IN IP4 192.168.1.104
  6. t=0 0
  7. a=recvonly
  8. m=video 5006 RTP/AVP 96
  9. a=rtpmap:96 H264/90000
  10. a=fmtp:96 packetization-mode=1;profile-level-id=42c016;sprop-parameter-sets=Z0LAFqtAUB7QgAAAAwCAAAAPR4sXUA==,aM48gA==;
  11. a=control:trackID=1

其中主要的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数组

[java]  view plain copy
  1. byte a[] = { 0x67, 0x42, (byte) 0xc0, 0x16, (byte) 0xab, 0x40, (byte) 0x50,
  2. (byte) 0x1e, (byte) 0xd0, (byte) 0x80, 0x00, 0x00, 0x03, 0x00, (byte) 0x80, 0x00,
  3. 0x00, 0x0f, (byte) 0x47, (byte) 0x8b, (byte) 0x17, 0x50 };

再调用Android中的base64编码方法

[java]  view plain copy
  1. Base64.encodeToString(a, 0, 22, Base64.NO_WRAP);

得到结果为:

SPS:Z0LAFqtAUB7QgAAAAwCAAAAPR4sXUA==

PPS:aM48gA==

至此,就得到了关于sdp中的关键内容,经测试,VLC可以通过访问该sdp实现播放。

VLC播放器所需的SPS,PPS获取方法相关推荐

  1. linux下和嵌入式linux下通过udp接收来自vlc播放器的视频并转发播放

    1.最近需要在linux下基于udp写一个应用程序,实现接收vlc播放器发送的视频流,并将接收到的视频流转发到另一个vlc客户端播放.并将这个应用程序交叉编译到ARM上执行测试通过.主机端ip地址:1 ...

  2. Ubuntu安装VLC播放器

    Ubuntu安装VLC官方介绍:http://www.videolan.org/vlc/download-ubuntu.html sudo apt-get update sudo apt-get in ...

  3. iOS实现基于VLC播放器的封装效果

    前言: 在一些特定场景下,我们获取到的音视频,由于格式比较特殊,用avplayer等播放器是无法播放的,此时,我们可以借助强大的VLC播放器来处理. 原理这里不再赘述,下面我们讲一下如何添加VLC播放 ...

  4. 使用vlc播放器做rtsp流媒体服务器

    可参考: 使用vlc播放器播放rtsp视频 web网页中使用vlc插件播放相机rtsp流视频 使用vlc进行二次开发做自己的播放器 首先需要安装vlc播放器,下载及安装步骤略 使用vlc播放器做rts ...

  5. linux下载安装vlc指令,Ubuntu安装VLC播放器的步骤

    VLC是一款多功能的媒体播放器,支持多种视频格式,最大的优点就是可以播放"残缺"视频,那么Ubuntu下要如何安装VLC播放器呢?下面小编就给大家介绍下Ubuntu14.0安装VL ...

  6. Centos7 安装VLC播放器

    百度了一圈,各种安装命令都试了,不是错误就是没有可用安装包vlc.最后寻求官网才可以解决. 先贴出官网centos的vlc下载地址:https://www.videolan.org/vlc/downl ...

  7. 多个VLC播放器同步播放本地VCam视频流

    多个VLC播放器同步播放本地VCam视频流 配置如下: 下载安装VLC播放器,VCam虚拟摄像头 VCam打开一个视频文件 VLC设置捕获设备选择适配设备名称为e2esoft VCam:然后点击播放 ...

  8. Unity3d C# 使用Universal Media Player(ump)插件播放视频的众坑之无法播放视频和VLC播放器依赖的问题

    前言 Ump播放视频的坑,相信很多人都踩过了很多了,这个问题是必须VLC播放器的问题,我默认导入UMP Pro Win Mac Linux WebGL 2.0.3后,设置界面是这样的: 并且无法去除U ...

  9. linux安装vlc只能命令行启动,Ubuntu安装多功能的媒体播放器VLC播放器的步骤

    VLC是一款多功能的媒体播放器,支持多种视频格式,最大的优点就是可以播放"残缺"视频,那么Ubuntu下要如何安装VLC播放器呢?下面小编就给大家介绍下Ubuntu14.0安装VL ...

最新文章

  1. docker几个基础命令及nodejs容器
  2. Android开发人员不得不收集的代码(不断更新中...)
  3. 【Python学习系列四】Python程序通过hadoop-streaming提交到Hadoop集群执行MapReduce
  4. boost::detail::invoke相关的测试程序
  5. Boost:以协程的方式实现聊天服务器的实例
  6. python array操作,Python中数组的基本操作
  7. leetcode 686. Repeated String Match | 686. 重复叠加字符串匹配(KMP)
  8. java数组表格输出_Java 如何将数组中的数据以表格形式输出
  9. 2021高考成绩答题卡查询,明天用的2021高考答题卡,提前瞅一眼
  10. 日期Date和String/Long之间的转换
  11. 从零基础入门Tensorflow2.0 ----八、39.2. gpu2
  12. android-Vibrator的使用
  13. Unity如何查看当前内存使用情况
  14. git提示Can‘t update: no tracked branch
  15. vue3.0 组件篇 Card
  16. 修改win服务器防火墙端口号,Windows Server 修改防火墙和远程桌面(3389)默认端口...
  17. 链接下载(在线链接下载)
  18. 如何使用 dlv 结合 Goland 进行程序 debug 调试
  19. 老男孩歌词--永恒的记忆
  20. ubuntu16.04修改用户名、设备名和用户组名

热门文章

  1. 设计模式-Builder模式(构建者模式)
  2. 人体神经网络应用领域,人体神经网络应用研究
  3. 数学公式识别增强版:中英文手写印刷公式
  4. 摩托车一键启动无钥匙进入
  5. -- 35、查询所有学生的课程及分数情况;
  6. 解决win10无法访问共享
  7. 信息系统项目管理师(2022年)—— 重点内容:战略管理(17)
  8. BigchainDB 2.0 区块链数据库白皮书 V1.0
  9. python文件复制重命名_python复制文件并重命名
  10. 基于双二阶广义积分器的三相锁相环 在simulink中采用模块搭建了三相锁相环