gstreamer-1.0 profile-level-id and pic_order_cnt_type

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

gstreamer-1.0 profile-level-id and pic_order_cnt_type

bazigg
Hello!

I created my gst rtsp server but I have some problem with connecting it with particular client (axis camera station). i am using version 1.8.1

The client can work with ip camera. Here is the example of sdp in successful session:

v=0
o=- 1466356337748047 1466356337748047 IN IP4 192.168.5.102
s=Media Presentation
e=NONE
c=IN IP4 0.0.0.0
b=AS:50000
t=0 0
a=control:rtsp://192.168.5.102/axis-media/media.amp?videocodec=h264&camera=1&resolution=640x480&fps=15
a=range:npt=0.000000-
m=video 0 RTP/AVP 96
b=AS:50000
a=framerate:15.0
a=transform:1,0,0;0,1,0;0,0,1
a=control:rtsp://192.168.5.102/axis-media/media.amp/trackID=1?videocodec=h264&camera=1&resolution=640x480&fps=15
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1; profile-level-id=420029; sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==
SETUP rtsp://192.168.5.102/axis-media/media.amp/trackID=1?videocodec=h264&camera=1&resolution=640x480&fps=15 RTSP/1.0
User-Agent: AXIS Virtual Camera
Authorization: Basic cm9vdDprcmFzbm9kYXI=
Transport: RTP/AVP/TCP;unicast
CSeq: 6


I tried to duplicate this behavior but it doesn't works for me. The pipeline that I use is:
  pipeline = gst_parse_launch("( videotestsrc is-live=true ! video/x-raw,width=640,height=480,framerate=15/1 ! "
                              " x264enc bitrate=40000 bframes=0 cabac=false dct8x8=false b-adapt=false speed-preset=1 tune=0x00000004 byte-stream=true intra-refresh=true ! rtph264pay name=pay0 pt=96 sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV\\,aM48gA\\=\\= )",
                              &error);
Sdp of my server is:

v=0
o=- 1357203415215407603 1 IN IP4 192.168.5.117
s=Session streamed with GStreamer
i=rtsp-server
t=0 0
a=tool:GStreamer
a=type:broadcast
a=control:*
a=range:npt=0-
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:2097
a=rtpmap:96 H264/90000
a=framerate:15
a=fmtp:96 packetization-mode=1;profile-level-id=42c016;sprop-parameter-sets=Z0LAFtkAoD2wEQAAAwABAAADAB6PFi5I,aMuMsg==
a=control:rtsp://192.168.5.117/axis-media/media.amp/trackID=0



Everuthing is OK until PLAY request

I wanted to adjust parameters of h264 to copy behaviour of camera. But client crashes. Here is the message of error log of client:
2016-07-03 13:31:14,096  DEBUG [(null)] [85_192.168.5.100/0] (null)((null)), (null) (null) <(null)> - <0> Received response for: RtspRequest PLAY, CSeq: 3, URI: rtsp://192.168.5.100:8080/axis-media/media.amp?camera=1&videocodec=h264&fps=15&resolution=640x480&compression=30&audio=0
2016-07-03 13:31:14,102  DEBUG [(null)] [85_192.168.5.100/0] (null)((null)), (null) (null) <(null)> - <0> Play response range: npt=now-
2016-07-03 13:31:14,210  FATAL [(null)] [85_192.168.5.100/0] (null)((null)), (null) (null) <(null)> - AppDomain.CurrentDomain.UnhandledException, IsTerminating: False, System.InvalidOperationException: Unsupported pic_order_cnt_type encountered⁠⁠⁠⁠

I think the problem is with pipeline. I tried to set profile-level-id to rtph264pay but it doesn't have this parameter.

I appreciate any help!
Reply | Threaded
Open this post in threaded view
|

Re: gstreamer-1.0 profile-level-id and pic_order_cnt_type

Nicolas Dufresne-4


Le 3 juil. 2016 5:41 PM, "bazigg" <[hidden email]> a écrit :
>
> Hello!
>
> I created my gst rtsp server but I have some problem with connecting it with
> particular client (axis camera station). i am using version 1.8.1
>
> The client can work with ip camera. Here is the example of sdp in successful
> session:
>
> v=0
> o=- 1466356337748047 1466356337748047 IN IP4 192.168.5.102
> s=Media Presentation
> e=NONE
> c=IN IP4 0.0.0.0
> b=AS:50000
> t=0 0
> a=control:rtsp://192.168.5.102/axis-media/media.amp?videocodec=h264&camera=1&resolution=640x480&fps=15
> a=range:npt=0.000000-
> m=video 0 RTP/AVP 96
> b=AS:50000
> a=framerate:15.0
> a=transform:1,0,0;0,1,0;0,0,1
> a=control:rtsp://192.168.5.102/axis-media/media.amp/trackID=1?videocodec=h264&camera=1&resolution=640x480&fps=15
> a=rtpmap:96 H264/90000
> a=fmtp:96 packetization-mode=1; profile-level-id=420029;
> sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV,aM48gA==
> SETUP
> rtsp://192.168.5.102/axis-media/media.amp/trackID=1?videocodec=h264&camera=1&resolution=640x480&fps=15
> RTSP/1.0
> User-Agent: AXIS Virtual Camera
> Authorization: Basic cm9vdDprcmFzbm9kYXI=
> Transport: RTP/AVP/TCP;unicast
> CSeq: 6
>
>
> I tried to duplicate this behavior but it doesn't works for me. The pipeline
> that I use is:
>   pipeline = gst_parse_launch("( videotestsrc is-live=true !
> video/x-raw,width=640,height=480,framerate=15/1 ! "
>                               " x264enc bitrate=40000 bframes=0 cabac=false dct8x8=false
> b-adapt=false speed-preset=1 tune=0x00000004 byte-stream=true
> intra-refresh=true ! rtph264pay name=pay0 pt=96
> sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV\\,aM48gA\\=\\= )

