Recherche avancée

Médias (0)

Mot : - Tags -/objet éditorial

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

Autres articles (66)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

  • D’autres logiciels intéressants

    12 avril 2011, par

    On ne revendique pas d’être les seuls à faire ce que l’on fait ... et on ne revendique surtout pas d’être les meilleurs non plus ... Ce que l’on fait, on essaie juste de le faire bien, et de mieux en mieux...
    La liste suivante correspond à des logiciels qui tendent peu ou prou à faire comme MediaSPIP ou que MediaSPIP tente peu ou prou à faire pareil, peu importe ...
    On ne les connais pas, on ne les a pas essayé, mais vous pouvez peut être y jeter un coup d’oeil.
    Videopress
    Site Internet : (...)

  • Possibilité de déploiement en ferme

    12 avril 2011, par

    MediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
    Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...)

Sur d’autres sites (7650)

  • Marketing Cohort Analysis : How To Do It (With Examples)

    12 janvier 2024, par Erin

    The better you understand your customers, the more effective your marketing will become. 

    The good news is you don’t need to run expensive focus groups to learn much about how your customers behave. Instead, you can run a marketing cohort analysis using data from your website analytics.

    A marketing cohort groups your users by certain traits and allows you to drill down to discover why they take the actions on your website they do. 

    In this article, we’ll explain what a marketing cohort analysis is, show you what you can achieve with this analytical technique and provide a step-by-step guide to pulling it off. 

    What is cohort analysis in marketing ?

    A marketing cohort analysis is a form of behavioural analytics where you analyse the behavioural patterns of users who share a similar trait to better understand their actions. 

    These shared traits could be anything like the date they signed up for your product, users who bought your service through a paid ad or email subscribers from the United Kingdom.

    It’s a fantastic way to improve your marketing efforts, allowing you to better understand complex user behaviours, personalise campaigns accordingly and improve your ROI. 

    You can run marketing analysis using an analytics platform like Google Analytics or Matomo. With these platforms, you can measure how cohorts perform using traffic, engagement and conversion metrics.

    An example of marketing cohort chart

    There are two types of cohort analysis : acquisition-based cohort analysis and behavioural-based cohort analysis.

    Acquisition-based cohort analysis

    An acquisition-based cohort divides users by the date they purchased your product or service and tracks their behaviour afterward. 

    For example, one cohort could be all the users who signed up for your product in November. Another could be the users who signed up for your product in October. 

    You could then run a cohort analysis to see how the behaviour of the two cohorts differed. 

    Did the November cohort show higher engagement rates, increased frequency of visits post-acquisition or quicker conversions compared to the October cohort ? Analysing these cohorts can help with refining marketing strategies, optimising user experiences and improving retention and conversion rates.

    As you can see from the example, acquisition-based cohorts are a great way to track the initial acquisition and how user behaviour evolves post-acquisition.

    Behavioural-based cohort analysis

    A behavioural-based cohort divides users by their actions on your site. That could be their bounce rate, the number of actions they took on your site, their average time on site and more.

    View of returning visitors cohort report in Matomo dashboard

    Behavioural cohort analysis gives you a much deeper understanding of user behaviour and how they interact with your website.

    What can you achieve with a marketing cohort analysis ?

    A marketing cohort analysis is a valuable tool that can help marketers and product teams achieve the following goals :

    Understand which customers churn and why

    Acquisition and behavioural cohort analyses help marketing teams understand when and why customers leave. This is one of the most common goals of a marketing cohort analysis. 

    Learn which customers are most valuable

    Want to find out which channels create the most valuable customers or what actions customers take that increase their loyalty ? You can use a cohort analysis to do just that. 

    For example, you may find out you retain users who signed up via direct traffic better than those that signed up from an ad campaign. 

    Discover how to improve your product

    You can even use cohort analysis to identify opportunities to improve your website and track the impact of your changes. For example, you could see how visitor behaviour changes after a website refresh or whether visitors who take a certain action make more purchases. 

    Find out how to improve your marketing campaign

    A marketing cohort analysis makes it easy to find out which campaigns generate the best and most profitable customers. For example, you can run a cohort analysis to determine which channel (PPC ads, organic search, social media, etc.) generates customers with the lowest churn rate. 

    If a certain ad campaign generates the low-churn customers, you can allocate a budget accordingly. Alternatively, if customers from another ad campaign churn quickly, you can look into why that may be the case and optimise your campaigns to improve them. 

    Measure the impact of changes

    You can use a behavioural cohort analysis to understand what impact changes to your website or product have on active users. 

    If you introduced a pricing page to your website, for instance, you could analyse the behaviour of visitors who interacted with that page compared to those who didn’t, using behavioural cohort analysis to gauge the impact of these website changes on engagemen or conversions.

    The problem with cohort analysis in Google Analytics

    Google Analytics is often the first platform marketers turn to when they want to run a cohort analysis. While it’s a free solution, it’s not the most accurate or easy to use and users often encounter various issues

    For starters, Google Analytics can’t process user visitor data if they reject cookies. This can lead to an inaccurate view of traffic and compromise the reliability of your insights.

    In addition, GA is also known for sampling data, meaning it provides a subset rather than the complete dataset. Without the complete view of your website’s performance, you might make the wrong decisions, leading to less effective campaigns, missed opportunities and difficulties in reaching marketing goals.

    How to analyse cohorts with Matomo

    Luckily, there is an alternative to Google Analytics. 

    As the leading open-source web analytics solution, Matomo offers a robust option for cohort analysis. With its 100% accurate data, thanks to the absence of sampling, and its privacy-friendly tracking, users can rely on the data without resorting to guesswork. It is a premium feature included with our Matomo Cloud or available to purchase on the Matomo Marketplace for Matomo On-Premise users.

    Below, we’ll show how you can run a marketing cohort analysis using Matomo.

    Set a goal

    Setting a goal is the first step in running a cohort analysis with any platform. Define what you want to achieve from your analysis and choose the metrics you want to measure. 

    For example, you may want to improve your customer retention rate over the first 90 days. 

    Define cohorts

    Next, create cohorts by defining segmentation criteria. As we’ve discussed above, this could be acquisition-based or behavioural. 

    Matomo makes it easy to define cohorts and create charts. 

    In the sidebar menu, click Visitors > Cohorts. You’ll immediately see Matomo’s standard cohort report (something like the one below).

    Marketing cohort by bounce rate of visitors in Matomo dashboard

    In the example above, we’ve created cohorts by bounce rate. 

    You can view cohorts by weekly, monthly or yearly periods using the date selector and change the metric using the dropdown. Other metrics you can analyse cohorts by include :

    • Unique visitors
    • Return visitors
    • Conversion rates
    • Revenue
    • Actions per visit

    Change the data selection to create your desired cohort, and Matomo will automatically generate the report. 

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    Analyse your cohort chart

    Cohort charts can be intimidating initially, but they are pretty easy to understand and packed with insights. 

    Here’s an example of an acquisition-based cohort chart from Matomo looking at the percentage of returning visitors :

    An Image of a marketing cohort chart in Matomo Analytics

    Cohorts run vertically. The oldest cohort (visitors between February 13 – 19) is at the top of the chart, with the newest cohort (April 17 – 23) at the bottom. 

    The period of time runs horizontally — daily in this case. The cells show the corresponding value for the metric we’re plotting (the percentage of returning visitors). 

    For example, 98.69% of visitors who landed on your site between February 13 – 19, returned two weeks later. 

    Usually, running one cohort analysis isn’t enough to identify a problem or find a solution. That’s why comparing several cohort analyses or digging deeper using segmentation is important.

    Segment your cohort chart

    Matomo lets you dig deeper by segmenting each cohort to examine their behaviour’s specifics. You can do this from the cohort report by clicking the segmented visitor log icon in the relevant row.

    Segmented visit log in Matomo cohort report
    Segmented cohort visitor log in Matomo

    Segmenting cohorts lets you understand why users behave the way they do. For example, suppose you find that users you purchased on Black Friday don’t return to your site often. In that case, you may want to rethink your offers for next year to target an audience with potentially better customer lifetime value. 

    Start using Matomo for marketing cohort analysis

    A marketing cohort analysis can teach you a lot about your customers and the health of your business. But you need the right tools to succeed. 

    Matomo provides an effective and privacy-first way to run your analysis. You can create custom customer segments based on almost anything, from demographics and geography to referral sources and user behaviour. 

    Our custom cohort analysis reports and colour-coded visualisations make it easy to analyse cohorts and spot patterns. Best of all, the data is 100% accurate. Unlike other web analytics solution or cohort analysis tools, we don’t sample data. 

    Find out how you can use Matomo to run marketing cohort analysis by trialling us free for 21 days. No credit card required.

  • A Complete Guide to Metrics in Google Analytics

    11 janvier 2024, par Erin

    There’s no denying that Google Analytics is the most popular web analytics solution today. Many marketers choose it to understand user behaviour. But when it offers so many different types of metrics, it can be overwhelming to choose which ones to focus on. In this article, we’ll dive into how metrics work in Google Analytics 4 and how to decide which metrics may be most useful to you, depending on your analytics needs.

    However, there are alternative web analytics solutions that can provide more accurate data and supplement GA’s existing features. Keep reading to learn how to overcome Google Analytics limitations so you can get the more out of your web analytics.

    What is a metric in Google Analytics ?

    In Google Analytics, a metric is a quantitative measurement or numerical data that provides insights into specific aspects of user behaviour. Metrics represent the counts or sums of user interactions, events or other data points. You can use GA metrics to better understand how people engage with a website or mobile app. 

    Unlike the previous Universal Analytics (the previous version of GA), GA4 is event-centric and has automated and simplified the event tracking process. Compared to Universal Analytics, GA4 is more user-centric and lets you hone in on individual user journeys. Some examples of common key metrics in GA4 are : 

    • Sessions : A group of user interactions on your website that occur within a specific time period. A session concludes when there is no user activity for 30 minutes.
    • Total Users : The cumulative count of individuals who accessed your site within a specified date range.
    • Engagement Rate : The percentage of visits to your website or app that included engagement (e.g., one more pageview, one or more conversion, etc.), determined by dividing engaged sessions by sessions.
    Main overview dashboard in GA4 displaying metrics

    Metrics are invaluable when it comes to website and conversion optimisation. Whether you’re on the marketing team, creating content or designing web pages, understanding how your users interact with your digital platforms is essential.

    GA4 metrics vs. dimensions

    GA4 uses metrics to discuss quantitative measurements and dimensions as qualitative descriptors that provide additional context to metrics. To make things crystal clear, here are some examples of how metrics and dimensions are used together : 

    • “Session duration” = metric, “device type” = dimension 
      • In this situation, the dimension can segment the data by device type so you can optimise the user experience for different devices.
    • “Bounce rate” = metric, “traffic source/medium” = dimension 
      • Here, the dimension helps you segment by traffic source to understand how different acquisition channels are performing. 
    • “Conversion rate” = metric, “Landing page” = dimension 
      • When the conversion rate data is segmented by landing page, you can better see the most effective landing pages. 

    You can get into the nitty gritty of granular analysis by combining metrics and dimensions to better understand specific user interactions.

    How do Google Analytics metrics work ?

    Before diving into the most important metrics you should track, let’s review how metrics in GA4 work. 

    GA4 overview dashboard of engagement metrics
    1. Tracking code implementation

    The process begins with implementing Google Analytics 4 tracking code into the HTML of web pages. This tracking code is JavaScript added to each website page — it collects data related to user interactions, events and other important tidbits.

    1. Data collection

    As users interact with the website or app, the Google Analytics 4 tracking code captures various data points (i.e., page views, clicks, form submissions, custom events, etc.). This raw data is compiled and sent to Google Analytics servers for processing.

    1. Data processing algorithms

    When the data reaches Google Analytics servers, data processing algorithms come into play. These algorithms analyse the incoming raw data to identify the dataset’s trends, relationships and patterns. This part of the process involves cleaning and organising the data.

    1. Segmentation and customisation

    As discussed in the previous section, Google Analytics 4 allows for segmentation and customisation of data with dimensions. To analyse specific data groups, you can define segments based on various dimensions (e.g., traffic source, device type). Custom events and user properties can also be defined to tailor the tracking to the unique needs of your website or app.

    1. Report generation

    Google Analytics 4 can make comprehensive reports and dashboards based on the processed and segmented data. These reports, often in the form of graphs and charts, help identify patterns and trends in the data.

    What are the most important Google Analytics metrics to track ? 

    In this section, we’ll identify and define key metrics for marketing teams to track in Google Analytics 4. 

    1. Pageviews are the total number of times a specific page or screen on your website or app is viewed by visitors. Pageviews are calculated each time a web page is loaded or reloaded in a browser. You can use this metric to measure the popularity of certain content on your website and what users are interested in. 
    2. Event tracking monitors user interactions with content on a website or app (i.e., clicks, downloads, video views, etc.). Event tracking provides detailed insights into user engagement so you can better understand how users interact with dynamic content. 
    3. Retention rate can be analysed with a pre-made overview report that Google Analytics 4 provides. This user metric measures the percentage of visitors who return to your website or app after their first visit within a specific time period. Retention rate = (users with subsequent visits / total users in the initial cohort) x 100. Use this information to understand how relevant or effective your content, user experience and marketing efforts are in retaining visitors. You probably have more loyal/returning buyers if you have a high retention rate. 
    4. Average session duration calculates the average time users spend on your website or app per session. Average session duration = total duration of all sessions / # of sessions. A high average session duration indicates how interested and engaged users are with your content. 
    5. Site searches and search queries on your website are automatically tracked by Google Analytics 4. These metrics include search terms, number of searches and user engagement post-search. You can use site search metrics to better understand user intent and refine content based on users’ searches. 
    6. Entrance and exit pages show where users first enter and leave your site. This metric is calculated by the percentage of sessions that start or end on a specific page. Knowing where users are entering and leaving your site can help identify places for content optimisation. 
    7. Device and browser info includes data about which devices and browsers websites or apps visitors use. This is another metric that Google Analytics 4 automatically collects and categorises during user sessions. You can use this data to improve the user experience on relevant devices and browsers. 
    8. Bounce rate is the percentage of single-page sessions where users leave your site or app without interacting further. Bounce rate = (# of single-page sessions / total # of sessions) x 100. Bounce rate is useful for determining how effective your landing pages are — pages with high bounce rates can be tweaked and optimised to enhance user engagement.

    Examples of how Matomo can elevate your web analytics

    Although Google Analytics is a powerful tool for understanding user behaviour, it also has privacy concerns, limitations and a list of issues. Another web analytics solution like Matomo can help fill those gaps so you can get the most out of your analytics.

    Examples of how Matomo and GA4 can elevate each other
    1. Cross-verify and validate your observations from Google Analytics by comparing data from Matomo’s Heatmaps and Session Recordings for the same pages. This process grants you access to these advanced features that GA4 does not offer.
    Matomo's heatmaps feature
    1. Matomo provides you with greater accuracy thanks to its privacy-friendly design. Unlike GA4, Matomo can be configured to operate without cookies. This means increased accuracy without intrusive cookie consent screens interrupting the user experience. It’s a win for you and for your users. Matomo also doesn’t apply data sampling so you can rest assured that the data you see is 100% accurate.
    1. Unlike GA4, Matomo offers direct access to customer support so you can save time sifting through community forum threads and online documentation. Gain personalised assistance and guidance for your analytics questions, and resolve issues efficiently.
    Screenshot of the Form Analytics Dashboard, showing data and insights on form usage and performance
    1. Matomo’s Form Analytics and Media Analytics extend your analytics capabilities beyond just pageviews and event tracking.

      Tracking user interactions with forms can tell you which fields users struggle with, common drop-off points, in addition to which parts of the form successfully guide visitors towards submission.

      See first-hand how Concrete CMS 3x their leads using Matomo’s Form Analytics.

      Media Analytics can provide insight into how users interact with image, video, or audio content on your website. You can use this feature to assess the relevance and popularity of specific content by knowing what your audience is engaged by.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    Final thoughts

    Although Google Analytics is a powerful tool on its own, Matomo can elevate your web analytics by offering advanced features, data accuracy and a privacy-friendly design. Don’t play a guessing game with your data — Matomo provides 100% accurate data so you don’t have to rely on AI or machine learning to fill in the gaps. Matomo can be configured cookieless which also provides you with more accurate data and a better user experience. 

    Lastly, Matomo is fully compliant with some of the world’s strictest privacy regulations like GPDR. You won’t have to sacrifice compliance for accurate, high quality data. 

    Start your 21-day free trial of Matomo — no credit card required.

  • extracting video and data streams from MPEG2 TS over RTP in real-time

    10 janvier 2024, par Tejal Barnwal

    I have H264 video stream and KLV meta data encapsulated inside MPEG2 TS container which are sent over an RTP over UDP from a camera.
I intend to do the following :

    


      

    1. Extract both video and data streams from RTP
    2. 


    3. Process video feed using opencv in a seperate thread
    4. 


    5. process klv metadata in a seperate thread
    6. 


    


    My problem what exact arguments should I provide to ffmpeg so as to read h264 video stream and show the images frame by frame using opencv ?

    


    With the help of some previous posts like Simultaneously map video and data streams to one subprocess pipeline in real-time, I was able to get some idea about how could I proceed to procees the stream over RTP.

    


    I started out by using the following script :

    


    #!/usr/bin/env python3
from asyncio import streams
from logging.handlers import QueueListener
import klvdata
import subprocess as sp
import shlex
import threading
import numpy as np
import cv2
import time
from io import BytesIO

# Video reader thread.
def video_reader(pipe):
    cols, rows = 1280, 720  # Assume we know frame size is 1280x720

    counter = 0
    while True:
        print("read image")
        raw_image = pipe.read(cols*rows*3)  # Read raw video frame

        # Break the loop when length is too small
        if len(raw_image) < cols*rows*3:
            break

        if (counter % 10) == 0:
            # Show video frame evey 60 frames
            image = np.frombuffer(raw_image, np.uint8).reshape([rows, cols, 3])
            cv2.imshow('Video', image) # Show video image for testing
            cv2.waitKey(1)
        counter += 1
        print("image showed on window")
        time.sleep(0.25)



# https://github.com/paretech/klvdata/tree/master/klvdata
def bytes_to_int(value, signed=False):
    """Return integer given bytes."""
    return int.from_bytes(bytes(value), byteorder='big', signed=signed)


# Data reader thread (read KLV data).
def data_reader(pipe):
    key_length = 16  # Assume key length is 16 bytes.

    f = open('data.bin', 'wb')  # For testing - store the KLV data to data.bin (binary file)

    while True:
        # https://en.wikipedia.org/wiki/KLV
        # The first few bytes are the Key, much like a key in a standard hash table data structure.
        # Keys can be 1, 2, 4, or 16 bytes in length.
        # Presumably in a separate specification document you would agree on a key length for a given application.
        key = pipe.read(key_length)  # Read the key
        
        if len(key) < key_length:
            break  # Break the loop when length is too small
        f.write(key)  # Write data to binary file for testing

        # https://github.com/paretech/klvdata/tree/master/klvdata
        # Length field
        len_byte = pipe.read(1)

        if len(len_byte) < 1:
            break  # Break the loop when length is too small
        f.write(len_byte)  # Write data to binary file for testing

        byte_length = bytes_to_int(len_byte)

        # https://github.com/paretech/klvdata/tree/master/klvdata                                                
        if byte_length < 128:
            # BER Short Form
            length = byte_length
            ber_len_bytes = b''
        else:
            # BER Long Form
            ber_len = byte_length - 128
            ber_len_bytes = pipe.read(ber_len)

            if len(ber_len_bytes) < ber_len:
                break  # Break the loop when length is too small
            f.write(ber_len_bytes)  # Write ber_len_bytes to binary file for testing

            length = bytes_to_int(ber_len_bytes)

        # Read the value (length bytes)
        value = pipe.read(length)
        if len(value) < length:
            break  # Break the loop when length is too small
        f.write(value)  # Write data to binary file for testing

        klv_data = key + len_byte + ber_len_bytes + value  # Concatenate key length and data
        klv_data_as_bytes_io = BytesIO(klv_data)  # Wrap klv_data with BytesIO (before parsing)

        # Parse the KLV data
        for packet in klvdata.StreamParser(klv_data_as_bytes_io): 
            metadata = packet.MetadataList()
            for key, value in metadata.items():
                print(key, value)
                
            print("\n") # New line

# Execute FFmpeg as sub-process
# Map the video to stderr and map the data to stdout
process = sp.Popen(shlex.split('ffmpeg -hide_banner -loglevel quiet '                        # Set loglevel to quiet for disabling the prints ot stderr
                               '-i "rtp://192.168.0.141:11024" '                                        # Input video "Day Flight.mpg"
                               '-map 0:v -c:v rawvideo -pix_fmt bgr24 -f:v rawvideo pipe:2 ' # rawvideo format is mapped to stderr pipe (raw video codec with bgr24 pixel format)
                               '-map 0:d -c copy -copy_unknown -f:d data pipe:1 '            # Copy the data without ddecoding.
                               '-report'),                                                   # Create a log file (because we can't the statuses that are usually printed to stderr).
                                stdout=sp.PIPE, stderr=sp.PIPE)


# Start video reader thread (pass stderr pipe as argument).
video_thread = threading.Thread(target=video_reader, args=(process.stderr,))
video_thread.start()

# Start data reader thread (pass stdout pipe as argument).
data_thread = threading.Thread(target=data_reader, args=(process.stdout,))
data_thread.start()


# Wait for threads (and process) to finish.
video_thread.join()
data_thread.join()
process.wait()



    


    With the above script, I was facing two issues :

    


      

    1. The second thread resulted in an attribute error
    2. 


    


    Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "video_data_extraction.py", line 97, in data_reader
    print(packet.MetadataList())
AttributeError: 'UnknownElement' object has no attribute 'MetadataList'



    


      

    1. With this though I continuously able to see following output on the terminal regarding reading the images
    2. 


    


    read image
image showed on window
read image
image showed on window
read image
image showed on window
read image
image showed on window
read image
image showed on window
read image
image showed on window


    


    The imshow windows wasnt updating properly ! It seemed stuck after a few frames.

    


    Further diving into the lane with the help of following command, I concluded that the video stream that I am reading has H264 encoding

    


    ffprobe -i rtp://192.168.0.141:11024 -show_streams -show_formats


    


    Output of the above command :

    


    ffprobe version 4.2.7-0ubuntu0.1 Copyright (c) 2007-2022 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/aarch64-linux-gnu --incdir=/usr/include/aarch64-linux-gnu --arch=arm64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
[rtp @ 0xaaaac81ecce0] PES packet size mismatch
    Last message repeated 62 times
[NULL @ 0xaaaac81f09b0] non-existing PPS 0 referenced
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[rtp @ 0xaaaac81ecce0] PES packet size mismatch
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[rtp @ 0xaaaac81ecce0] PES packet size mismatch
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] non-existing PPS 0 referenced
    Last message repeated 1 times
