Recherche avancée

Médias (0)

Mot : - Tags -/metadatas

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (78)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

Sur d’autres sites (8418)

  • Matomo analytics for wordpress

    15 octobre 2019, par Matomo Core Team — Community

    Self-hosting web analytics got a whole lot easier ! Introducing Matomo for WordPress

    Be the first to try it out ! Your feedback is much needed and appreciated

    Get a fully functioning Matomo (which is comparable to Google Analytics) in seconds ! How ? With the new Matomo Analytics for WordPress plugin. 

    Web analytics in WordPress has never been easier to get, or more powerful. Matomo Analytics for WordPress is the one-stop problem solver. It’ll save you time, money and give you the insights to help your website or business succeed. 

    Best of all, we get to further the goal of decentralising the internet. Our hope is for Matomo Analytics for WordPress to spread far and wide. We’re so excited that more and more people can now get their hands on this powerful, free, open-source analytics platform, in a few clicks !

    Download now and check it out !

    What do you get ?

    • No more signing up to third party analytics service (like Google)
    • No more sending away your valuable data to a third party service (like Google)
    • Easy setup – install with a few clicks, no tracking code installation or developer knowledge needed
    • 100% accurate data – no data sampling and no data limits 
    • Full data ownership – all data is stored on your servers and no one else can see your data
    • Privacy protection / GDPR compliance
    • Ecommerce tracking out-of-the-box (Woocommerce, Easy Digital Downloads, and MemberPress) and we’re keen to add many more over time
    • Powerful features – segmenting, comparing reports, different visualisations, real-time reports, visit logs and visitor profiles, Matomo Tag Manager, dashboards, data export, APIs, and many more
    • Compared to other WordPress solutions we don’t charge you extra for basic features that should work out-of-the-box
    • Just like Matomo On-Premise, Matomo Analytics for WordPress is free

    We need your feedback !

    We all know and love the versatility of WordPress – with over 55,000 plugins and all the different ways of hosting it. However, with this great versatility comes the potential for things to be missed, so we’re keen to hear your feedback.

    Thank you ! We really appreciate your help on this ❤️

    How do you get Matomo Analytics for WordPress ?

    Log in to your WordPress and go to “Plugins => Add New”, search for “Matomo Analytics – Ethical Stats. Powerful Insights”, click on “Install” and then “Activate”.

    All you need is at least WordPress 4.8 and PHP 7.0 or later. MySQL 5.1+ is recommended. 

    The source code is available at : https://github.com/matomo-org/wp-matomo/

    In perfect harmony : Matomo and WordPress

    Matomo Analytics for WordPress

    The idea for this started two years ago when we realised the similarities between the Matomo and WordPress project. 

    Not only from a technological point of view – where both are based on PHP and MySQL and can be extended using plugins – but also from a philosophical, license and values point of view. We both believe in privacy, security, data ownership, openness, transparency, having things working out-of-the-box, simplicity etc. 

    WordPress is currently used on approximately 30% of all websites. Many of them use the self-hosted open-source WordPress version. Giving everyone in this market the opportunity to easily get a powerful web analytics platform for free, means a lot to us. We believe WordPress users get a real choice besides the standard solution of Google Analytics, and it furthers our effort and goal of decentralising the internet. 

    We’re hoping more people will be empowered to protect user privacy, have access to a great free and open-source tool, and keep control of data in their own hands.

    We hope you feel the same. Help us spread the word to your friends and get them in on this awesome new project !

    Share on facebook
    Share on twitter
    Share on linkedin

    FAQs

    Isn’t there already a WP-Matomo plugin for WordPress available ?

    Yes, the existing WP-Matomo (WP-Piwik) plugin is an awesome plugin to connect your existing Matomo On-Premise or Matomo Cloud account with WordPress. The difference is that this new plugin installs Matomo Analytics fully in your WordPress. So you get the convenience of having a powerful analytics platform within your WordPress.

    We highly recommend you install this new plugin if you use WordPress and are not running Matomo yet. 

    If you are already using Matomo on our Cloud or On-Premise, we’d still highly recommend you use WP-Matomo (WP-Piwik). So that you get an easier way of inserting the tracking code into your WordPress site and get insights faster.

    I have a high traffic website, will it be an issue ?

    If you have a lot of traffic, we’d advise you to install Matomo On-Premise separately. There’s no specific traffic threshold we can give you on when it’s better to use Matomo On-Premise. It really depends on your server. 

    We reckon if you have more than 500,000 page views a month, you may want to think about using Matomo On-Premise with WP-Matomo instead, but this is just an estimate. In general, if the load on your server is already quite high, then it might be better to install Matomo on a separate server. See also recommended server sizing for running Matomo.

    How do I report a bug or request a new feature in Matomo for WordPress ?

    Please create an issue, on our repository whenever you find a bug or if you have any suggestion or ideas of improvement. We want to build an outstanding analytics experience for WordPress !

    Have another question you’re dying to ask ? The Matomo for WordPress FAQ page might have the answer you need. 

    Matomo Analytics for WordPress newsletter

    Get ahead of the crowd – signup to our exclusive Matomo for WordPress newsletter to get the latest updates on this exciting new project.

    &lt;script type=&quot;text/javascript&quot;&gt;<br />
    (function(global) {<br />
     function serialize(form){if(!form||form.nodeName!==&quot;FORM&quot;){return }var i,j,q=[];for(i=form.elements.length-1;i&gt;=0;i=i-1){if(form.elements[i].name===&quot;&quot;){continue}switch(form.elements[i].nodeName){case&quot;INPUT&quot;:switch(form.elements[i].type){case&quot;text&quot;:case&quot;hidden&quot;:case&quot;password&quot;:case&quot;button&quot;:case&quot;reset&quot;:case&quot;submit&quot;:q.push(form.elements[i].name+&quot;=&quot;+encodeURIComponent(form.elements[i].value));break;case&quot;checkbox&quot;:case&quot;radio&quot;:if(form.elements[i].checked){q.push(form.elements[i].name+&quot;=&quot;+encodeURIComponent(form.elements[i].value))}break;case&quot;file&quot;:break}break;case&quot;TEXTAREA&quot;:q.push(form.elements[i].name+&quot;=&quot;+encodeURIComponent(form.elements[i].value));break;case&quot;SELECT&quot;:switch(form.elements[i].type){case&quot;select-one&quot;:q.push(form.elements[i].name+&quot;=&quot;+encodeURIComponent(form.elements[i].value));break;case&quot;select-multiple&quot;:for(j=form.elements[i].options.length-1;j&gt;=0;j=j-1){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+&quot;=&quot;+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case&quot;BUTTON&quot;:switch(form.elements[i].type){case&quot;reset&quot;:case&quot;submit&quot;:case&quot;button&quot;:q.push(form.elements[i].name+&quot;=&quot;+encodeURIComponent(form.elements[i].value));break}break}}return q.join(&quot;&amp;&quot;)};<br />
    <br />
    <br />
     function extend(destination, source) {<br />
       for (var prop in source) {<br />
         destination[prop] = source[prop];<br />
       }<br />
     }<br />
    <br />
     if (!Mimi) var Mimi = {};<br />
     if (!Mimi.Signups) Mimi.Signups = {};<br />
    <br />
     Mimi.Signups.EmbedValidation = function() {<br />
       this.initialize();<br />
    <br />
       var _this = this;<br />
       if (document.addEventListener) {<br />
         this.form.addEventListener('submit', function(e){<br />
           _this.onFormSubmit(e);<br />
         });<br />
       } else {<br />
         this.form.attachEvent('onsubmit', function(e){<br />
           _this.onFormSubmit(e);<br />
         });<br />
       }<br />
     };<br />
    <br />
     extend(Mimi.Signups.EmbedValidation.prototype, {<br />
       initialize: function() {<br />
         this.form         = document.getElementById('ema_signup_form');<br />
         this.submit       = document.getElementById('webform_submit_button');<br />
         this.callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());<br />
         this.validEmail   = /.+@.+\..+/<br />
       },<br />
    <br />
       onFormSubmit: function(e) {<br />
         e.preventDefault();<br />
    <br />
         this.validate();<br />
         if (this.isValid) {<br />
           this.submitForm();<br />
         } else {<br />
           this.revalidateOnChange();<br />
         }<br />
       },<br />
    <br />
       validate: function() {<br />
         this.isValid = true;<br />
         this.emailValidation();<br />
         this.fieldAndListValidation();<br />
         this.updateFormAfterValidation();<br />
       },<br />
    <br />
       emailValidation: function() {<br />
         var email = document.getElementById('signup_email');<br />
    <br />
         if (this.validEmail.test(email.value)) {<br />
           this.removeTextFieldError(email);<br />
         } else {<br />
           this.textFieldError(email);<br />
           this.isValid = false;<br />
         }<br />
       },<br />
    <br />
       fieldAndListValidation: function() {<br />
         var fields = this.form.querySelectorAll('.mimi_field.required');<br />
    <br />
         for (var i = 0; i &lt; fields.length; ++i) {<br />
           var field = fields[i],<br />
               type  = this.fieldType(field);<br />
           if (type === 'checkboxes' || type === 'radio_buttons' || type === 'age_check') {<br />
             this.checkboxAndRadioValidation(field);<br />
           } else {<br />
             this.textAndDropdownValidation(field, type);<br />
           }<br />
         }<br />
       },<br />
    <br />
       fieldType: function(field) {<br />
         var type = field.querySelectorAll('.field_type');<br />
    <br />
         if (type.length) {<br />
           return type[0].getAttribute('data-field-type');<br />
         } else if (field.className.indexOf('checkgroup') &gt;= 0) {<br />
           return 'checkboxes';<br />
         } else {<br />
           return 'text_field';<br />
         }<br />
       },<br />
    <br />
       checkboxAndRadioValidation: function(field) {<br />
         var inputs   = field.getElementsByTagName('input'),<br />
             selected = false;<br />
    <br />
         for (var i = 0; i &lt; inputs.length; ++i) {<br />
           var input = inputs[i];<br />
           if((input.type === 'checkbox' || input.type === 'radio') &amp;&amp; input.checked) {<br />
             selected = true;<br />
           }<br />
         }<br />
    <br />
         if (selected) {<br />
           field.className = field.className.replace(/ invalid/g, '');<br />
         } else {<br />
           if (field.className.indexOf('invalid') === -1) {<br />
             field.className += ' invalid';<br />
           }<br />
    <br />
           this.isValid = false;<br />
         }<br />
       },<br />
    <br />
       textAndDropdownValidation: function(field, type) {<br />
         var inputs = field.getElementsByTagName('input');<br />
    <br />
         for (var i = 0; i &lt; inputs.length; ++i) {<br />
           var input = inputs[i];<br />
           if (input.name.indexOf('signup') &gt;= 0) {<br />
             if (type === 'text_field') {<br />
               this.textValidation(input);<br />
             } else {<br />
               this.dropdownValidation(field, input);<br />
             }<br />
           }<br />
         }<br />
         this.htmlEmbedDropdownValidation(field);<br />
       },<br />
    <br />
       textValidation: function(input) {<br />
         if (input.id === 'signup_email') return;<br />
    <br />
         if (input.value) {<br />
           this.removeTextFieldError(input);<br />
         } else {<br />
           this.textFieldError(input);<br />
           this.isValid = false;<br />
         }<br />
       },<br />
    <br />
       dropdownValidation: function(field, input) {<br />
         if (input.value) {<br />
           field.className = field.className.replace(/ invalid/g, '');<br />
         } else {<br />
           if (field.className.indexOf('invalid') === -1) field.className += ' invalid';<br />
           this.onSelectCallback(input);<br />
           this.isValid = false;<br />
         }<br />
       },<br />
    <br />
       htmlEmbedDropdownValidation: function(field) {<br />
         var dropdowns = field.querySelectorAll('.mimi_html_dropdown');<br />
         var _this = this;<br />
    <br />
         for (var i = 0; i &lt; dropdowns.length; ++i) {<br />
           var dropdown = dropdowns[i];<br />
    <br />
           if (dropdown.value) {<br />
             field.className = field.className.replace(/ invalid/g, '');<br />
           } else {<br />
             if (field.className.indexOf('invalid') === -1) field.className += ' invalid';<br />
             this.isValid = false;<br />
             dropdown.onchange = (function(){ _this.validate(); });<br />
           }<br />
         }<br />
       },<br />
    <br />
       textFieldError: function(input) {<br />
         input.className   = 'required invalid';<br />
         input.placeholder = input.getAttribute('data-required-field');<br />
       },<br />
    <br />
       removeTextFieldError: function(input) {<br />
         input.className   = 'required';<br />
         input.placeholder = '';<br />
       },<br />
    <br />
       onSelectCallback: function(input) {<br />
         if (typeof Widget === 'undefined' || !Widget.BasicDropdown) return;<br />
    <br />
         var dropdownEl = input.parentNode,<br />
             instances  = Widget.BasicDropdown.instances,<br />
             _this = this;<br />
    <br />
         for (var i = 0; i &lt; instances.length; ++i) {<br />
           var instance = instances[i];<br />
           if (instance.wrapperEl === dropdownEl) {<br />
             instance.onSelect = function(){ _this.validate() };<br />
           }<br />
         }<br />
       },<br />
    <br />
       updateFormAfterValidation: function() {<br />
         this.form.className   = this.setFormClassName();<br />
         this.submit.value     = this.submitButtonText();<br />
         this.submit.disabled  = !this.isValid;<br />
         this.submit.className = this.isValid ? 'submit' : 'disabled';<br />
       },<br />
    <br />
       setFormClassName: function() {<br />
         var name = this.form.className;<br />
    <br />
         if (this.isValid) {<br />
           return name.replace(/\s?mimi_invalid/, '');<br />
         } else {<br />
           if (name.indexOf('mimi_invalid') === -1) {<br />
             return name += ' mimi_invalid';<br />
           } else {<br />
             return name;<br />
           }<br />
         }<br />
       },<br />
    <br />
       submitButtonText: function() {<br />
         var invalidFields = document.querySelectorAll('.invalid'),<br />
             text;<br />
    <br />
         if (this.isValid || !invalidFields) {<br />
           text = this.submit.getAttribute('data-default-text');<br />
         } else {<br />
           if (invalidFields.length || invalidFields[0].className.indexOf('checkgroup') === -1) {<br />
             text = this.submit.getAttribute('data-invalid-text');<br />
           } else {<br />
             text = this.submit.getAttribute('data-choose-list');<br />
           }<br />
         }<br />
         return text;<br />
       },<br />
    <br />
       submitForm: function() {<br />
         this.formSubmitting();<br />
    <br />
         var _this = this;<br />
         window[this.callbackName] = function(response) {<br />
           delete window[this.callbackName];<br />
           document.body.removeChild(script);<br />
           _this.onSubmitCallback(response);<br />
         };<br />
    <br />
         var script = document.createElement('script');<br />
         script.src = this.formUrl('json');<br />
         document.body.appendChild(script);<br />
       },<br />
    <br />
       formUrl: function(format) {<br />
         var action  = this.form.action;<br />
         if (format === 'json') action += '.json';<br />
         return action + '?callback=' + this.callbackName + '&amp;' + serialize(this.form);<br />
       },<br />
    <br />
       formSubmitting: function() {<br />
         this.form.className  += ' mimi_submitting';<br />
         this.submit.value     = this.submit.getAttribute('data-submitting-text');<br />
         this.submit.disabled  = true;<br />
         this.submit.className = 'disabled';<br />
       },<br />
    <br />
       onSubmitCallback: function(response) {<br />
         if (response.success) {<br />
           this.onSubmitSuccess(response.result);<br />
         } else {<br />
           top.location.href = this.formUrl('html');<br />
         }<br />
       },<br />
    <br />
       onSubmitSuccess: function(result) {<br />
         if (result.has_redirect) {<br />
           top.location.href = result.redirect;<br />
         } else if(result.single_opt_in || !result.confirmation_html) {<br />
           this.disableForm();<br />
           this.updateSubmitButtonText(this.submit.getAttribute('data-thanks'));<br />
         } else {<br />
           this.showConfirmationText(result.confirmation_html);<br />
         }<br />
       },<br />
    <br />
       showConfirmationText: function(html) {<br />
         var fields = this.form.querySelectorAll('.mimi_field');<br />
    <br />
         for (var i = 0; i &lt; fields.length; ++i) {<br />
           fields[i].style['display'] = 'none';<br />
         }<br />
    <br />
         (this.form.querySelectorAll('fieldset')[0] || this.form).innerHTML = html;<br />
       },<br />
    <br />
       disableForm: function() {<br />
         var elements = this.form.elements;<br />
         for (var i = 0; i &lt; elements.length; ++i) {<br />
           elements[i].disabled = true;<br />
         }<br />
       },<br />
    <br />
       updateSubmitButtonText: function(text) {<br />
         this.submit.value = text;<br />
       },<br />
    <br />
       revalidateOnChange: function() {<br />
         var fields = this.form.querySelectorAll(&quot;.mimi_field.required&quot;),<br />
             _this = this;<br />
    <br />
         var onTextFieldChange = function() {<br />
           if (this.getAttribute('name') === 'signup[email]') {<br />
             if (_this.validEmail.test(this.value)) _this.validate();<br />
           } else {<br />
             if (this.value.length === 1) _this.validate();<br />
           }<br />
         }<br />
    <br />
         for (var i = 0; i &lt; fields.length; ++i) {<br />
           var inputs = fields[i].getElementsByTagName('input');<br />
           for (var j = 0; j &lt; inputs.length; ++j) {<br />
             if (this.fieldType(fields[i]) === 'text_field') {<br />
               inputs[j].onkeyup = onTextFieldChange;<br />
               inputs[j].onchange = onTextFieldChange; <br />
             } else {<br />
               inputs[j].onchange = function(){ _this.validate() };<br />
             }<br />
           }<br />
         }<br />
       }<br />
     });<br />
    <br />
     if (document.addEventListener) {<br />
       document.addEventListener(&quot;DOMContentLoaded&quot;, function() {<br />
         new Mimi.Signups.EmbedValidation();<br />
       });<br />
     }<br />
     else {<br />
       window.attachEvent('onload', function() {<br />
         new Mimi.Signups.EmbedValidation();<br />
       });<br />
     }<br />
    })(this);<br />
    &lt;/script&gt;
  • Salty Game Music

    31 mai 2011, par Multimedia Mike — General

    Have you heard of Google’s Native Client (NaCl) project ? Probably not. Basically, it allows native code modules to run inside a browser (where ‘browser’ is defined pretty narrowly as ‘Google Chrome’ in this case). Programs are sandboxed so they aren’t a security menace (or so the whitepapers claim) but are allowed to access a variety of APIs including video and audio. The latter API is significant because sound tends to be forgotten in all the hullabaloo surrounding non-Flash web technologies. At any rate, enjoy NaCl while you can because I suspect it won’t be around much longer.

    After my recent work upgrading some old music synthesis programs to user more modern audio APIs, I got the idea to try porting the same code to run under NaCl in Chrome (first Nosefart, then Game Music Emu/GME). In this exercise, I met with very limited success. This blog post documents some of the pitfalls in my excursion.



    Infrastructure
    People who know me know that I’m rather partial — to put it gently — to straight-up C vs. C++. The NaCl SDK is heavily skewed towards C++. However, it does provide a Python tool called init_project.py which can create the skeleton of a project and can do so in C with the '-c' option :

    ./init_project.py -c -n saltynosefart
    

    This generates something that can be built using a simple ‘make’. When I added Nosefart’s C files, I learned that the project Makefile has places for project-necessary CFLAGS but does not honor them. The problem is that the generated Makefile includes a broader system Makefile that overrides the CFLAGS in the project Makefile. Going into the system Makefile and changing "CFLAGS =" -> "CFLAGS +=" solves this problem.

    Still, maybe I’m the first person to attempt building something in Native Client so I’m the first person to notice this ?

    Basic Playback
    At least the process to create an audio-enabled NaCl app is well-documented. Too bad it doesn’t seem to compile as advertised. According to my notes on the matter, I filled in PPP_InitializeModule() with the appropriate boilerplate as outlined in the docs but got a linker error concerning get_browser_interface().

    Plan B : C++
    Obviously, the straight C stuff is very much a second-class citizen in this NaCl setup. Fortunately, there is already that fully functional tone generator example program in the limited samples suite. Plan B is to copy that project and edit it until it accepts Nosefart/GME audio instead of a sine wave.

    The build system assumes all C++ files should have .cc extensions. I have to make some fixes so that it will accept .cpp files (either that, or rename all .cpp to .cc, but that’s not very clean).

    Making Noise
    You’ll be happy to know that I did successfully swap out the tone generator for either Nosefart or GME. Nosefart has a slightly fickle API that requires revving the emulator frame by frame and generating a certain number of audio samples. GME’s API is much easier to work with in this situation — just tell it how many samples it needs to generate and give it a pointer to a buffer. I played NES and SNES music play through this ad-hoc browser plugin, and I’m confident all the other supported formats would have worked if I went through the bother of converting the music data files into C headers to be included in the NaCl executable binaries (dynamically loading data via the network promised to be a far more challenging prospect reserved for phase 3 of the project).

    Portable ?
    I wouldn’t say so. I developed it on Linux and things ran fine there. I tried to run the same binaries on the Windows version of Chrome to no avail. It looks like it wasn’t even loading the .nexe files (NaCl executables).

    Thinking About The (Lack Of A) Future
    As I was working on this project, I noticed that the online NaCl documentation materialized explicit banners warning that my NaCl binaries compiled for Chrome 11 won’t work for Chrome 12 and that I need to code to the newly-released 0.3 SDK version. Not a fuzzy feeling. I also don’t feel good that I’m working from examples using bleeding edge APIs that feature deprecation as part of their naming convention, e.g., pp::deprecated::ScriptableObject().

    Ever-changing API + minimal API documentation + API that only works in one browser brand + requiring end user to explicitly enable feature = … well, that’s why I didn’t bother to release any showcase pertaining to this little experiment. Would have been neat, but I strongly suspect that this is yet another one of those APIs that Google decides to deprecate soon.

    See Also :

  • I am trying to use the RTSPPlay, project of mooncatventures. But it shows me error like this

    7 octobre 2013, par kamlesh shingarakhiya

    I am trying to use the RTSPPlay, project of mooncatventures. But it shows me error like this.

    Ld /Users/admin/Library/Developer/Xcode/DerivedData/Intercom-bpixnryueeelexfnzxtmgchcfgzq/Build/Products/Debug-iphonesimulator/Intercom.app/Intercom normal i386
       cd /Volumes/IPHONE/Intercom
       setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
       setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
       /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk -L/Users/admin/Library/Developer/Xcode/DerivedData/Intercom-bpixnryueeelexfnzxtmgchcfgzq/Build/Products/Debug-iphonesimulator -F/Users/admin/Library/Developer/Xcode/DerivedData/Intercom-bpixnryueeelexfnzxtmgchcfgzq/Build/Products/Debug-iphonesimulator -F/Users/admin/Downloads/RTSPPlay-master -filelist /Users/admin/Library/Developer/Xcode/DerivedData/Intercom-bpixnryueeelexfnzxtmgchcfgzq/Build/Intermediates/Intercom.build/Debug-iphonesimulator/Intercom.build/Objects-normal/i386/Intercom.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -Xlinker -no_implicit_dylibs -fobjc-link-runtime -mios-simulator-version-min=6.1 -framework FFmpegDecoder -framework FFPlayer -framework SDL -framework OpenGLES -framework MediaPlayer -framework CoreMedia -framework CoreVideo -framework MobileCoreServices -framework AVFoundation -framework CFNetwork -lbz2 -lxml2 -lz.1.1.3 -lz -framework QuartzCore -framework Security -framework SystemConfiguration -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/admin/Library/Developer/Xcode/DerivedData/Intercom-bpixnryueeelexfnzxtmgchcfgzq/Build/Products/Debug-iphonesimulator/Intercom.app/Intercom



    Undefined symbols for architecture i386:
     "_SDL_AddTimer", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_CloseAudio", referenced from:
         _stream_component_close in FFPlayer(main.o)
     "_SDL_CondSignal", referenced from:
         _SDL_main in FFPlayer(main.o)
         _stream_component_close in FFPlayer(main.o)
         _packet_queue_abort in FFPlayer(main.o)
         _packet_queue_put in FFPlayer(main.o)
     "_SDL_CondWait", referenced from:
         _video_thread in FFPlayer(main.o)
         _subtitle_thread in FFPlayer(main.o)
         _packet_queue_get in FFPlayer(main.o)
     "_SDL_CreateCond", referenced from:
         _SDL_main in FFPlayer(main.o)
         _packet_queue_init in FFPlayer(main.o)
     "_SDL_CreateMutex", referenced from:
         _SDL_main in FFPlayer(main.o)
         _packet_queue_init in FFPlayer(main.o)
     "_SDL_CreateRGBSurface", referenced from:
         _SDL_main in FFPlayer(main.o)
         _video_open in FFPlayer(main.o)
     "_SDL_CreateRenderer", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_CreateThread", referenced from:
         _SDL_main in FFPlayer(main.o)
         _stream_component_open in FFPlayer(main.o)
     "_SDL_CreateWindow", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_Delay", referenced from:
         _video_thread in FFPlayer(main.o)
         _subtitle_thread in FFPlayer(main.o)
         _decode_thread in FFPlayer(main.o)
     "_SDL_DestroyCond", referenced from:
         _do_exit in FFPlayer(main.o)
         _stream_component_close in FFPlayer(main.o)
     "_SDL_DestroyMutex", referenced from:
         _do_exit in FFPlayer(main.o)
         _stream_component_close in FFPlayer(main.o)
     "_SDL_DestroyTexture", referenced from:
         _video_display in FFPlayer(main.o)
     "_SDL_EventState", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_FillRect", referenced from:
         _video_display in FFPlayer(main.o)
     "_SDL_FreeSurface", referenced from:
         _SDL_main in FFPlayer(main.o)
         _do_exit in FFPlayer(main.o)
     "_SDL_GL_SetAttribute", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_Init", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_LockSurface", referenced from:
         _video_thread in FFPlayer(main.o)
     "_SDL_MapRGB", referenced from:
         _video_display in FFPlayer(main.o)
     "_SDL_OpenAudio", referenced from:
         _stream_component_open in FFPlayer(main.o)
     "_SDL_PauseAudio", referenced from:
         _stream_component_open in FFPlayer(main.o)
     "_SDL_PixelFormatEnumToMasks", referenced from:
         _SDL_main in FFPlayer(main.o)
         _video_open in FFPlayer(main.o)
     "_SDL_PollEvent", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_PushEvent", referenced from:
         _sdl_refresh_timer_cb in FFPlayer(main.o)
         _video_thread in FFPlayer(main.o)
         _decode_thread in FFPlayer(main.o)
     "_SDL_RenderPresent", referenced from:
         _video_display in FFPlayer(main.o)
     "_SDL_SendQuit", referenced from:
         -[SDLUIKitDelegate quitSdl] in SDL_uikitappdelegate.o
         -[SDLUIKitDelegate applicationWillTerminate:] in SDL_uikitappdelegate.o
         -[SDLUIKitDelegate applicationDidEnterBackground:] in SDL_uikitappdelegate.o
     "_SDL_UnlockSurface", referenced from:
         _video_thread in FFPlayer(main.o)
     "_SDL_WaitEvent", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_SDL_WaitThread", referenced from:
         _do_exit in FFPlayer(main.o)
         _stream_component_close in FFPlayer(main.o)
     "_SDL_mutexP", referenced from:
         _SDL_main in FFPlayer(main.o)
         _stream_component_close in FFPlayer(main.o)
         _video_thread in FFPlayer(main.o)
         _subtitle_thread in FFPlayer(main.o)
         _packet_queue_get in FFPlayer(main.o)
         _packet_queue_abort in FFPlayer(main.o)
         _packet_queue_flush in FFPlayer(main.o)
         ...
     "_SDL_mutexV", referenced from:
         _SDL_main in FFPlayer(main.o)
         _stream_component_close in FFPlayer(main.o)
         _video_thread in FFPlayer(main.o)
         _subtitle_thread in FFPlayer(main.o)
         _packet_queue_get in FFPlayer(main.o)
         _packet_queue_abort in FFPlayer(main.o)
         _packet_queue_flush in FFPlayer(main.o)
         ...
     "_av_audio_convert", referenced from:
         _sdl_audio_callback in FFPlayer(main.o)
     "_av_audio_convert_alloc", referenced from:
         _sdl_audio_callback in FFPlayer(main.o)
     "_av_audio_convert_free", referenced from:
         _stream_component_close in FFPlayer(main.o)
         _sdl_audio_callback in FFPlayer(main.o)
     "_av_bitstream_filter_next", referenced from:
         _show_formats in cmdutils.o
     "_av_close_input_file", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_codec_next", referenced from:
         _show_formats in cmdutils.o
     "_av_dup_packet", referenced from:
         _packet_queue_put in FFPlayer(main.o)
     "_av_find_input_format", referenced from:
         _opt_format in FFPlayer(main.o)
     "_av_find_opt", referenced from:
         _opt_default in cmdutils.o
     "_av_find_stream_info", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_free", referenced from:
         _SDL_main in FFPlayer(main.o)
         _free_subpicture in FFPlayer(main.o)
         _video_thread in FFPlayer(main.o)
         _packet_queue_get in FFPlayer(main.o)
     "_av_free_packet", referenced from:
         _sdl_audio_callback in FFPlayer(main.o)
         _video_thread in FFPlayer(main.o)
         _subtitle_thread in FFPlayer(main.o)
         _packet_queue_flush in FFPlayer(main.o)
         _decode_thread in FFPlayer(main.o)
     "_av_freep", referenced from:
         _free_subpicture in FFPlayer(main.o)
         _packet_queue_flush in FFPlayer(main.o)
     "_av_get_bits_per_sample_format", referenced from:
         _sdl_audio_callback in FFPlayer(main.o)
     "_av_get_int", referenced from:
         _video_thread in FFPlayer(main.o)
     "_av_get_string", referenced from:
         _set_context_opts in cmdutils.o
     "_av_gettime", referenced from:
         _SDL_main in FFPlayer(main.o)
         _get_master_clock in FFPlayer(main.o)
         _video_display in FFPlayer(main.o)
         _get_video_clock in FFPlayer(main.o)
         _stream_component_open in FFPlayer(main.o)
         _sdl_audio_callback in FFPlayer(main.o)
         _stream_pause in FFPlayer(main.o)
         ...
     "_av_iformat_next", referenced from:
         _show_formats in cmdutils.o
     "_av_init_packet", referenced from:
         _SDL_main in FFPlayer(main.o)
         _decode_thread in FFPlayer(main.o)
     "_av_log", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_malloc", referenced from:
         _packet_queue_put in FFPlayer(main.o)
     "_av_mallocz", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_av_metadata_get", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_oformat_next", referenced from:
         _show_formats in cmdutils.o
     "_av_open_input_file", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_protocol_next", referenced from:
         _show_formats in cmdutils.o
     "_av_read_frame", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_read_pause", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_read_play", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_av_realloc", referenced from:
         _opt_default in cmdutils.o
     "_av_register_all", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_av_set_string3", referenced from:
         _opt_default in cmdutils.o
         _set_context_opts in cmdutils.o
     "_av_strdup", referenced from:
         _parse_options in cmdutils.o
     "_av_strlcat", referenced from:
         _show_help_options in cmdutils.o
     "_av_strlcpy", referenced from:
         _show_help_options in cmdutils.o
         _SDL_main in FFPlayer(main.o)
     "_avcodec_alloc_context2", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_avcodec_alloc_frame", referenced from:
         _video_thread in FFPlayer(main.o)
     "_avcodec_close", referenced from:
         _stream_component_close in FFPlayer(main.o)
     "_avcodec_decode_audio3", referenced from:
         _sdl_audio_callback in FFPlayer(main.o)
     "_avcodec_decode_subtitle2", referenced from:
         _subtitle_thread in FFPlayer(main.o)
     "_avcodec_decode_video2", referenced from:
         _video_thread in FFPlayer(main.o)
     "_avcodec_find_decoder", referenced from:
         _stream_component_open in FFPlayer(main.o)
     "_avcodec_flush_buffers", referenced from:
         _sdl_audio_callback in FFPlayer(main.o)
         _video_thread in FFPlayer(main.o)
         _subtitle_thread in FFPlayer(main.o)
     "_avcodec_open", referenced from:
         _stream_component_open in FFPlayer(main.o)
     "_avcodec_register_all", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_avcodec_thread_init", referenced from:
         _stream_component_open in FFPlayer(main.o)
     "_avcodec_version", referenced from:
         _print_all_lib_versions in cmdutils.o
     "_avdevice_register_all", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_avdevice_version", referenced from:
         _print_all_lib_versions in cmdutils.o
     "_avfilter_version", referenced from:
         _print_all_lib_versions in cmdutils.o
     "_avformat_alloc_context", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_avformat_seek_file", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_avformat_version", referenced from:
         _print_all_lib_versions in cmdutils.o
     "_avpicture_alloc", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_avutil_version", referenced from:
         _print_all_lib_versions in cmdutils.o
     "_dump_format", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_parse_date", referenced from:
         _parse_time_or_die in cmdutils.o
     "_sws_getCachedContext", referenced from:
         _video_thread in FFPlayer(main.o)
     "_sws_getContext", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_sws_scale", referenced from:
         _video_thread in FFPlayer(main.o)
     "_swscale_version", referenced from:
         _print_all_lib_versions in cmdutils.o
     "_url_feof", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_url_ferror", referenced from:
         _decode_thread in FFPlayer(main.o)
     "_url_ftell", referenced from:
         _SDL_main in FFPlayer(main.o)
     "_url_set_interrupt_cb", referenced from:
         _decode_thread in FFPlayer(main.o)
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    Can someone plz help me, thanx guys. I have checked that SDL.Framework and I dont see any problem in it. Does I have to add some library in my project to run this project or in mac.