用于全高清 H.264 视频的 gstreamer SRTP



我正在尝试在Raspberry Pi 3上实现全高清视频会议解决方案。由于我只需要延迟,我只想为音频和视频创建一条简单的 pipleline。我从源代码编译了 gstreamer 1.13.0.1,因为 raspian 存储库中的版本 1.4.4 是旧的(G.722 编码有问题(。我的加密管道似乎有效 - 但我的解密管道失败了:加密(运行(:

gst-launch-1.0 v4l2src ! 
  'video/x-h264,width=1920,height=1080,framerate=30/1' ! 
  h264parse config-interval=1 ! 
  rtph264pay ! 'application/x-rtp, payload=(int)96, ssrc=(uint)1356955624' ! srtpenc key="012345678901234567890123456789012345678901234567890123456789" ! udpsink host=10.0.0.132 port=5000

解密:解码:

gst-launch-1.0 udpsrc port=5000 ! 'application/x-rtp,encoding-name=(string)H264,ssrc=(uint)1356955624,srtp-key=(buffer)012345678901234567890123456789012345678901234567890123456789,srtp-cipher=(string)aes-128-icm,srtp-auth=(string)hmac-sha1-80' ! srtpdec ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
0:00

:00.234264235 26462 0x156b380错误GST_PIPELINE 语法.y:726:gst_parse_perform_link:无法将 udpsrc0 链接到 srtpdec0, srtpdec0 无法处理 caps application/x-rtp, encoding-name=(string(H264, ssrc=(uint(1356955624, SRTP-key=(buffer(012345678901234567890123456789012345678901234567890123456789, SRTP-cipher=(string(aes-128-icm, srtp-auth=(string(hmac-sha1-80

所以我想我需要一些额外的上限 - 但是哪个?

我也有这个问题,但是添加application/x-srtp不足以为我解决它。使用详细的输出和调试警告,我设法将其追溯到缺少的大写参数。https://gstreamer-bugs.narkive.com/qAz9lMNM/bug-786304-new-srtpenc-srtpdec-don-t-work 看了这里之后,我设法通过向大写字母添加srtcp-ciphersrtcp-authroc来使其工作:

gst-launch-1.0 udpsrc port=5000 ! 'application/x-srtp, payload=(int)96, ssrc=(uint)1356955624, srtp-key=(buffer)012345678901234567890123456789012345678901234567890123456789, srtp-cipher=(string)aes-128-icm, srtp-auth=(string)hmac-sha1-80, srtcp-cipher=(string)aes-128-icm, srtcp-auth=(string)hmac-sha1-80, roc=(uint)0' ! srtpdec ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink

最新更新