Recherche avancée

Médias (2)

Mot : - Tags -/plugins

Autres articles (49)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • Selection of projects using MediaSPIP

    2 mai 2011, par

    The examples below are representative elements of MediaSPIP specific uses for specific projects.
    MediaSPIP farm @ Infini
    The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...)

Sur d’autres sites (7979)

  • Python code mutes whole video instead of sliding a song. What shall I do ?

    16 juillet 2023, par Armed Nun

    I am trying to separate a song into 4 parts and slide the parts in random parts of a video. The problem with my code is that the final output video is muted. I want to play parts of the song at random intervals and while the song is playing the original video shall be muted. Thanks to everyone who helps

    


    import random
from moviepy.editor import *

def split_audio_into_parts(mp3_path, num_parts):
    audio = AudioFileClip(mp3_path)
    duration = audio.duration
    part_duration = duration / num_parts

    parts = []
    for i in range(num_parts):
        start_time = i * part_duration
        end_time = start_time + part_duration if i < num_parts - 1 else duration
        part = audio.subclip(start_time, end_time)
        parts.append(part)

    return parts

def split_video_into_segments(video_path, num_segments):
    video = VideoFileClip(video_path)
    duration = video.duration
    segment_duration = duration / num_segments

    segments = []
    for i in range(num_segments):
        start_time = i * segment_duration
        end_time = start_time + segment_duration if i < num_segments - 1 else duration
        segment = video.subclip(start_time, end_time)
        segments.append(segment)

    return segments

def insert_audio_into_segments(segments, audio_parts):
    modified_segments = []
    for segment, audio_part in zip(segments, audio_parts):
        audio_part = audio_part.volumex(0)  # Mute the audio part
        modified_segment = segment.set_audio(audio_part)
        modified_segments.append(modified_segment)

    return modified_segments

def combine_segments(segments):
    final_video = concatenate_videoclips(segments)
    return final_video

# Example usage
mp3_file_path = "C:/Users/Kris/PycharmProjects/videoeditingscript124234/DENKATA - Podvodnica Demo (1).mp3"
video_file_path = "C:/Users/Kris/PycharmProjects/videoeditingscript124234/family.guy.s21e13.1080p.web.h264-cakes[eztv.re].mkv"
num_parts = 4

audio_parts = split_audio_into_parts(mp3_file_path, num_parts)
segments = split_video_into_segments(video_file_path, num_parts)
segments = insert_audio_into_segments(segments, audio_parts)
final_video = combine_segments(segments)
final_video.write_videofile("output.mp4", codec="libx264", audio_codec="aac")


    


    I tried entering most stuff into chatGPT and asking questions around forums but without sucess, so lets hope I can see my solution here

    


  • How to decode and display real-time H264 stream using ffmpeg in Python ?

    25 mars 2022, par yiiiiiiiran

    I would like to port the live stream to ffmpeg and display it in real time using Python.

    


    Anyone knows how to port the stream to PIPE ? And in the mean time to display it after decoding ?

    


    I managed to get real-time stream from my Raspberry Pi3 to Windows PC, using RS232 connection with Baud Rate 2M.

    


    The format of the stream is in H264. The data package I get for each frame is in .
In order for the program to know when does each package ends, I've add

    


    bytes([0xcc,0xdd,0xee,0xff])


    


    to the end of package. So that my serial port will read for a package until it sees those bytes.

    


    Lets assume the stream WIDTH, HEIGHT, NUM_FRAMES, FPS = 320, 240, 90, 30

    


    I have the command for decode the h264 stream :

    


    cmd = ["C:/XXXXXX/ffmpeg.exe",
    "-probesize", "32",
    "-flags", "low_delay",
    "-f", "h264",
    "-i", "pipe:",
    "-f", "rawvideo", "-pix_fmt", "rgb24", "-s", "384x216",
    "pipe:"]