You should set the profile, level and steam-format in the caps if a capsfilter. Then let x264 negotiate with the payloader, which should figure out the rest.

>                               &error);
> Sdp of my server is:
>
> v=0
> o=- 1357203415215407603 1 IN IP4 192.168.5.117
> s=Session streamed with GStreamer
> i=rtsp-server
> t=0 0
> a=tool:GStreamer
> a=type:broadcast
> a=control:*
> a=range:npt=0-
> m=video 0 RTP/AVP 96
> c=IN IP4 0.0.0.0
> b=AS:2097
> a=rtpmap:96 H264/90000
> a=framerate:15
> a=fmtp:96
> packetization-mode=1;profile-level-id=42c016;sprop-parameter-sets=Z0LAFtkAoD2wEQAAAwABAAADAB6PFi5I,aMuMsg==
> a=control:rtsp://192.168.5.117/axis-media/media.amp/trackID=0
>
>
>
> Everuthing is OK until PLAY request
>
> I wanted to adjust parameters of h264 to copy behaviour of camera. But
> client crashes. Here is the message of error log of client:
> 2016-07-03 13:31:14,096  DEBUG [(null)] [85_192.168.5.100/0] (null)((null)),
> (null) (null) <(null)> - <0> Received response for: RtspRequest PLAY, CSeq:
> 3, URI:
> rtsp://192.168.5.100:8080/axis-media/media.amp?camera=1&videocodec=h264&fps=15&resolution=640x480&compression=30&audio=0
> 2016-07-03 13:31:14,102  DEBUG [(null)] [85_192.168.5.100/0] (null)((null)),
> (null) (null) <(null)> - <0> Play response range: npt=now-
> 2016-07-03 13:31:14,210  FATAL [(null)] [85_192.168.5.100/0] (null)((null)),
> (null) (null) <(null)> - AppDomain.CurrentDomain.UnhandledException,
> IsTerminating: False, System.InvalidOperationException: Unsupported
> pic_order_cnt_type encountered⁠⁠⁠⁠
>
> I think the problem is with pipeline. I tried to set profile-level-id to
> rtph264pay but it doesn't have this parameter.
>
> I appreciate any help!
>
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/gstreamer-1-0-profile-level-id-and-pic-order-cnt-type-tp4678385.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
>[hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: gstreamer-1.0 profile-level-id and pic_order_cnt_type

bazigg
Thank you for your answer!

I've tried this pipeline:

videotestsrc is-live=true ! video/x-raw,width=640,height=480,framerate=15/1 ! x264enc bitrate=40000 bframes=0 cabac=false dct8x8=false b-adapt=false speed-preset=1 tune=0x00000004 byte-stream=true intra-refresh=true ! rtph264pay name=pay0 pt=96 sprop-parameter-sets=Z0IAKeNQFAe2AtwEBAaQeJEV\\,aM48gA\\=\\=

But I got the same error:
IsTerminating: False, System.InvalidOperationException: Unsupported pic_order_cnt_type encountered⁠⁠⁠⁠



Here is delailed parameters of h264 which the client requieres:
======= SPS =======
 profile_idc : 66
 constraint_set0_flag : 0
 constraint_set1_flag : 0
 constraint_set2_flag : 0
 constraint_set3_flag : 0
 constraint_set4_flag : 0
 constraint_set5_flag : 0
 reserved_zero_2bits : 0
 level_idc : 41
 seq_parameter_set_id : 0
 chroma_format_idc : 1
 residual_colour_transform_flag : 0
 bit_depth_luma_minus8 : 0
 bit_depth_chroma_minus8 : 0
 qpprime_y_zero_transform_bypass_flag : 0
 seq_scaling_matrix_present_flag : 0
 log2_max_frame_num_minus4 : 0
 pic_order_cnt_type : 0
   log2_max_pic_order_cnt_lsb_minus4 : 12
   delta_pic_order_always_zero_flag : 0
   offset_for_non_ref_pic : 0
   offset_for_top_to_bottom_field : 0
   num_ref_frames_in_pic_order_cnt_cycle : 0
 num_ref_frames : 1
 gaps_in_frame_num_value_allowed_flag : 0
 pic_width_in_mbs_minus1 : 39
 pic_height_in_map_units_minus1 : 29
 frame_mbs_only_flag : 1
 mb_adaptive_frame_field_flag : 0
 direct_8x8_inference_flag : 1
 frame_cropping_flag : 0
   frame_crop_left_offset : 0
   frame_crop_right_offset : 0
   frame_crop_top_offset : 0
   frame_crop_bottom_offset : 0
 vui_parameters_present_flag : 1




I think that the main problem is to set  pic_order_cnt_type = 0

How exactly can I set this parameter in pipeline?