播放国标28181的PS流文件没有声音的问题

国标28181的PS流是打包在rtp中,传输给接收端播放的,如果要获取PS流的数据,就要把RTP包头去掉,拼在一起就是一个PS文件,这个文件是可以播放的。不过实际遇到的一个问题就是只有视频能播放,但声音出不来,用的是ffplay和vlc都一样。在用ffprobe查看流的信息,发现音频没有认出来。这是因为其中的音频流是G.711A,缺少声道和采样率的信息,这不像mp3音频格式每一帧都含有。ffmpeg中关于PS流解析的源码位于libavformat\mpeg.c,通过研究发现需要在保存PS流到文件的时候,先写入6个字节的文件头,其内容要求前4个字节为“IMKH”,表明这是海康的PS流,国标28181的音频G.711A的格式默认成单声道,8000,16位。这样一来,用ffprobe就能识别出音频流了,ffplay也能播放了。补充说明的是PS流中要包含PSM头(没有这个就不知道媒体类型,当然不能播放了),而系统头没有用到。

最近有人看了我上面写的还是不明白怎么做,我这里补充一下:由于ps流的规范里面的音频是mp2,是不支持G.711A格式的,所以才需要在文件最前面插入上面提到的6个字节。具体的做法就是产生一个新的ps文件,先写入那6个字节,再追加原来的PS文件。使用shell命令行操作可以参考下面的这篇文章:

拼接字符串和文件得到新的文件的命令_qiuchangyong的博客-CSDN博客_windows 命令行 字符串拼接

PS文件处理好了,就可以转换为mp4格式的,便于用各种播放器播放了。转换命令如下:

ffmpeg -i input.ps -vcodec copy -acodec aac output.mp4

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 国标PS(Protocol Stream)可以在视频传输过程中对数据进行分割和重组,保证数据传输的稳定性和可靠性。pspacket.h是国标PS下载的相关文件国标PS(Protocol Stream)是一种用于音视频传输的协议,由国家标准制定。它将音视频数据分成一个一个的小包(Packet),每个包都有自己的标识符和序号。这样,在数据传输过程中,如果其中一个小包丢失或损坏,接收端可以根据序号重新请求丢失或损坏的小包,保证数据的完整性。 pspacket.h文件国标PS下载过程中的一个头文件,它定义了国标PS下载时需要用到的一些数据结构和函数。这些数据结构和函数可以帮助实现PS的分割、重组和传输等功能。 通过使用pspacket.h文件,我们可以方便地在下载过程中处理国标PS数据包。这些数据包可以包含音频、视频和其他相关的媒体数据。使用pspacket.h文件,我们可以根据需要获取特定的数据包,或者将多个数据包进行组合,以满足特定的需求。 总之,国标PS是一种用于音视频传输的协议,它可以通过分割和重组数据包,保证数据传输的稳定性和可靠性。而pspacket.h文件国标PS下载过程中的一个头文件,它定义了使用国标PS时需要用到的一些数据结构和函数。 ### 回答2: 国标PS是指一种标准的视频传输协议,常用于视频编码和传输过程中。PSPacket.h是一个用于下载国标PS的头文件国标PS的下载过程需要使用特定的库和API函数来实现。在下载国标PS之前,我们需要先包含PSPacket.h头文件,这个头文件中定义了用于下载和处理PS的一些函数和数据结构。 在下载国标PS之前,我们需要先创建一个下载会话(Session),通过指定源地址、目标地址、端口号等参数来建立与视频服务器的连接。然后,我们可以使用PSPacket.h中的函数来发送下载请求,并接收服务器返回的视频数据。 下载国标PS的过程中,PSPacket.h提供了一些功能,例如可以获取每个PS包的头信息、获取视频数据、获取音频数据等等。我们可以根据具体的需求,使用这些函数来解析和处理PS数据,比如提取视频帧、提取音频片段等。 通过使用PSPacket.h头文件提供的函数,我们可以灵活地进行国标PS的下载和处理操作。同时,我们也可以根据自己的需求进行扩展和改进。总之,PSPacket.h是一个重要的头文件,可以方便地实现国标PS的下载功能。 ### 回答3: 国标ps是指通过网络传输音视频数据时的一种常用协议。pspacket.h作为国标ps的相关头文件,可以在下载和使用时提供一些功能和定义。 pspacket.h头文件中可能会包含一些关于国标ps数据结构的定义、常量和函数的声明。例如,可能会定义PSPacket结构体来表示ps的数据包,结构体中包含了一些字段,如包头、负载数据等。此外,pspacket.h头文件可能还会定义一些操作ps的函数,如解析ps包、封装ps包等。 当需要使用国标ps协议进行音视频传输时,可以先下载并引入pspacket.h头文件,然后根据自己的需求调用相关函数进行编程操作。通过这些函数,可以实现对ps的解析、封装、传输等功能。 使用国标ps协议进行音视频传输可以提高数据传输的效率和稳定性,同时也便于不同设备之间的数据交互。国标ps协议能够保证音视频数据的顺序和完整性,确保数据能够正确传输和解析。 总而言之,国标ps协议是一种常用的音视频传输协议,而pspacket.h头文件则提供了与该协议相关的定义和函数,方便使用者进行相应的音视频数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值