decode_process = sp.Popen(cmd, stdin=sp.PIPE, stdout=sp.PIPE)


    


    The stream package I got is

    


    while datetime.now() &lt; end_time:&#xA;    pkg = ser.read_until(expected=bytes([0xcc,0xdd,0xee,0xff])) #output <class>&#xA;    frame_len = len(pkg)-4&#xA;    frame_inBytes = pkg[0:frame_len]&#xA;    decode_process.stdin.write(frame_inBytes)&#xA;</class>

    &#xA;

    I want to write the real time stream to PIPE however it shows error :

    &#xA;

    [h264 @ 0000017322a3e980] missing picture in access unit with size 48&#xA;[h264 @ 0000017322a3e980] no frame!&#xA;[h264 @ 0000017322a2d240] Stream #0: not enough frames to estimate rate; consider increasing probesize&#xA;[h264 @ 0000017322a2d240] Could not find codec parameters for stream 0 (Video: h264, none): unspecified size&#xA;Consider increasing the value for the &#x27;analyzeduration&#x27; (0) and &#x27;probesize&#x27; (32) options        &#xA;Input #0, h264, from &#x27;pipe:&#x27;:&#xA;  Duration: N/A, bitrate: N/A&#xA;  Stream #0:0: Video: h264, none, 25 tbr, 1200k tbn&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (h264 (native) -> rawvideo (native))&#xA;[h264 @ 0000017322a3f180] no frame!&#xA;Error while decoding stream #0:0: Invalid data found when processing input&#xA;Cannot determine format of input stream 0:0 after EOF&#xA;Error marking filters as finished&#xA;Conversion failed!&#xA;

    &#xA;

  • The complete guide on tracking your websites and web apps into multiple Piwiks and how to do it easily & efficiently

    23 février 2017, par InnoCraft — Community, Development

    Getting the tracking of your website and apps right is crucial to your success as you need to ensure the measured data is meaningful and correct. That’s why we, at InnoCraft, help our clients setting up their web tracking and digital measurement strategy. Some challenges include tracking your analytics data into multiple Piwik services as well as the tracking of single-page websites and web applications (covered in a previous article). In this blog post, we explain how to track your data into multiple Piwik websites correctly.

    Embedding the tracking code

    First of all you need to embed your JavaScript tracking code into your website or app as usual. If you haven’t done this yet : Log in to your Piwik, click on “Administration” in the top right and go to “Tracking Code”. There you have various options to adjust your tracking code to your needs.

    Tracking the same data into different websites

    Let’s assume you have set up the regular JavaScript tracking code and you want to track the same data into a second Piwik website. This second Piwik website can be either on the same Piwik installation or on a different Piwik. To do this, add the following line to your tracking code :

    _paq.push(['addTracker', 'https://$yourPiwikDomain/piwik.php', idSite]);

    It should look like this :

    var u = '//$yourPiwikDomain';
    _paq.push(['addTracker', u + '/piwik.php', var idSite = 2]); // adds an additional tracker
    _paq.push(['setSiteId', '1']); // configures your regular Piwik tracker
    _paq.push(['setTrackerUrl', u + 'piwik.php']);

    This will track the same data into website 1 and website 2 of your Piwik installation. You can also change the domain in addTracker to point it to a different Piwik installation :

    _paq.push(['addTracker', '//$differentPiwikDomain/piwik.php', var idSite = 2]);

    All Piwik tracker methods that you call afterwards will be applied to all trackers. Say you call _paq.push(['disableCookies']); _paq.push(['trackPageView']);, then both methods will be called on all tracker instances assuring they will behave the same and will track the same data into both Piwik websites.

    Tracking different data into different websites

    If you want to track only certain data into one website, and different data into an additional website, you need to configure the trackers differently. For example, you want to enable link tracking only for one tracker, but not for the other. The problem is that calling _paq.push(['enableLinkTracking']); enables link tracking on all of your trackers. To workaround this limitation, you can configure your trackers differently like this :

    window.piwikAsyncInit = function () {
       Piwik.on('TrackerSetup', function (tracker) {
         if (tracker.getSiteId() == 2
            || tracker.getTrackerUrl() === '//$yourPiwikDomain/piwik.php') {
             tracker.enableLinkTracking();
            }
       });
    };

    Now it enables link tracking only for the tracker that is configured for a certain website ID or Piwik domain.

    Accessing a previously generated tracker instance

    When you configure a tracker via _paq.push, you create a so called “Async tracker” because Piwik will be loaded asynchronously and create the tracker instance as soon as it is loaded. If you need to get the instance of such a tracker, you can use the method Piwik.getAsyncTracker(trackerUrl, idSite). This can be useful if you have a single-page website and want to track different data into different websites :

    window.addEventListener('hashchange', function() {
       if ('undefined' === typeof Piwik) {
           // Piwik might not be loaded yet
           return;
       }
       var tracker1 = Piwik.getAsyncTracker('//$yourPiwikDomain/piwik.php', var idSite = 1);
       var tracker2 = Piwik.getAsyncTracker('//$yourPiwikDomain/piwik.php', var idSite = 2);
       tracker1.setCurrentUrl('/' + window.location.hash.substr(1));
       tracker2.setCurrentUrl('/mywebsite/' + window.location.hash.substr(1));
    });

    Tracking different data into multiple Piwik installations without using “_paq”

    Some users prefer to not use _paq.push and instead directly create tracker instances themselves using the method Piwik.getTracker(trackerUrl, idSite) like this :

    window.piwikAsyncInit = function () {
       var tracker1 = Piwik.getTracker('//$yourPiwikdomain/piwik.php', var idSite = 1);
       tracker1.disableCookies();
       var tracker2 = Piwik.getTracker('//$yourPiwikdomain/piwik.php', var idSite = 2);
       tracker2.enableLinkTracking();

       tracker1.trackPageView();
       tracker2.trackPageView();
    };

    We usually don’t recommend creating trackers manually as it is more complicated and you need to make sure to configure trackers in the right order. For example to prevent the setting of any cookies, it is recommended to call disableCookies before calling any other methods. If you want to create your trackers manually and you use any of the following methods, make sure to call them in this order :

    disableCookies(), setAPIUrl(), enableCrossDomainLinking(), setCookiePath(), setCookieDomain(), setDomains(), setUserId(), enableLinkTracking()

    Roll-Up Reporting – the easy and efficient way

    Often users track data into multiple websites because they need aggregated data over all their websites. They want to see all statistics for a single website, but also which pages were viewed across all their websites, or how much traffic they got from a specific website or search engine across all websites. This means they add a second tracker to all their websites and track data not only into the regular Piwik website, but also into one additional website that gives them statistics over all websites. This has several disadvantages :

    • Complexity in getting the tracking code right and the time needed to integrate and maintain it
    • Slower website performance because everything needs to be tracked into several websites. This can decrease your conversions and sales
    • Slower Piwik performance because it has to handle twice as much traffic. This means tracking becomes slower, generating the report becomes slower, and the database gets twice as big

    Luckily, there is a better solution called Roll-Up Reporting. With Roll-Up Reporting, you can get aggregated data over all websites and / or for a group of websites without any of these disadvantages. It lets you create as many Roll-Ups as you wish and you can choose which websites’ data should be aggregated together into a new website.

    We had customers who were able to remove one Piwik tracker because of this feature which resulted in less server costs, a faster website, and a faster Piwik. On top of all these advantages, it also lets you view the Visitor Log, Real-time Map, and other widgets and reports across several websites.

    Questions ?

    If you got any questions, please let us know and get in touch with us. You can find more information about the Piwik JavaScript tracker on the Piwik Developer Zone. There is a section dedicated to Multiple Piwik Trackers.