[FFmpeg-user] Receive network stream and drop without decoding
abialyna at gmail.com
Tue Jun 16 12:36:21 EEST 2020
On 2020-06-16 01:22, Carl Eugen Hoyos wrote:
> Drop the map option.
Well, not working as expected :(
While this is kinda-working on this DASH example (it receives stream at
max speed with low CPU load) - it does not work as "client" at the same
time and fails badly on live streams as it tries to get stream as fast
In other words - ffplay "plays" stream at 100% of speed, requests new
packet, gets it, "plays" again and so on. Server live stream time is
going together with client, no desync, all DASH segments are provided
ffmpeg tries to do something with stream fast as possible, so only
network is limiting factor on recorded streams (i tested few, sometimes
it goes up to 30x realtime). On live streams it fails quickly as server
do not have stream in future (as ffmpeg requests new chunk in 1 second,
instead of 2 seconds, for example). This is also a problem on recorded
stream, as every client tries to take full record at maximum speed - far
from real client which requests each chunk at realtime.
Example live stream (takes a while, depending on network speed, with
~1.5x speedup it takes ~40 seconds) which will fail because ffmpeg will
requests chunks from future:
-c copy -f null -
[http @ 0000020b46696500] HTTP error 404 Not Found
[dash @ 0000020b45a49300] Failed to open fragment of playlist 0
I can't find any option to limit ffmpeg speed (if it can work at exactly
1x speed this may solve this problem), so maybe modifying ffplay is easier?
There is decoder_decode_frame function in ffplay, what if i do immediate
'return 0' from it?
More information about the ffmpeg-user