I have written NPAPI plugin using firebreath. It works fine for all the registered mime-types. The plugin is registered for video/x-flv also. Now, whenever i type a url in address bar whose response contains video/x-flv content type, my plugin is invoked and it handles the response. But i observed, that when we play any flash video in browser, suppose in youtube, firefox sends many requests whose response headers contain video/x-flv as content type, but my plugin is not invoked. Why those requests remain transparent to my plugin? Same thing can be observed for vlc web plugin, which is also registered for video/x-flv content type.
If the request is being sent by the Flash plugin (through Firefox), it is up to the Flash plugin whether to use an external handler for the response.
Thanks for your reply! Yes, it seems to be the correct explanation. But when i analysed the http request and responses through Live HTTP headers addon, there was no way to distinguish between the requests. Anyways response header will always be the same no matter who invokes the request. How does firefox know, it should not interfere with the responses meant for flash plugin as plugin recieves its data through browser only! And is it possible anyhow to catch those requests and responses too using plugins.
I tried to play video through HTML5 in firefox, this time also plugin wasn't invoked!
In the first case, there might be a way to intercept the resources requested by plugins, but I'm not personally aware of how you would do that.
In the second case, I don't think YouTube serves FLV to the native HTML5 player, but instead media with a compatible format such as OGV or WebM.
I registered plugin for above mime types but still no success even in case of html5. If my plugin somehow intercepts those responses it will stop the video from playing. Is it possible for plugin to transfer the stream back to browser without triggering recursion.
This is not the best forum for asking about plugin development. Perhaps you could get answers here (not sure if they are all equivalent):