Am 15.11.2010 08:54, schrieb Sergio Arroutbi: > Steffen Ebersbach escribió: >> Am 12.11.2010 08:08, schrieb Sergio Arroutbi: >> >>> Hello. >>> >>> I am trying to decode images coming from a H264 Axis camera. >>> >>> This camera is sending H.264 stream based on some information provided >>> in SDP (sent via 200 Ok responses to RTSP DESCRIBE messages). >>> >>> After sending RTSP requests, I start receiving the stream. >>> >>> Once the stream is received, I dont know how to parse the RTP messages >>> in order to be able to decode the >>> >>> What i have is basically a socket that reads the RTP packets, get RTP >>> payload and calls: >>> >>> avcodec_decode_video(*context, *decoded_image, &got_picture, frame, >>> frame_size)), where "frame" and "frame_size" are the RTP payload and RTP >>> payload length. I continously get the error: >>> >>> [h264 @ 0x99b7a20]no frame! >>> >>> After investigating the issue, I guess that I have to parse RTP payload >>> in order to get "raw H264 frames". I discovered RFC3984 (that talks >>> about this topic), but I believe ffmpeg library does already perform >>> "RFC3984 performance", as it has some methods to parse the sdp, RTP, >>> etc. >>> >>> Which is the best method to decode the frames by calling >>> avcodec_decode_video? >>> >>> I guess I have to pass SDP information to AVContext*, but do not know >>> how to do so. >>> >>> Anyone could perform decoding of frames in a H.264 stream encapsulated >>> in RTP? >>> >>> Which is the best method to use? >>> >>> Thanks a lot. >>> >>> Sergio. >>> >>> >> >> Hi, >> >> you're right, ffmpeg can receive RTP streams. It also parse the >> informations from rtsp / sdp. >> The function you should use is av_open_input_file() with the address of >> the stream , for example rtsp://www.****.com/*** . >> >> Then ffmpeg parses the information to AVContext*. with >> av_find_stream_info(). After that you can initialize the decoder , based >> on the stream informations. >> >> The rtp-payload can then read by av_read_frame() and pass do >> av_decode_video. >> >> Steffen >> _______________________________________________ >> libav-user mailing list >> [email protected] >> https://lists.mplayerhq.hu/mailman/listinfo/libav-user >> >> > > Hi Steffen, > > Thanks a lot for your comments. > > I tried to perform the connection with av_find_stream_info () but > function blocks and dumps: > > [sdp @ 0x8d14060] Could not find codec parameters (Video: h264) > [sdp @ 0x8d14060] Estimating duration from bitrate, this may be inaccurate > > I am using the SDP that the camera I am trying to connect to is > responding in 200 OK RTSP of DESCRIBE message. The sdp file looks like > this: > > v=0 > o=- 1012156932815950 1012156932815950 IN IP4 10.0.0.10 > s=Media Presentation > e=NONE > c=IN IP4 0.0.0.0 > b=AS:50000 > t=0 0 > a=control:rtsp://10.0.0.10:554/axis-media/media.amp?videocodec=h264&resolution=VGA&videobitrate=5000&videobitratepriority=frame > > rate&fps=30&duration=0 > a=range:npt=0.000000- > m=video 0 RTP/AVP 96 > b=AS:50000 > a=framerate:30.0 > a=control:rtsp://10.0.0.10:554/axis-media/media.amp/trackID=1?videocodec=h264&resolution=VGA&videobitrate=5000&videobitrateprio > > rity=framerate&fps=30&duration=0 > a=rtpmap:96 H264/90000 > a=fmtp:96 packetization-mode=1; profile-level-id=420029; > sprop-parameter-sets=Z0IAKeKQFAe2AtwEBAaQeJEV,aM48gA== > > Hi
the sdp data seems to be correct, i don't know why it blocks, but you can enable the debug output to look closer why. The error 'Estimating duration from bitrate, this may be inaccurate' is ok, because it is a stream and has no duration. Steffen _______________________________________________ libav-user mailing list [email protected] https://lists.mplayerhq.hu/mailman/listinfo/libav-user
