[Libav-user] Problema with RTP stream (h264)
rafaware at gmail.com
Tue Oct 22 16:37:30 CEST 2013
Hi Camera Man
Thanks for the reply. I have also patched my own ffmpeg (2.0.2) with the
following lines in udp.c (avformat directory):
// #define UDP_TX_BUF_SIZE 32768 old value
#define UDP_TX_BUF_SIZE 65536
// #define UDP_MAX_PKT_SIZE 65536 old value
#define UDP_MAX_PKT_SIZE 131072
and still fails. I have algo patch with UDP_MAX_PKT_SIZE 524288 (and
UDP_MAX_PKT_SIZE 1048576) and still fails. Testing and testing I have found
that that with version 0.8.15 (with UDP_MAX_PKT_SIZE 65536) it happens
less. Are you sure it depends on that parameter? Any other ideas I can try?
If I reduce the resolution of the camera, it work properly. The original
resolucion (1280x960) always fails
Thanks in advance
2013/10/17 Camera Man <i.like.privacy.too at gmail.com>
> On 10/15/2013 02:21 PM, Rafa Lopez wrote:
>> ./ffmpeg -i "rtsp://192.168.0.95:554/**profile1<http://192.168.0.95:554/profile1><
>> http://192.168.0.95:554/**profile1 <http://192.168.0.95:554/profile1>>"
>> -y %6d.jpg -log-level debug
>> The problem is that I always get corrupt images (example attached). I
>> think the problem is
>> [h264 @ 0x1c28d60] RTP: missed 146 packets
>> [AVIOContext @ 0x7f3190016d20] Statistics: 0 seeks, 3 writeouts
>> [h264 @ 0x1f82300] concealing 2237 DC, 2237 AC, 2237 MV errors in I frame
>> [h264 @ 0x1fc7160] Frame num gap 8 6
>> RTP missed packets. I attach the full log. Anyone can help me?
> No way to properly solve with ffmpeg configuration at this point, although
> adding "-rtsp_transport tcp" before "-y" will reduce the pain for you.
> Unfortunately, the udp layer will set it's SO_RCVBUF kernel buffer to at
> most 64K, (which e.g. Linux will translate to a 128K buffer). That
> practically guarantees that any single frame larger than 128K (e.g., an
> average I-frame in an 1280x720 stream) will not fit within the kernel
> socket buffers, resulting in at least one packet (and part of the frame)
> dropped, thus the corruption you see.
> I do not know of a way to ask FFMPEG to properly increase the UDP kernel
> buffer size. I had patched my own ffmpeg to set SO_RCVBUF to 1024K, and it
> worked for me. But then I switched to TCP and stopped worrying (Using TCP
> instead DOES introduce latency and waste bandwidth, because packets are
> getting lost and retransmitted, but I don't care about another 10ms or 10%
> higher bandwidth as I'm on a local network).
> The udp layer does have a "buffer_size" parameter, but there's no way that
> I'm aware of to pass it to the udp layer through the rtsp layer.
> Libav-user mailing list
> Libav-user at ffmpeg.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Libav-user