1

我有一个支持 H.263+ 和 H.264 的基于 Java 的 VoIP 软电话 (jPhoneLite)。但目前 H.263 (RFC2190) 是不完整的。根据 RFC,数据必须在 MB(宏块?)边界处拆分,但我不知道如何找到它们。如果您在函数 ff_rtp_send_h263_rfc2190() 中查看 FFMPEG 源 /libavformat/rtpenc_h263_rfc2190.c,您可以看到 mb 边界信息以某种方式从编码器传递给它们的分包器。我使用 ffmpeg 将我的视频编码为 H263 数据,但我不知道 ffmpeg 是否提供了获取这些 MB 指针/偏移量的函数。

https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/rtpenc_h263_rfc2190.c

http://jphonelite.sourceforge.net

有什么帮助吗?谢谢。

4

2 回答 2

1

H.26x 比特流是分层的,通常每一层都以唯一的比特序列开始。

  1. 图片/帧层:以 PSC 开头 - 图片起始码。包括 GOV 组块列表。
  2. GOV 可以选择以代码开头。包括 MB 列表 - 宏块
  3. MB - 以标题开始,以代码结束。

您可以在以下部分阅读它:3.2 rfc2190的GOB 编号

查看 ffmpeg 代码后,通过 rtpenc_h263.c中的ff_h263_find_resync_marker_reverse ()完成对起始代码的搜索。

于 2016-03-30T10:39:17.243 回答
0

我更喜欢用 Java 编写的开源Jitsi

其他选项是Linphone,开源以及支持 h263/264 (msx264) 的良好 mediastramer2。你可以在那里找到相关的代码

于 2013-09-18T23:20:18.093 回答