[h264 @ 0xaaaac81f09b0] decode_slice_header error
[h264 @ 0xaaaac81f09b0] no frame!
[rtp @ 0xaaaac81ecce0] PES packet size mismatch
    Last message repeated 187 times
Input #0, rtp, from 'rtp://192.168.0.141:11024':
  Duration: N/A, start: 1317.040656, bitrate: N/A
  Program 1 
    Stream #0:1: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720, 25 fps, 25 tbr, 90k tbn
    Stream #0:0: Data: klv (KLVA / 0x41564C4B)
Unsupported codec with id 100356 for input stream 0
[STREAM]
index=0
codec_name=klv
codec_long_name=SMPTE 336M Key-Length-Value (KLV) metadata
profile=unknown
codec_type=data
codec_tag_string=KLVA
codec_tag=0x41564c4b
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/90000
start_pts=118533659
start_time=1317.040656
duration_ts=N/A
duration=N/A
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
[/STREAM]
[STREAM]
index=1
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Constrained Baseline
codec_type=video
codec_time_base=1/50
codec_tag_string=[27][0][0][0]
codec_tag=0x001b
width=1280
height=720
coded_width=1280
coded_height=720
has_b_frames=0
sample_aspect_ratio=N/A
display_aspect_ratio=N/A
pix_fmt=yuv420p
level=31
color_range=unknown
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
field_order=progressive
timecode=N/A
refs=1
is_avc=false
nal_length_size=0
id=N/A
r_frame_rate=25/1
avg_frame_rate=25/1
time_base=1/90000
start_pts=118533659
start_time=1317.040656
duration_ts=N/A
duration=N/A
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
[/STREAM]
[FORMAT]
filename=rtp://192.168.0.141:11024
nb_streams=2
nb_programs=1
format_name=rtp
format_long_name=RTP input
start_time=1317.040656
duration=N/A
size=N/A
bit_rate=N/A
probe_score=100
[/FORMAT]


    


    Further, in the log output, I see a lot of statements in regard to missed packets and PES packet mismatch

    


    [rtp @ 0xaaaaf31896c0] max delay reached. need to consume packet
[rtp @ 0xaaaaf31896c0] RTP: missed 98 packets
[rtp @ 0xaaaaf31896c0] Continuity check failed for pid 40 expected 14 got 10
[rtp @ 0xaaaaf31896c0] PES packet size mismatch
rtp://192.168.0.141:11024: corrupt input packet in stream 0
frame=  124 fps=2.6 q=-0.0 size=  334800kB time=00:00:05.32 bitrate=515406.0kbits/s dup=97 drop=0 speed=0.111x 


    


    What arguments do I provide to ffmpeg and in what order because my stream 0 is metadata and stream 1 is video so as to display image frame by frame with opencv ?
I would be grateful for any help that you could provide.

    


    Further, I also have a query regarding how does ffmpeg know to that it has to first convert the rtp packets into mpeg2 TS packets before segregating video stream and data stream ?