Opened 11 years ago
Last modified 11 years ago
#4506 new defect
ffmpeg does not seem to receive replayed packets
| Reported by: | fohletex | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | ffmpeg |
| Version: | git-master | Keywords: | |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
Summary of the bug:
The following situation is given: I have a video I encoded with ffmpeg in x265 on ubuntu 14.04. I streamed (UDP) the video as MPEGTS to the localhost and captured the transmitted packets with tcpdump in a pcap file. When I replay the pcap file with tcpreplay, neither ffplay nor ffmpeg seem to receive the stream. Although the packets are really transmitted, as I could verify in wireshark and iptraf.
The packets seem to be correct, due to the fact that I can extract the UDP conversation stream into an own file which can be played manually again via ffplay without any problems. I can also stream the video directly to the localhost and receive it with ffplay or ffmpeg. Only when I stream from tcpreplay there are problems.
Note that general streaming works on my machine: I am able to stream the video directly and receive it.
I know that there is a ticket open for tcpreplay, that streaming to the localhost can work, but can also not work. But due to my upper described experiences among this topic it seems, that tcpreplay is able to replay the localhost packets. For example, I can tcpreplay and tcpdump the local transmission completely, so it's not like the packets are not sent.
How to reproduce:
Terminal 1:
% ffplay udp://127.0.0.1:1234 ffplay version N-71455-gfbdaebb Copyright (c) 2003-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 22.101 / 54. 22.101 libavcodec 56. 34.100 / 56. 34.100 libavformat 56. 30.100 / 56. 30.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 14.100 / 5. 14.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100
or
% ffmpeg -i udp://localhost:1234 -c:v rawvideo myvideo.avi ffmpeg version N-71455-gfbdaebb Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 54. 22.101 / 54. 22.101 libavcodec 56. 34.100 / 56. 34.100 libavformat 56. 30.100 / 56. 30.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 14.100 / 5. 14.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100
Both seem not to work. The video does not start playing.
Terminal 2:
% sudo tcpreplay -i lo mypcapfile.pcap Warning in sendpacket.c:sendpacket_open_pf() line 669: Unsupported physical layer type 0x0304 on lo. Maybe it works, maybe it wont. See tickets #123/318 sending out lo processing file: mypcapfile.pcap Actual: 3276 packets (4795040 bytes) sent in 9.82 seconds. Rated: 488293.3 bps, 3.73 Mbps, 333.60 pps Statistics for network device: lo Attempted packets: 3276 Successful packets: 3276 Failed packets: 0 Retried packets (ENOBUFS): 0 Retried packets (EAGAIN): 0
And here the output when I stream the video directly ...
Terminal 1:
% ffmpeg -re -i myvideo.ts -c:v copy -an -f mpegts -bsf:v h264_mp4toannexb udp://127.0.0.1:1234
ffmpeg version N-71455-gfbdaebb Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 54. 22.101 / 54. 22.101
libavcodec 56. 34.100 / 56. 34.100
libavformat 56. 30.100 / 56. 30.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 14.100 / 5. 14.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mpegts, from 'myvideo.ts':
Duration: 00:00:10.04, start: 54.791800, bitrate: 3606 kb/s
Program 1
Stream #0:0[0x65]: Video: hevc (Main) ([36][0][0][0] / 0x0024), yuv420p(tv), 1920x1080, 24 fps, 24 tbr, 90k tbn, 24 tbc
Output #0, mpegts, to 'udp://127.0.0.1:1234':
Metadata:
encoder : Lavf56.30.100
Stream #0:0: Video: hevc ([36][0][0][0] / 0x0024), yuv420p, 1920x1080, q=2-31, 24 fps, 24 tbr, 90k tbn, 24 tbc
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
frame= 16 fps=0.0 q=-1.0 size= 349kB time=00:00:00.58 bitrate=4898.7kbits/frame= 28 fps= 28 q=-1.0 size= 588kB time=00:00:01.08 bitrate=4449.5kbits/frame= 40 fps= 26 q=-1.0 size= 953kB time=00:00:01.58 bitrate=4930.0kbits/frame= 52 fps= 26 q=-1.0 size= 1204kB time=00:00:02.08 bitrate=4734.4kbits/frame= 64 fps= 25 q=-1.0 size= 1451kB time=00:00:02.58 bitrate=4601.7kbits/frame= 76 fps= 25 q=-1.0 size= 1838kB time=00:00:03.08 bitrate=4883.2kbits/frame= 88 fps= 25 q=-1.0 size= 2299kB time=00:00:03.58 bitrate=5255.7kbits/frame= 100 fps= 25 q=-1.0 size= 2747kB time=00:00:04.08 bitrate=5512.0kbits/frame= 112 fps= 25 q=-1.0 size= 3014kB time=00:00:04.58 bitrate=5387.2kbits/frame= 125 fps= 25 q=-1.0 size= 3098kB time=00:00:05.12 bitrate=4952.2kbits/frame= 137 fps= 25 q=-1.0 size= 3187kB time=00:00:05.62 bitrate=4641.9kbits/frame= 149 fps= 25 q=-1.0 size= 3297kB time=00:00:06.12 bitrate=4409.1kbits/frame= 161 fps= 25 q=-1.0 size= 3439kB time=00:00:06.62 bitrate=4252.5kbits/frame= 173 fps= 24 q=-1.0 size= 3510kB time=00:00:07.12 bitrate=4035.2kbits/frame= 185 fps= 24 q=-1.0 size= 3715kB time=00:00:07.62 bitrate=3991.7kbits/frame= 197 fps= 24 q=-1.0 size= 3946kB time=00:00:08.12 bitrate=3978.3kbits/frame= 210 fps= 24 q=-1.0 size= 4159kB time=00:00:08.66 bitrate=3931.2kbits/frame= 222 fps= 24 q=-1.0 size= 4302kB time=00:00:09.16 bitrate=3844.7kbits/frame= 234 fps= 24 q=-1.0 size= 4518kB time=00:00:09.66 bitrate=3828.4kbits/frame= 241 fps= 24 q=-1.0 Lsize= 4563kB time=00:00:09.95 bitrate=3753.5kbits/s
video:4204kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 8.546336%
Terminal 2:
% ffplay udp://127.0.0.1:1234
ffplay version N-71455-gfbdaebb Copyright (c) 2003-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --bindir=/home/user/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil 54. 22.101 / 54. 22.101
libavcodec 56. 34.100 / 56. 34.100
libavformat 56. 30.100 / 56. 30.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 14.100 / 5. 14.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mpegts, from 'udp://127.0.0.1:1234':0KB sq= 0B f=0/0
Duration: N/A, start: 1.483333, bitrate: N/A
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: hevc (Main) ([36][0][0][0] / 0x0024), yuv420p(tv), 1920x1080, 24 fps, 24 tbr, 90k tbn, 24 tbc
13.72 M-V: -0.270 fd= 0 aq= 0KB vq= 0KB sq= 0B f=0/0



I would like to attach the .pcap-file. But due to memory upload limitations I can not. Please contact me if you need the .pcap file that I can deliver it to you in another way.