what is FFmpeg? - iphone

I am using the LINK to take frame from video ..but it says to create a commercial project that decodes H264 video, we have to make sure that we get a license from MPEG LA.
Why should we get license?some tutorials say that we have to give complete source code to
LGPL , if we integrate statically FFMPEG.what is mean by statically? what is the other option?can we submit our App to Appstore(for storing video streams in server) without getting license from LGPL?i am getting confused? any help please?

There are multiple issues going on; the first is your legal right to use the FFMpeg code specifically. This code is governed by the license chosen by the FFMpeg developers, and they have portions with GPL and portions with LGPL embedded. If you compile with the GPL-licensed portions, then the entirety becomes GPL, and you must either distribute the source code for FFMpeg OR offer to make it available for three years. If you link your code against FFMpeg, then you must also provide your source code OR offer to make it available for three years.
If you disable the GPL portions, then you do not need to provide source code for your project, and you only need to provide FFMpeg source code if you modify the LGPL-portions of FFMpeg.
BUT, this is only to abide by the copyright on FFMpeg. You also must comply with the intellectual property of the algorithms inside FFMpeg. This means in the United States and most other countries you must license the underlying algorithms from the organizations that patented the algorithms. E.g., if you use FFMpeg to decode MPEG2 Layer 3 data, then you must license MP3 support from Fraunhofer or one of their licensees. They may or may not place restrictions on the source code that is legal to use their intellectual property.
There are probably dozens of patents on technology in FFMpeg across dozens of patent offices from countries around the world. Which is why a lot of companies buy their source (and licenses!) from a single source, to avoid the complication of licensing agreements in every country where you will have a user and a license holder has registered an intellectual property through the local patent office.

MPEG LA is a company that holds patent pools for several video related technologies.
FFMPEG is an actual implementation of a lot of video related technologies, which a.o. is licensed under the LGPL.
If you want to use FFMPEG to work with H264, you have to deal with both the FFMPEG licenses and the MPEG LA-held patent. The FFMPEG license will require you to redistribute FFMPEG source, whereas using H264 in any form will require you to pay for a license from MPEG LA.

FFMpeg is an open-source library, more information about this here http://www.ffmpeg.org/
If you want to include libraries into your iPhone projects static linking is the only allowed way of doing this. If you do not know the differences between static and dynamic linking, ask Google.
LGPL is just a type of software license, not a legal entity. AFAIK a library published under GPL can only be used if the end product is also licensed under GPL and is open-source. LGPL code can be used in closed-source projects, too if one includes the licence text in the software.
I am not a lawyer, but if you do not encode H.264 you do not have to pay any license fees at all to the MPEG LA.
Yes, linking ffmpeg into your projects is "app store compatible".
EDIT
As Theo pointed out in the comments, point 2 is wrong. This would render FFmpeg incompatible with the iPhone as no dynamic linking is allowed.

I am not a lawyer, but my interpretation of this is:
One of the intents of the LGPL is to allow the distribution of pre compiled binaries, but in such a way that substitutability is possible: LGPL preserves the right of the end user to swap a LGPL library for an equivalent library of their own choosing, by rebuilding the library from source or whatever.
This means the only way to be in compliance with LPGL licensed distributions is to release all your source code, OR, bundle the library as a stand alone dynamic library.
As iPhone software is required to use libraries statically linked, it doesn't seem possible to use LGPL libraries in AppStore Apps unless you also make your entire app source available - or enough of it such that users could re-link it with their own implementation of said library.

it is like an command line any to any video/image converter that can be extended to support as many media codecs as there are , for an instance you upload an video in some format to your site , you can convert it to flv or mp4 or any format u wish to support and host it just like you tube doing ...
http://www.ffmpeg.org/ffmpeg-doc.html check this for all possible functionality

Related

H.264 decoder Dynamic Linked Library based

I am building a Unity application in which i need to use a h.264 encoded stream. The data will be read over the network and shown on the screen (feed).
I Have worked with ffmpeg, but well context close is causing a problem so i was thinking of making my own h264.dll decoder.
I cannot find anything to where to start, everyone has SoC solutions to hardware decoders there are encoders available, any code/base or reference available on where to start with ?
i'v used ffmpeg its good but well its becoming big to ship since all those dll's are a bit bulky, so i want to do like one dll which will be the decoder and then whatever dependencies are required can be shipped.
If your license permits GPL, then you can compile ffmpeg (libav*) yourself eliminating all the unnecessary dependencies. (./configure --help will show you what options are available). Or you can license a decoder from a company like corecodec. Creating your own decoder is a no go. The spec is about 1000 pages long, and assumes you are familiar with advanced maths.

Client side chart export library

I'm looking for a client side (that is: HTML5, Javascript, Flash or Silvelight) library, which is
capable of creating interactive charts
capable of exporting these charts into jpg/png
is free (LGPL, or similar)
I have looked into Highcharts, and FusionCharts; both are very good choices - except that these can not be used in commercial software.
Are there any charting libraries with the above mentioned conditions?
Thanks,
krisy
FusionCharts provides a product named FusionCharts Free.
FusionCharts Free is dual licensed under the MIT (X11) and GNU GPL licenses.
In a nutshell, the above licenses allow you to:
Use the software for any purpose, commercial or personal
Modify the software's source code to suit your needs
Share the software with your friends and neighbors
Re-distribute the software as part of your software or hardware
applications
Read more about the licensing part here - http://www.fusioncharts.com/goodies/fusioncharts-free/product-licensing/

