Closed inobelar closed 2 months ago
Update: Even without udp
usage h264decrypt
fails in the next case (rtp payload and immediate depayload):
$ GST_PLUGIN_PATH=/home/vuser/work/Gstreamer-H264-Encryption/build \
GST_DEBUG=5 \
DISPLAY=:0.0 \
gst-launch-1.0 --verbose \
videotestsrc do-timestamp=true pattern=ball ! \
"video/x-raw, width=640, height=480, framerate=30/1" ! \
timeoverlay ! \
x264enc ! \
\
h264encrypt \
iv-seed=1869052520 \
key=01234567012345670123456701234567 \
encryption-mode=aes-cbc ! \
\
rtph264pay config-interval=1 ! \
rtph264depay ! \
\
h264decrypt \
key=01234567012345670123456701234567 \
encryption-mode=aes-cbc ! \
\
avdec_h264 ! \
videoconvert ! \
ximagesink \
sync=true
Yes, this seems to be related. Off-by-one error again. I will compare payloads to see where in the payload the error occurs.
This is also fixed because of the fix for #4 so I am closing it.
Greetings! This issue is similar to https://github.com/ReFormationPro/Gstreamer-H264-Encryption/issues/4 , but now I'm tried to send h264-encoded video, wrapped into
rtp
protocol viaudp
(on localhost).I launch 'Receiver' first, and 'Sender' after it. 'Receiver' show few first frames (so it decrypt them correctly) then glitches, than completely fails.
x264enc
&rtph264pay
properties values dont affect behavior - even with default properties, 'Receiver' fails for a few seconds.For simplicity i dont use rtp-related 'tuning':
rtph264pay
::aggregate-mode
rtpjittebuffer
(beforertph264depay
)Sender pipeline:
STDOUT LOG
``` Setting pipeline to PAUSED ... Pipeline is PREROLLING ... 0:00:00.113100598 2957 0x7fc100000b70 FIXME default gstutils.c:4088:gst_element_decorate_stream_id_internal:Receiver pipeline:
STDOUT LOG
``` Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96 /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: extensions = < > /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au /GstPipeline:pipeline0/GstH264Decrypt:h264decrypt0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au Redistribute latency... /GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au /GstPipeline:pipeline0/GstH264Decrypt:h264decrypt0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96 /GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:src: caps = video/x-raw, format=(string)Y444_10LE, width=(int)640, height=(int)480, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/2 /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw, width=(int)640, height=(int)480, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)25/2, format=(string)BGRx, colorimetry=(string)1:1:16:4 /GstPipeline:pipeline0/GstXImageSink:ximagesink0.GstPad:sink: caps = video/x-raw, width=(int)640, height=(int)480, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)25/2, format=(string)BGRx, colorimetry=(string)1:1:16:4 /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw, format=(string)Y444_10LE, width=(int)640, height=(int)480, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/2 Redistribute latency... 0:00:03.738405739 2951 0x708c34000b70 ERROR h264decrypt h264_decrypt.c:276:gst_h264_decrypt_decrypt_slice_nalu: