MikaTake / lavfilters

lavfilters
GNU General Public License v2.0
0 stars 0 forks source link

Configurable Timeout for Stream Opening #296

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Lav Splitter Source do not open the video stream. Speed internet channel allows 
me to watch this video. 

LAV Filters 0.54.1
Windows XP SP3

Video recording of the problem: http://www.youtube.com/watch?v=QDZFG9TXmmo
Speed download from internet: 100KiB/Sec
Sample video file: http://zalil.ru/34034641
Video File info: http://pastebin.com/907SuhXX

Original issue reported on code.google.com by kangr...@gmail.com on 4 Dec 2012 at 10:13

GoogleCodeExporter commented 8 years ago
This video is played by Flash

Original comment by kangr...@gmail.com on 4 Dec 2012 at 10:19

GoogleCodeExporter commented 8 years ago
The file seems to play just fine for me.

Original comment by h.lepp...@gmail.com on 13 Dec 2012 at 12:46

GoogleCodeExporter commented 8 years ago
Try to actually put the link into the "File" box, not the "URL" box.

Original comment by h.lepp...@gmail.com on 13 Dec 2012 at 12:47

GoogleCodeExporter commented 8 years ago
I will try describe in more detail.
This error only occurs if the low download speed (For example 100KiB/s).
I can debug LavSplitter.ax. Received the following message in the output window:
    LAVSplitter.ax(tid e64)    94656 : ::Load(): Opening file 'http://cs1-40.vk.com/d20/2110a772f1a7.360.mp4' (extension: .mp4)
    LAVSplitter.ax(tid e64)   115551 : [mov,mp4,m4a,3gp,3g2,mj2 @ 038B7760] error reading header: -1094995529

bp (LAVFDemuxer.cpp - OpenInputStream - avformat_open_input)

To reproduce this problem, you can use the nginx server with a speed limit of 
return files.
    limit_rate 110k;
Configuration, the server and the video file attached.

If those settings nginx run this video file through flash player or ffplay, a 
few seconds of the video starts playing.

Rev: 3a5eeb1229e4

nginx, config and sample video (mp4): 
http://www.mediafire.com/download.php?727k6fw2p7b7w4h
Demo reproduce: http://www.youtube.com/watch?v=fvT9M4X0Uhc

Original comment by kangr...@gmail.com on 2 Jan 2013 at 10:21

Attachments:

GoogleCodeExporter commented 8 years ago
There is a timeout in LAV Splitter on opening files, if it takes longer then 20 
seconds to read the headers of a file, it'll abort.

I can probably make the timeout configurable.

Original comment by h.lepp...@gmail.com on 9 Jan 2013 at 5:07

GoogleCodeExporter commented 8 years ago
0.65 filters work great in my player, thanks!

I'm having similar problem however with a URL 
loading from a misbehaving CDN server.

Calling IFileSourceFilter::Load() through your 
splitter will take over 20 seconds, and my UI
is blocked during this period. 

With a configurable timeout, I could bail after 
3 seconds or so and inform the user.

Maybe something like:

DWORD timeout = 3000;
hr = pFileSource->Load(path, timeout, NULL);
if(hr == LAV_TIMEOUT)
{
   Cleanup();
   return HR;
}

I'm currently working on a way around it using a 
worker thread, which is a pain.

Also, in this case, there is a TCP Reset sent by
the player at 20 seconds, then another Get request
is sent, then the stream is provided and playback 
begins. I have not noticed any abort from LAV.

Thanks much,
Gary

Original comment by jesperse...@gmail.com on 20 May 2015 at 8:11

popy2k14 commented 8 years ago

Dear GoogleCodeExporter.

Running into the same issue! Would be nice to see an official solution to this issue.

In the meantime, can you please provide your workaround with the workerthread?

PS: i am using c# with directshowlib

thx pOpY