Is it ok to include other frameworks or libraries in my framework?

Background: I am about to start preparing my 1st framework for my clients, so they can easily integrate it into their apps and fetch data from my servers without dealing how communication with server is working. I chose ASIHTTPRequest library for communication.
Question: how should I deal with ASIHTTPRequest or any other static library - make it a part of my framework or let adopters link against it themselves in their projects?
I'm opting to make it a part of my framework, so I can prevent users from setting breakpoints in ASIHTTPRequest and easily access/log connection frames/data. But what would happen if my clients will need this library for their own purposes? Will they be able to link it second time? Won't it cause any run-time collisions?
Sorry for wording... Please let me stand corrected if I'm confusing any terms :)
Look at how ASIHTTPRequest handle it :)
They make you link against lots of the iOS frameworks but they don't ship them with their download.
However, they do ship code for Reachability with their library - if you don't already have it then you can include it. If you already have it in your project then that's OK too.
I would ship the source of ASI in a seperate folder - then your users can either include it or not.
That also has the benefit of ensuring that the version of ASI they use will work with your library ;)
(see the ASI docs here)
There are two different types of frameworks to consider, so I would do two things:
For any third party library like ASI that you use, include a
directory with the source as deanWombonurne indicated. Make sure to indicate which version of the library you have included if it is not clear (add a VERSION) file if needed or name the directory).
For Apple frameworks, include a manifest file somewhere that gives a
list of all the Apple frameworks they should include in their
project to satisfy your framework requirements.

Static (iPhone) libraries, distribution, and dependencies

(Presumably the following question is not iPhone specific, aside from the fact that we would likely use a Framework or dynamic library otherwise.)
I am building a proprietary iPhone SDK for a client, to integrate with their web back-end. Since we don't want to distribute the source code to customers, we need to distribute the SDK as a static library. This all works fine, and I have verified that I can link new iPhone apps against the library and install them on the device.
My concern is around third party libraries that our SDK depends on. For example we are currently using HTTPRiot and Three20 (the exact libraries may change, but that's not the point). I am worried that this may result in conflicts if customers are also using any of these libraries (and perhaps even different versions) in their app.
What are the best practices around this? Is there some way to exclude the dependent libraries' symbols from our own static library (in which case customers would have to manually link to both our SDK as well as HTTPRiot and Three20)? Or is there some other established mechanism?
I'm trying to strike a balance between ease of use and flexibility / compatibility. Ideally customers would only have to drop our own SDK into their project and make a minimal number of build settings changes, but if it makes things more robust, it might make more sense to have customers link against multiple libraries individually. Or I suppose we could distribute multiple versions of the SDK, with and without third party dependencies, to cover both cases.
I hope my questions make sense... Coming mainly from a Ruby and Java background, I haven't had to deal with compiled libraries (in the traditional sense) for a long time... ;)
If it were me I would specify exactly which versions of those 3rd party libraries my library interoperates with. I would then test against them, document them, and probably deliver with those particular versions included in the release.
Two things I would worry about:
-I would want to be sure it 'just works' when my customers install it.
-I wouldn't want to guarantee support for arbitrary future versions of those 3rd party libraries.
It is fine to include a process for the customer to move to newer versions, but if anything doesn't work then I would expect the customer to pay for that development work as an enhancement, rather than it being a free bug fix (unless you include that in the original license/support arrangement).
At that point it becomes an issue of ensuring your specific versions of the 3rd party libraries can work happily alongside anything else the customer needs (in your case a web back-end). In my experience that is usually a function of the library, e.g. some aren't designed so multiple versions can run side-by-side.

Any good library or software for queue networks simulation?

I have been trying to make work EZSIM with no luck, which is a software to build discrete event simulators in a graphical DOS environment. In this software, my simulator and many others (of the other people in the course I'm taking) don't work, but teacher's simulator (and examples of the downloaded files) does work.
So, I began to distrust of the software.
Do you know any software that resolves the same kind of problems but really works? It will be good if it is free, or I can download an evaluation copy or something like that.
If you don't know any software, do you know any library which might work? Preferably in C#, Ansi C, Java or Delphi.
This may be more than what you're looking for, but check out NS2. It's the standard for open source network simulations, and will allow you to simulate all kinds of network layer behavior.
I've also used JUNG in the past. It's very flexible, although it also doesn't offer much out of the box.
I used Möbius in my computer systems analysis class. It is free for educational use (which sounds like what you're doing). It's a Java GUI which generates C++ code.
The R package queuecomputer. queuecomputer is a computationally efficient method for simulating queues with arbitrary arrival and service times. There is a submitted paper on arXiv describing the algorithm used in the package. Examples can be found within the arXiv paper and the vignette. A web app based on the package is available at https://ace-ebert.shinyapps.io/queue_simulator_mmk/ .