当前位置: 首页 > 知识库问答 >
问题:

使用单nal模式的H264 over RTP视频定时

华泳
2023-03-14

我正在使用NvEnc对实时H264流进行编码,并尝试通过RTP将其作为“直播”(实际上是多播)发送。到目前为止,一切都很好,将h264转储到磁盘,甚至将flv写入磁盘进行调试都很好。使用MPlayer观看流时,发送原始UDP流也同样有效。至于流本身,它使用LOW_LATENCY预设,我只生成I和P帧(强制每60帧插入一个I帧,以及SPS/PPS)。NAL单元的创建也小于MTU-Size减去RTP标头长度。

现在,当我尝试通过RTP发送它时,我使用的是单NAL模式(打包模式=0),并且在计算RTP时间戳应该是什么样子时遇到了问题。我正在使用jrtplib来设置和使用RTP。

对于我从NvEnc获得的每个编码帧,我提取n个NAL单位,每个NAL单位都会在自己的RTP数据包中发送。我尝试使用相同的rtp时间戳发送帧的所有NAL单位,并将下一帧的时间戳增加1500 (90000Hz/60 fps,因为我有一个固定的60 fps输入)流。我还尝试测量帧n和帧n 1之间的时间作为时间戳的增量(无论如何大约是1500)。现在MPlayer仍然可以很好地播放流,但VLCPlayer每隔几秒钟就会重新缓冲一次,我认为这与时间戳问题有关。我认为MPlayer似乎更能容忍我这边的滥用。有关更多信息,以下是我用于播放流(部分)的sdp设置:

m=video 24712 RTP/AVP 96
a=rtpmap:96 H264/90000
a=ftmp:96 packetization-mode=0
a=recvonly

我误解了什么吗?我试图阅读RFC,但无法解决这个问题。

所以问题是,当使用单一nal模式时,为RTP生成时间戳的正确方法是什么?

共有1个答案

屈浩波
2023-03-14

在进一步修改之后,我在线程代码中发现了一个bug,这导致了框架的损坏。修复后,按以下方式创建时间戳对我来说很好:

我测量每个发送nal单元之间的时间。因此,对于每个新帧,自上次发送单元(固定60fps应用程序)起,延迟大约为16ms,我将其添加到RTP数据包的时间戳中。同一帧的每个nal单元之间的延迟相当小(接近零)。

对于我的用例来说,这很好。

 类似资料:
  • ffmpeg 是 *nix 系统下最流行的音视频处理库,功能强大,并且提供了丰富的终端命令,实是日常视频处理的一大利器! 实例 flac 格式转 mp3 音频格式转换非常简单:ffmpeg -i input.flac -acodec libmp3lame output.mp3。 ffmpeg 将会使用 libmp3lame 解码器将 input.flac 文件转换为 mp3 格式的 output.

  • 我正在尝试在 加载的网页中嵌入YouTube视频。 null WKWebView的配置接近默认值(CodeAllowSinLineMediaPlayback/code>已启用)。web页面加载 。 YouTube播放器中的全屏模式按钮变灰了。当我点击它时,会显示以下消息:“您的浏览器不支持全屏。”: 如果改用 ,则会收到相同的消息。全屏模式似乎适用于嵌入式Vimeo视频(尽管Vimeo播放器似乎只

  • 我有一个blob数组(实际上是二进制数据--我可以表达它是最有效的。我现在使用Blobs,但可能或其他更好的方法)。每个Blob包含1秒的音频/视频数据。每秒都会生成一个新的Blob并将其追加到我的数组中。因此代码大致如下所示: 我的目标是将此音频/视频数据流式传输到HTML5元素。我知道Blob URL可以像下面这样生成和播放:

  • 我想从给定的输入视频文件中拆分和。在网上冲浪后,我了解到使用是可能的。我打算在中实现上述功能。在ffmpeg中有很多构建过程,所以我更喜欢或任何其他可用的包。请任何人指导我如何使用或任何其他可用的框架来实现这些概念。 给定的输入视频文件(包含音频和视频) 预期的输出视频文件(只包含视频而不包含音频)

  • 问题内容: 我想从某些流式视频资源(例如you- tube或metacafe.com)中获取确切的视频链接,因为没有直接的视频链接可用。如何解析视频链接。还有如何使用Java将流视频从http url下载到本地系统? 谢谢! 问题答案: 我以前使用了一个名为HTMLParser的库。它可以读取html输入并生成HTML节点。然后,您可以分析并检索您喜欢的节点。

  • 我使用laravel famework和我使用ffmpeg PHP库。如果没有找到任何好的链接视频压缩使用ffmpeg。压缩有两种情况。 让我分享第一个案例代码:- 现在,第二个案例正在使用表单上传:- 现在当我进入函数:- 注意:-我不想在一些文件夹上传视频,然后获取视频并压缩视频。请帮助我如何解决这个问题。提前感谢:)