raw h264怎么判断是否有丢包?

   这几天测试视频会议,比较卡,同事总觉的是服务器丢包,特意录了一个本地视频文件,通过目测后,觉得: 服务器丢包了。

   程序员应该逻辑严谨。目测的方法不可靠。那么怎么能严谨的判断出是否有丢包呢?我们知道,

1)通过时间戳。这个必须要通过一个外部封装格式。加上时间戳才可以。比如ts 或者flv

2)对于裸的264数据,可以通过Elecard StreamEye Tools工具来分析。这个工具集里有个叫SAnalyzer.exe的工具。打开该工具,拖进文件,可以看到对文件的一个分析图



打开第一个对sps的分析结果



里面有几个关键的变量

gaps_in_frame_num_value_allowed_flag= 0 

这个值的意义如下

当 gaps_in_frame_num_value_allowed_flag  不为 1,即 frame_num  连续的情况下,每个图像的frame_num 由前一个参考帧图像对应的值加 1,着重点是“前一个参考帧”。 
           前面我们曾经提到,对于非参考帧来说,它的 frame_num  值在解码过程中是没有意义的,因为frame_num  值是参考帧特有的,它的主要作用是在该图像被其他图像引用作运动补偿的参考时提供一个标识。但 H.264 并没有在非参考帧图像中取消这一句法元素,原因是在 POC 的第二种和第三种解码方法中可以通过非参考帧的 frame_num 值计算出他们的 POC 值。 
    2࿰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`srs_h264_write_raw_frames` 是 srs-librtmp 库中的一个函数,用于将 H.264 原始帧数据写入到 RTMP 流中。 函数原型如下: ```c++ int srs_h264_write_raw_frames(srs_rtmp_t rtmp, char* frames, int frames_size, uint32_t dts, uint32_t pts); ``` 参数说明: - `rtmp`:RTMP 推流客户端对象。 - `frames`:H.264 原始帧数据。 - `frames_size`:H.264 原始帧数据的大小。 - `dts`:帧的 DTS 时间戳。 - `pts`:帧的 PTS 时间戳。 该函数会将 H.264 原始帧数据封装成 NALU 格式,并写入到 RTMP 流中。在使用该函数前,需要先调用 `srs_librtmp_create` 创建 RTMP 推流客户端对象,并通过 `srs_librtmp_set_video_*` 等函数设置视频相关参数。 以下是一个示例代码,演示了如何使用 `srs_h264_write_raw_frames` 函数将 H.264 原始帧数据写入到 RTMP 流中: ```c++ #include <srs_librtmp.h> int main() { // 初始化 srs-librtmp 库 srs_librtmp_context_t rtmp = srs_librtmp_create("rtmp://example.com/live/stream"); // 设置推流参数 srs_librtmp_set_video_resolution(rtmp, 640, 480); srs_librtmp_set_video_framerate(rtmp, 30); // 发送 H.264 数据 uint8_t* h264_data = ...; // 假设这是 H.264 数据 int h264_size = ...; // 假设这是 H.264 数据的大小 uint32_t dts = ...; // 帧的 DTS 时间戳 uint32_t pts = ...; // 帧的 PTS 时间戳 srs_h264_write_raw_frames(rtmp, h264_data, h264_size, dts, pts); // 释放资源 srs_librtmp_destroy(rtmp); return 0; } ``` 在实际使用中,你需要根据自己的业务逻辑,不断调用 `srs_h264_write_raw_frames` 函数将 H.264 数据写入到 RTMP 流中。同时,你还需要处理音频数据的推流。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值