我有一台提供H264编码帧的设备。我想使用LIVE555通过网络传输的那些。

问题:这些帧不包括SPS和PPS NAL单元。但是,我可以使用在设备对第一帧进行编码后向我提供SPS和PPS NAL单元的功能。

问题:在LIVE555的事件循环已经开始之后,如何设置SPS和PPS NAL单元?我已经阅读了许多有关类似问题的文章,但所有这些文章都提出了以下解决方案:

当DESCRIBE命令称为时,

  • LIVE555发送SPS和PPS NAL单元
  • 在调用createNewStreamSource()
  • 时设置NAL单位
  • 调用createNewRTPSink()时设置NAL单位

  • 对于我而言,所有这些解决方案都没有用,因为目前我还没有SPS和PPS NAL单元。在事件循环已经开始之后,是否有某种方式可以更新这些NAL单元?

    最佳答案

    您尚未提供有关应用程序设计/体系结构的足够信息,无法提供更好的答案:

    不知道我是否正确理解了您的问题,但听起来您只是在RTSP客户端请求之后实例化编码器。但是,DESCRIBE请求传递了SPS,PPS,并且在编写DESCRIBE时,您尚未编码任何数据,因此也没有SPS和PPS。

    如果在客户端请求之后在live555事件循环中实例化编码器,则一种解决方案是

  • 在应用程序启动时用所需的配置(或所有可能的配置)实例化编码器
  • 编码帧
  • 检索并保存SPS和PPS
  • 关闭编码器
  • 继续进行“正常”事件循环并等待RTSP客户端连接。

  • 以我的经验,SPS和PPS通常不会更改(经常),并且您必须从某个位置(配置文件?)获取编码器配置。

    如果这样不能回答您的问题,请提供有关例如应用程序线程,正在运行的事件循环,编码器生存期等。

    关于c++ - LIVE555-接收第一帧后设置SPS和PPS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33130619/

    10-11 23:16