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 <[email protected]> > 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 > [email protected] > http://ffmpeg.org/mailman/**listinfo/libav-user<http://ffmpeg.org/mailman/listinfo/libav-user> >
_______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
