Recherche avancée

Médias (91)

Autres articles (78)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

  • Le plugin : Gestion de la mutualisation

    2 mars 2010, par

    Le plugin de Gestion de mutualisation permet de gérer les différents canaux de mediaspip depuis un site maître. Il a pour but de fournir une solution pure SPIP afin de remplacer cette ancienne solution.
    Installation basique
    On installe les fichiers de SPIP sur le serveur.
    On ajoute ensuite le plugin "mutualisation" à la racine du site comme décrit ici.
    On customise le fichier mes_options.php central comme on le souhaite. Voilà pour l’exemple celui de la plateforme mediaspip.net :
    < ?php (...)

Sur d’autres sites (4409)

  • How to measure the performance of a newsletter (or any email) with Matomo

    19 décembre 2017, par InnoCraft

    To be able to grow your business, it is crucial to track all your marketing efforts. This includes all newsletters and emails that you share with people outside of your business. Otherwise, you won’t be able to know which of your daily efforts are yielding results.

    Are you wondering if it is possible to track the performance of an emailing campaign in Matomo (Piwik) efficiently ? Would you like to know if it is technically easy ? No worries, here is a “How to” tutorial showing you how easily you can track an emailing in Matomo properly.

    Different tracking levels for different needs

    There are many things that you may be interested to track, for example :

    1. How many users opened your email
    2. How many users interacted with the links in your email
    3. How many users interacted on your website through your email

    Let’s have a look at each of these levels.

    Step 1 – Tracking email and newsletter openings in Matomo

    Tracking email openings requires to add an HTML code to your newsletter. It works through what we call a tracking pixel, a tiny image of 1×1 that is transparent so the user will not be able to see it.
    In order to install it, here is an example of what this code looks like :

    &lt;img src="https://piwik.example.com/piwik.php?idsite=YOUR_PIWIK_WEBSITE_ID&amp;rec=1&amp;bots=1&amp;url=https%3A%2F%2Fexample.com%2Femail-opened%2Fnewsletter_XYZ&amp;action_name=Email%20opened&amp;_rcn=internal%20email%20name&amp;_rck=newsletter_XYZ" style="border:0;&rdquo; alt="" /&gt;

    The Matomo tracking pixel explained

    The above URL is composed of the following URL parameters which are part of our Tracking API :

    • idsite : Corresponds to the ID of the website you would like to track.
    • rec : You need to have rec=1 in order for the request to be actually recorded.
    • bots : Set it to 1 to include all the connections made to this request, bots included.
    • url : corresponds to the URL you would like to display in Matomo (Piwik) every time the email is opened.
    • action_name : This is the page name you would like to be tracked when the email is opened.
    • _rcn : The name you would like to give to your campaign.
    • _rck : The keyword you may like to use in order to summarize the content of your newsletter.

    You may have noticed some special characters here such as “%20”, “%2F”. That’s because the URL is encoded. We strongly recommend you to do so in order for your tracking not to break. Many tools are available on the web in order to encode your URLs such as https://www.urlencoder.org/.

    If you would like to access the previous tracking code easily, keep in mind that you can always find the tracking code generator within the “Matomo admin panel → Tracking code” :

    You can find more information about it on our guide at : How do I track how many users open and read my newsletter emails (using a pixel / beacon) ?

    As a result, the information will be pushed as following for any user who opens your email :

    To not bias your regular page views on your website with newsletter openings, we recommend tracking newsletter openings into a new website.

    Tracking even more data : the user ID example

    You can go deeper in your URL tracking by inserting other parameters such as the user id if you have this information within your emailing database. One of the main benefit of tracking the User ID is to connect data across multiple devices and browsers for a given user.

    You only need to add the following parameter &uid=XXX where XXX equals the dynamic value of the user ID :

    Make sure that UID from your emailing provider is the same as the one used on your website in order for your data to be consistent.

    Important note : some email providers are loading email messages by default which results in an opening even if the user did not actually open the email.

    Step 2 – Measure the clicks within your emailing

    Tracking clicks within an email lets you know with which content readers interacted the most. We recommend tracking all links in all your emails as a campaign, whether it is a newsletter, a custom support email, an email invoice, etc. You might be surprised to see which of your emails lead to conversions and if they don’t, try to tweak those emails, so they might in the future.

    Tracking clicks This works thanks to URL campaign tracking. In order to perform this action, you will need to add Matomo (Piwik) URL parameters to all your existing link URLs :

    • Website URL : for example “www.your-website.com”.
    • Campaign name : for example “pk_campaign=emailing”. Represents the name you would like to give to your campaign.
    • Campaign keyword : for example “pk_keyword=name-of-your-article”. Represents the name you would like to give to your content.
    • Campaign source : for example “pk_source=newsletter”. Represents the name of the referrer.
    • Campaign medium : for example “pk_medium=email”. Represents the type of referrer you are using.
    • Campaign content : for example “pk_content=title”. Represents the type of content.

    You can find more information about campaign url tracking in our “Tracking marketing campaigns with Matomo” guide.

    Here is a sample showing you how you can differentiate some links in a newsletter, all pointing to the same URL :

    Once you have added these URL parameters to each of your link, Matomo (Piwik) will clearly indicate the referrer of this specific campaign when a user clicks on a link in the newsletter and visits your website.

    Important note : if you do not track your campaigns, it will result in a bad interpretation of your data within Matomo (Piwik) as you will get webmail services or direct entries as referrer instead of your newsletter campaign.

    Step 3 – Measure emailing performances on your website

    Thanks to Matomo (Piwik) URL campaign parameters, you can now clearly identify the traffic brought through your emailing. You can now specifically isolate users who come from emails by creating a segment :

    Once done, you can either have a look at each user specifically through the visitor log report or analyze it as a whole within the rest of the reports.

    You can even measure your return on investment directly if goals have been defined. In order to know more about how to track goals within Matomo (Piwik).

    Did you like this article ?

    If you enjoyed reading this article, do not hesitate to share it around you. Moreover, if there are any topics you would like to write us about in particular, just drop us an email and we will be more than happy to write about it.

    The post How to measure the performance of a newsletter (or any email) with Matomo appeared first on Analytics Platform - Matomo.

  • FFmpeg smearing rtp missed packet

    3 janvier 2018, par Akim Benchiha

    I’m using ffmpeg to combine streams. But during the combinaison I have some errors/Warnings. I don’t know why. I can see the frames are dropping. And the output video is poor quality

    Here the situation :
    First : Try to combine local video and a rtsp stream from data center.

    ffmpeg -i rtsp://cloudzensg.loginto.me:554/livecast -i Xmen2trailer.mov -filter_complex "[0]scale=-1:-1[b];[1]scale=128:128[w];[b][w] overlay=10:10" -vcodec libx264 -preset ultrafast -f flv out.mp4
    ffmpeg version N-89672-g41e51fbcd9 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7.2.0 (GCC)
    [udp @ 000001e07f58ccc0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 000001e07f5a2b80] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 000001e07f5b4040] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 000001e07f5c4300] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    Input #0, rtsp, from 'rtsp://cloudzensg.loginto.me:554/livecast':
     Metadata:
       title           : session
     Duration: N/A, start: 0.086367, bitrate: N/A
       Stream #0:0: Audio: aac, 44100 Hz, stereo, fltp
       Stream #0:1: Video: h264 (Constrained Baseline), yuv420p(progressive), 1280x720, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'Xmen2trailer.mov':
     Metadata:
       creation_time   : 2003-02-17T16:23:00.000000Z
       title           : X2
       title-eng       : X2
       copyright-eng   : ┬⌐2003 20th Century Fox
       comment         : QuickTime 5 version encoded and delivered by www.apple.com/trailers/
       copyright       : ┬⌐2003 20th Century Fox
       comment-eng     : QuickTime 5 version encoded and delivered by www.apple.com/trailers/
     Duration: 00:02:29.08, start: 0.000000, bitrate: 1283 kb/s
       Stream #1:0(eng): Video: svq3 (SVQ3 / 0x33515653), yuvj420p(pc), 480x272, 1153 kb/s, 24 fps, 24 tbr, 600 tbn, 600 tbc (default)
       Metadata:
         creation_time   : 2003-02-17T16:23:00.000000Z
         handler_name    : Apple Alias Data Handler
         encoder         : Sorenson Video 3
       Stream #1:1(eng): Audio: qdm2 (QDM2 / 0x324D4451), 44100 Hz, stereo, s16, 128 kb/s (default)
       Metadata:
         creation_time   : 2003-02-17T16:23:00.000000Z
         handler_name    : Apple Alias Data Handler
    File 'out.mp4' already exists. Overwrite ? [y/N] y
    Stream mapping:
     Stream #0:1 (h264) -> scale (graph 0)
     Stream #1:0 (svq3) -> scale (graph 0)
     overlay (graph 0) -> Stream #0:0 (libx264)
     Stream #1:1 -> #0:1 (qdm2 (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    [swscaler @ 000001e002b3d980] deprecated pixel format used, make sure you did set range correctly
    [libx264 @ 000001e07f5edd00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 000001e07f5edd00] profile Constrained Baseline, level 3.1
    [libx264 @ 000001e07f5edd00] 264 - core 152 r2851 ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
    Output #0, flv, to 'out.mp4':
     Metadata:
       title           : session
       encoder         : Lavf58.3.100
       Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1280x720, q=-1--1, 30 fps, 1k tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc58.9.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
       Stream #0:1(eng): Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 44100 Hz, stereo, s16p (default)
       Metadata:
         creation_time   : 2003-02-17T16:23:00.000000Z
         handler_name    : Apple Alias Data Handler
         encoder         : Lavc58.9.100 libmp3lame
    Past duration 0.889320 too large
    Past duration 0.629326 too large
    Past duration 0.979652 too large
    Past duration 0.909660 too large
    Past duration 0.646996 too large
    Past duration 0.881325 too large
    Past duration 0.728661 too large
    Past duration 0.970665 too large
    Past duration 0.610664 too large
    Past duration 0.851997 too large
    Past duration 0.779991 too large
    Past duration 0.870995 too large
    Past duration 0.752327 too large
    Past duration 0.970665 too large
    Past duration 0.679665 too large
    Past duration 0.951988 too large
    Past duration 0.913994 too large
    Past duration 0.641655 too large
    [rtsp @ 000001e07f58a700] max delay reached. need to consume packet
    [rtsp @ 000001e07f58a700] RTP: missed 747 packets
    [h264 @ 000001e07f63a140] corrupted macroblock 30 15 (total_coeff=-1)063.3kbits/s dup=0 drop=66 speed=6.52x
    [h264 @ 000001e07f63a140] error while decoding MB 30 15
    [h264 @ 000001e07f63a140] concealing 2380 DC, 2380 AC, 2380 MV errors in P frame
    Past duration 0.971657 too large
    Past duration 0.867989 too large    1280kB time=00:00:04.44 bitrate=2360.6kbits/s dup=0 drop=70 speed=1.44x
    [rtsp @ 000001e07f58a700] max delay reached. need to consume packet
    [rtsp @ 000001e07f58a700] RTP: missed 43 packets
    [h264 @ 000001e07f639380] corrupted macroblock 11 18 (total_coeff=-1)
    [h264 @ 000001e07f639380] error while decoding MB 11 18
    [h264 @ 000001e07f639380] concealing 2156 DC, 2156 AC, 2156 MV errors in P frame
    Past duration 0.895988 too large
    Past duration 0.708656 too large
    frame=  105 fps= 29 q=-1.0 Lsize=    2169kB time=00:00:08.98 bitrate=1977.1kbits/s dup=0 drop=76 speed=2.52x
    video:2020kB audio:141kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.363079%
    [libx264 @ 000001e07f5edd00] frame I:1     Avg QP:20.00  size: 84510
    [libx264 @ 000001e07f5edd00] frame P:104   Avg QP:18.44  size: 19074
    [libx264 @ 000001e07f5edd00] mb I  I16..4: 100.0%  0.0%  0.0%
    [libx264 @ 000001e07f5edd00] mb P  I16..4: 15.4%  0.0%  0.0%  P16..4: 23.1%  0.0%  0.0%  0.0%  0.0%    skip:61.5%
    [libx264 @ 000001e07f5edd00] coded y,uvDC,uvAC intra: 7.4% 7.3% 4.5% inter: 14.3% 12.2% 3.4%
    [libx264 @ 000001e07f5edd00] i16 v,h,dc,p: 71% 27%  1%  0%
    [libx264 @ 000001e07f5edd00] i8c dc,h,v,p: 58% 37%  4%  0%
    [libx264 @ 000001e07f5edd00] kb/s:1969.74
    Exiting normally, received signal 2

    second :
    Try to combine local rtsp and local video

    ffmpeg -i rtsp://192.168.1.203:554/livecast -i Xmen2trailer.mov -filter_complex "[0]scale=-1:-1[b];[1]scale=128:128[w];[b][w] overlay=10:10" -vcodec libx264 -preset ultrafast -f flv out.mp4
    ffmpeg version N-89672-g41e51fbcd9 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7.2.0 (GCC)
    [udp @ 000002aa1fe4ca00] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 000002aa1fe62900] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 000002aa1fe73d80] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 000002aa1fe84040] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    Input #0, rtsp, from 'rtsp://192.168.1.203:554/livecast':
     Metadata:
       title           : session
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
       Stream #0:1: Video: h264 (Constrained Baseline), yuv420p(progressive), 1920x1080, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'Xmen2trailer.mov':
     Metadata:
       creation_time   : 2003-02-17T16:23:00.000000Z
       title           : X2
       title-eng       : X2
       copyright-eng   : ┬⌐2003 20th Century Fox
       comment         : QuickTime 5 version encoded and delivered by www.apple.com/trailers/
       copyright       : ┬⌐2003 20th Century Fox
       comment-eng     : QuickTime 5 version encoded and delivered by www.apple.com/trailers/
     Duration: 00:02:29.08, start: 0.000000, bitrate: 1283 kb/s
       Stream #1:0(eng): Video: svq3 (SVQ3 / 0x33515653), yuvj420p(pc), 480x272, 1153 kb/s, 24 fps, 24 tbr, 600 tbn, 600 tbc (default)
       Metadata:
         creation_time   : 2003-02-17T16:23:00.000000Z
         handler_name    : Apple Alias Data Handler
         encoder         : Sorenson Video 3
       Stream #1:1(eng): Audio: qdm2 (QDM2 / 0x324D4451), 44100 Hz, stereo, s16, 128 kb/s (default)
       Metadata:
         creation_time   : 2003-02-17T16:23:00.000000Z
         handler_name    : Apple Alias Data Handler
    File 'out.mp4' already exists. Overwrite ? [y/N] y
    Stream mapping:
     Stream #0:1 (h264) -> scale (graph 0)
     Stream #1:0 (svq3) -> scale (graph 0)
     overlay (graph 0) -> Stream #0:0 (libx264)
     Stream #0:0 -> #0:1 (aac (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    [swscaler @ 000002aa2355ba40] deprecated pixel format used, make sure you did set range correctly
    [libx264 @ 000002aa202d9600] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 000002aa202d9600] profile Constrained Baseline, level 4.0
    [libx264 @ 000002aa202d9600] 264 - core 152 r2851 ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
    Output #0, flv, to 'out.mp4':
     Metadata:
       title           : session
       encoder         : Lavf58.3.100
       Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1920x1080, q=-1--1, 30 fps, 1k tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc58.9.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
       Stream #0:1: Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 48000 Hz, stereo, fltp
       Metadata:
         encoder         : Lavc58.9.100 libmp3lame
    Past duration 0.711662 too large
    Past duration 0.822990 too large
    Past duration 0.854332 too large
    [rtsp @ 000002aa1fe4a680] max delay reached. need to consume packet
    [rtsp @ 000002aa1fe4a680] RTP: missed 1315 packets
    [h264 @ 000002aa20262580] Invalid level prefix
    [h264 @ 000002aa20262580] error while decoding MB 12 37
    [h264 @ 000002aa20262580] concealing 3757 DC, 3757 AC, 3757 MV errors in I frame
    Past duration 0.732323 too large     256kB time=00:00:02.88 bitrate= 727.2kbits/s dup=0 drop=13 speed=5.76x
    Past duration 0.824333 too large
    Past duration 0.988991 too large
    Past duration 0.862328 too large    1024kB time=00:00:03.38 bitrate=2477.4kbits/s dup=0 drop=21 speed=3.34x
    Past duration 0.861320 too large
    Past duration 0.883324 too large
    Past duration 0.910652 too large    1280kB time=00:00:03.94 bitrate=2659.3kbits/s dup=0 drop=30 speed=2.59x
    Past duration 0.954659 too large
    Past duration 0.790657 too large    1792kB time=00:00:04.40 bitrate=3335.6kbits/s dup=0 drop=37 speed=2.17x
    Past duration 0.861320 too large
    Past duration 0.943657 too large
    Past duration 0.988655 too large    2304kB time=00:00:04.90 bitrate=3849.6kbits/s dup=0 drop=45 speed=1.94x
    Past duration 0.810326 too large
    Past duration 0.893654 too large
    Past duration 0.822319 too large    3072kB time=00:00:05.40 bitrate=4655.2kbits/s dup=0 drop=53 speed=1.78x
    Past duration 0.902657 too large
    Past duration 0.909660 too large
    Past duration 0.779655 too large    3328kB time=00:00:05.93 bitrate=4596.7kbits/s dup=0 drop=61 speed=1.67x
    Past duration 0.957664 too large
    Past duration 0.778328 too large    3840kB time=00:00:06.43 bitrate=4890.0kbits/s dup=0 drop=68 speed=1.59x
    Past duration 0.861992 too large
    Past duration 0.992653 too large
    Past duration 0.729652 too large    4352kB time=00:00:06.94 bitrate=5133.4kbits/s dup=0 drop=76 speed=1.53x
    [rtsp @ 000002aa1fe4a680] max delay reached. need to consume packet
    [rtsp @ 000002aa1fe4a680] RTP: missed 2 packets
    Past duration 0.857994 too large
    [h264 @ 000002aa20260580] Invalid level prefix
    [h264 @ 000002aa20260580] error while decoding MB 43 62
    [h264 @ 000002aa20260580] concealing 726 DC, 726 AC, 726 MV errors in P frame
    Past duration 0.889000 too large
    Past duration 0.800987 too large    4864kB time=00:00:07.42 bitrate=5365.7kbits/s dup=0 drop=83 speed=1.47x
    Past duration 0.909660 too large
    Past duration 0.946327 too large
    Past duration 0.795998 too large
    Past duration 0.902321 too large    5376kB time=00:00:07.95 bitrate=5539.0kbits/s dup=0 drop=91 speed=1.43x
    Past duration 0.841652 too large
    Past duration 0.859657 too large
    Past duration 0.992332 too large    5632kB time=00:00:08.43 bitrate=5472.3kbits/s dup=0 drop=99 speed=1.39x
    Past duration 0.893990 too large
    Past duration 0.947990 too large    6400kB time=00:00:08.95 bitrate=5853.4kbits/s dup=0 drop=106 speed=1.36x
    Past duration 0.678322 too large
    Past duration 0.994987 too large
    Past duration 0.942329 too large
    Past duration 0.975319 too large
    Past duration 0.702660 too large    6912kB time=00:00:09.45 bitrate=5986.8kbits/s dup=0 drop=114 speed=1.34x
    Past duration 0.821663 too large
    Past duration 0.937325 too large
    Past duration 0.992989 too large
    Past duration 0.684990 too large    7168kB time=00:00:09.96 bitrate=5895.0kbits/s dup=0 drop=122 speed=1.31x
    Past duration 0.763664 too large
    Past duration 0.990318 too large
    Past duration 0.921333 too large
    Past duration 0.945320 too large
    Past duration 0.711327 too large    7680kB time=00:00:10.49 bitrate=5994.1kbits/s dup=0 drop=130 speed=1.29x
    Past duration 0.841652 too large
    Past duration 0.948997 too large
    Past duration 0.994652 too large
    Past duration 0.759987 too large    8448kB time=00:00:11.04 bitrate=6267.0kbits/s dup=0 drop=138 speed=1.28x
    Past duration 0.860985 too large
    Past duration 0.984993 too large
    Past duration 0.796989 too large    8960kB time=00:00:11.50 bitrate=6382.1kbits/s dup=0 drop=145 speed=1.26x
    Past duration 0.914665 too large
    Past duration 0.804329 too large    9472kB time=00:00:12.02 bitrate=6452.2kbits/s dup=0 drop=152 speed=1.25x
    frame=  303 fps= 31 q=-1.0 Lsize=   10246kB time=00:00:12.33 bitrate=6803.2kbits/s dup=0 drop=156 speed=1.25x
    video:10039kB audio:193kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.140463%
    [libx264 @ 000002aa202d9600] frame I:2     Avg QP:18.00  size:199681
    [libx264 @ 000002aa202d9600] frame P:301   Avg QP:18.96  size: 32823
    [libx264 @ 000002aa202d9600] mb I  I16..4: 100.0%  0.0%  0.0%
    [libx264 @ 000002aa202d9600] mb P  I16..4:  9.3%  0.0%  0.0%  P16..4: 32.1%  0.0%  0.0%  0.0%  0.0%    skip:58.6%
    [libx264 @ 000002aa202d9600] coded y,uvDC,uvAC intra: 12.9% 34.0% 11.0% inter: 12.0% 22.7% 6.2%
    [libx264 @ 000002aa202d9600] i16 v,h,dc,p: 38% 49%  9%  4%
    [libx264 @ 000002aa202d9600] i8c dc,h,v,p: 38% 42% 14%  6%
    [libx264 @ 000002aa202d9600] kb/s:6833.78
    Exiting normally, received signal 2.

    third :
    Combine RTMP from phone and RTSP video from server

    ffmpeg -i rtsp://192.168.1.203:554/livecast -i rtmp://192.168.1.152:1935/ingest/test -filter_complex "[0]scale=-1:-1[b];[1]scale=200:200[w];[b][w] overlay=10:10" -c:v libx264 -preset ultrafast -f flv outputRTMP.mp4
    ffmpeg version N-89672-g41e51fbcd9 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7.2.0 (GCC)
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx
     libavutil      56.  7.100 / 56.  7.100
     libavcodec     58.  9.100 / 58.  9.100
     libavformat    58.  3.100 / 58.  3.100
     libavdevice    58.  0.100 / 58.  0.100
     libavfilter     7.  8.100 /  7.  8.100
     libswscale      5.  0.101 /  5.  0.101
     libswresample   3.  0.101 /  3.  0.101
     libpostproc    55.  0.100 / 55.  0.100
    [udp @ 0000018c0ccbca40] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 0000018c0ccd2900] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 0000018c0cce3dc0] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    [udp @ 0000018c0ccf4080] 'circular_buffer_size' option was set but it is not supported on this build (pthread support is required)
    Input #0, rtsp, from 'rtsp://192.168.1.203:554/livecast':
     Metadata:
       title           : session
     Duration: N/A, start: 0.000000, bitrate: N/A
       Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
       Stream #0:1: Video: h264 (Constrained Baseline), yuv420p(progressive), 1920x1080, 30 fps, 30 tbr, 90k tbn, 60 tbc
    Input #1, flv, from 'rtmp://192.168.1.152:1935/ingest/test':
     Metadata:
       Server          : NGINX RTMP (github.com/arut/nginx-rtmp-module)
       displayWidth    : 640
       displayHeight   : 480
       fps             : 0
       profile         :
       level           :
     Duration: 00:00:00.00, start: 173.197000, bitrate: N/A
       Stream #1:0: Audio: aac (LC), 44100 Hz, mono, fltp, 47 kb/s
       Stream #1:1: Video: h264 (Baseline), yuv420p(tv, smpte170m/bt470bg/smpte170m, progressive), 640x480, 1999 kb/s, 29.92 fps, 29.92 tbr, 1k tbn
    File 'outputRTMP.mp4' already exists. Overwrite ? [y/N] y
    Stream mapping:
     Stream #0:1 (h264) -> scale (graph 0)
     Stream #1:1 (h264) -> scale (graph 0)
     overlay (graph 0) -> Stream #0:0 (libx264)
     Stream #0:0 -> #0:1 (aac (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    [libx264 @ 0000018c0d1321c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 0000018c0d1321c0] profile Constrained Baseline, level 4.0
    [libx264 @ 0000018c0d1321c0] 264 - core 152 r2851 ba24899 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
    Output #0, flv, to 'outputRTMP.mp4':
     Metadata:
       title           : session
       encoder         : Lavf58.3.100
       Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1920x1080, q=-1--1, 30 fps, 1k tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc58.9.100 libx264
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
       Stream #0:1: Audio: mp3 (libmp3lame) ([2][0][0][0] / 0x0002), 48000 Hz, stereo, fltp
       Metadata:
         encoder         : Lavc58.9.100 libmp3lame
    Past duration 0.931999 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 92 packets
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 2904 packets
    Past duration 0.671654 too large
    [h264 @ 0000018c0d0da140] concealing 4160 DC, 4160 AC, 4160 MV errors in I frame
    Past duration 0.991997 too large
    Past duration 0.791328 too large     256kB time=00:00:05.12 bitrate= 409.3kbits/s dup=0 drop=12 speed=4.14x
    Past duration 0.969994 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 573 packets
    [h264 @ 0000018c0d0d8a80] concealing 2468 DC, 2468 AC, 2468 MV errors in P frame
    Past duration 0.670326 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 25 packets
    [h264 @ 0000018c0d0d8a80] concealing 6479 DC, 6479 AC, 6479 MV errors in P frame
    Past duration 0.961327 too large     512kB time=00:00:11.10 bitrate= 377.7kbits/s dup=0 drop=16 speed=1.57x
    Past duration 0.689323 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 620 packets
    [h264 @ 0000018c0d0da140] negative number of zero coeffs at 33 32
    [h264 @ 0000018c0d0da140] error while decoding MB 33 32
    [h264 @ 0000018c0d0da140] concealing 4336 DC, 4336 AC, 4336 MV errors in P frame
    Past duration 0.790321 too large
    Past duration 0.910332 too large     768kB time=00:00:12.23 bitrate= 514.3kbits/s dup=0 drop=18 speed=1.62x
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 24 packets
    [h264 @ 0000018c0d0da140] corrupted macroblock 22 25 (total_coeff=-1)
    [h264 @ 0000018c0d0da140] error while decoding MB 22 25
    [h264 @ 0000018c0d0da140] concealing 5151 DC, 5151 AC, 5151 MV errors in P frame
    Past duration 0.924324 too large    1024kB time=00:00:17.03 bitrate= 492.5kbits/s dup=0 drop=19 speed= 1.3x
    Past duration 0.656654 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 516 packets
    [h264 @ 0000018c0d0daf00] Invalid level prefix
    [h264 @ 0000018c0d0daf00] error while decoding MB 0 36
    [h264 @ 0000018c0d0daf00] concealing 3889 DC, 3889 AC, 3889 MV errors in P frame
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 132 packets
    [h264 @ 0000018c0d0d8a80] top block unavailable for requested intra mode -1
    [h264 @ 0000018c0d0d8a80] error while decoding MB 55 26
    [h264 @ 0000018c0d0d8a80] concealing 5034 DC, 5034 AC, 5034 MV errors in I frame
    [h264 @ 0000018c0d0d9cc0] concealing 2621 DC, 2621 AC, 2621 MV errors in P frame
    Past duration 0.935661 too large
    Past duration 0.878319 too large
    Past duration 0.929329 too large    1280kB time=00:00:18.32 bitrate= 572.1kbits/s dup=0 drop=22 speed=1.27x
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 560 packets
    [h264 @ 0000018c0d0d8140] Invalid level prefix
    Past duration 0.661659 too large
    [h264 @ 0000018c0d0d8140] error while decoding MB 91 24
    [h264 @ 0000018c0d0d8140] concealing 5214 DC, 5214 AC, 5214 MV errors in P frame
    Past duration 0.823662 too large
    Past duration 0.864662 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 29 packets
    [h264 @ 0000018c0d0d8140] corrupted macroblock 42 3 (total_coeff=-1)
    [h264 @ 0000018c0d0d8140] error while decoding MB 42 3
    [h264 @ 0000018c0d0d8140] concealing 7760 DC, 7760 AC, 7760 MV errors in P frame
    Past duration 0.780663 too large    1792kB time=00:00:19.50 bitrate= 752.8kbits/s dup=0 drop=24 speed=1.27x
    Past duration 0.900322 too large
    Past duration 0.990990 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 565 packets
    [h264 @ 0000018c0d0d8140] corrupted macroblock 83 27 (total_coeff=-1)
    [h264 @ 0000018c0d0d8140] Past duration 0.862999 too large
    error while decoding MB 83 27
    [h264 @ 0000018c0d0d8140] concealing 4866 DC, 4866 AC, 4866 MV errors in P frame
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 7 packets
    [h264 @ 0000018c0d0d8f00] top block unavailable for requested intra mode
    [h264 @ 0000018c0d0d8f00] error while decoding MB 79 16
    [h264 @ 0000018c0d0d8f00] concealing 2661 DC, 2661 AC, 2661 MV errors in P frame
    Past duration 0.907997 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet= 816.0kbits/s dup=0 drop=28 speed=1.29x
    [rtsp @ 0000018c0ccba6c0] RTP: missed 19 packets
    [h264 @ 0000018c0d0d9cc0] corrupted macroblock 88 59 (total_coeff=-1)
    [h264 @ 0000018c0d0d9cc0] error while decoding MB 88 59
    [h264 @ 0000018c0d0d9cc0] concealing 1041 DC, 1041 AC, 1041 MV errors in P frame
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 6 packets
    [h264 @ 0000018c0d0d8140] out of range intra chroma pred mode
    [h264 @ 0000018c0d0d8140] error while decoding MB 118 6
    [h264 @ 0000018c0d0d8140] concealing 3320 DC, 3320 AC, 3320 MV errors in P frame
    Past duration 0.845665 too large    2304kB time=00:00:20.72 bitrate= 910.6kbits/s dup=0 drop=29 speed=1.23x
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 574 packets
    [h264 @ 0000018c0d0d8140] negative number of zero coeffs at 39 26
    [h264 @ 0000018c0d0d8140] error while decoding MB 39 26
    [h264 @ 0000018c0d0d8140] concealing 5050 DC, 5050 AC, 5050 MV errors in P frame
    Past duration 0.950996 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 37 packets
    [h264 @ 0000018c0d0d8140] corrupted macroblock 48 37 (total_coeff=-1)
    [h264 @ 0000018c0d0d8140] error while decoding MB 48 37
    [h264 @ 0000018c0d0d8140] concealing 3721 DC, 3721 AC, 3721 MV errors in P frame
    Past duration 0.789330 too large    2816kB time=00:00:22.02 bitrate=1047.5kbits/s dup=0 drop=33 speed=1.23x
    Past duration 0.848320 too large
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet
    [rtsp @ 0000018c0ccba6c0] RTP: missed 581 packets
    [h264 @ 0000018c0d0d8f00] corrupted macroblock 13 10 (total_coeff=-1)
    [h264 @ 0000018c0d0d8f00] error while decoding MB 13 10
    Past duration 0.875664 too large
    [h264 @ 0000018c0d0d8f00] concealing 6952 DC, 6952 AC, 6952 MV errors in P frame
    [rtsp @ 0000018c0ccba6c0] max delay reached. need to consume packet=1181.0kbits/s dup=0 drop=35 speed=1.25x
    [rtsp @ 0000018c0ccba6c0] RTP: missed 6 packets
    [h264 @ 0000018c0d0d8f00] corrupted macroblock 72 37 (total_coeff=-1)
    [h264 @ 0000018c0d0d8f00] error while decoding MB 72 37
    [h264 @ 0000018c0d0d8f00] concealing 3675 DC, 3675 AC, 3675 MV errors in P frame
    frame=  101 fps=5.3 q=-1.0 Lsize=    4095kB time=00:00:23.67 bitrate=1417.0kbits/s dup=0 drop=37 speed=1.25x
    video:3739kB audio:340kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.405426%
    [libx264 @ 0000018c0d1321c0] frame I:1     Avg QP:20.00  size:178581
    [libx264 @ 0000018c0d1321c0] frame P:100   Avg QP:20.42  size: 36495
    [libx264 @ 0000018c0d1321c0] mb I  I16..4: 100.0%  0.0%  0.0%
    [libx264 @ 0000018c0d1321c0] mb P  I16..4: 11.8%  0.0%  0.0%  P16..4: 31.7%  0.0%  0.0%  0.0%  0.0%    skip:56.5%
    [libx264 @ 0000018c0d1321c0] coded y,uvDC,uvAC intra: 26.5% 36.0% 9.2% inter: 15.0% 18.5% 3.4%
    [libx264 @ 0000018c0d1321c0] i16 v,h,dc,p: 44% 39% 10%  7%
    [libx264 @ 0000018c0d1321c0] i8c dc,h,v,p: 36% 36% 21%  7%
    [libx264 @ 0000018c0d1321c0] kb/s:1383.65
    Exiting normally, received signal 2.

    So If you have some ideas for me it will help. Thank you

  • Dreamcast Serial Extractor

    31 décembre 2017, par Multimedia Mike — Sega Dreamcast

    It has not been a very productive year for blogging. But I started the year by describing an unfinished project that I developed for the Sega Dreamcast, so I may as well end the year the same way. The previous project was a media player. That initiative actually met with some amount of success and could have developed into something interesting if I had kept at it.

    By contrast, this post describes an effort that was ultimately a fool’s errand that I spent way too much time trying to make work.

    Problem Statement
    In my neverending quest to analyze the structure of video games while also hoarding a massive collection of them (though I’m proud to report that I did play at least a few of them this past year), I wanted to be able to extract the data from my many Dreamcast titles, both games and demo discs. I had a tool called the DC Coder’s Cable, a serial cable that enables communication between a Dreamcast and a PC. With the right software, you could dump an entire Dreamcast GD-ROM, which contained a gigabyte worth of sectors.

    Problem : The dumping software (named ‘dreamrip’ and written by noted game hacker BERO) operated in a very basic mode, methodically dumping sector after sector and sending it down the serial cable. This meant that it took about 28 hours to extract all the data on a single disc by running at the maximum speed of 115,200 bits/second, or about 11 kilobytes/second. I wanted to create a faster method.

    The Pitch
    I formed a mental model of dreamrip’s operation that looked like this :



    As an improvement, I envisioned this beautiful architecture :



    Architectural Assumptions
    My proposed architecture was predicated on the assumption that the disc reading and serial output functions were both I/O-bound operations and that the CPU would be idle much of the time. My big idea was to use that presumably idle CPU time to compress the sectors before sending them over the wire. As long as the CPU can compress the data faster than 11 kbytes/sec, it should be a win. In order to achieve this, I broke the main program into 3 threads :

    1. The first thread reads the sectors ; more specifically, it asks the drive firmware to please read the sectors and make the data available in system RAM
    2. The second thread waits for sector data to appear in memory and then compresses it
    3. The third thread takes the compressed data when it is ready and shuffles it out through the serial cable

    Simple and elegant, right ?

    For data track compression, I wanted to start with zlib in order to prove the architecture, but then also try bzip2 or lzma. As long as they could compress data faster than the serial port could write it, then it should be a win. For audio track compression, I wanted to use the Flake FLAC encoder. According to my notes, I did get both bzip2 compression and the Flake compressor working on the Dreamcast. I recall choosing Flake over the official FLAC encoder because it was much simpler and had fewer dependencies, always an important consideration for platforms such as this.

    Problems
    I worked for quite awhile on this project. I have a lot of notes recorded but a lot of the problems I had remain a bit vague in my memory. However, there was one problem I discovered that eventually sunk the entire initiative :

    The serial output operation is CPU-bound.

    My initial mental model was that the a buffer could be “handed off” to the serial subsystem and the CPU could go back to doing other work. Nope. Turns out that the CPU was participating at every step of the serial transfer.

    Further, I eventually dug into the serial driver code and learned that there was already some compression taking place via the miniLZO library.

    Lessons Learned

    • Recognize the assumptions that you’re making up front at the start of the project.
    • Prototype in order to ensure plausibility
    • Profile to make sure you’re optimizing the right thing (this is something I have learned again and again).

    Another interesting tidbit from my notes : it doesn’t matter how many sectors you read at a time, the overall speed is roughly the same. I endeavored to read 1000 2048-byte data sectors, 1 or 10 or 100 at a time, or all 1000 at once. My results :

    • 1 : 19442 ms
    • 10 : 19207 ms
    • 100 : 19194 ms
    • 1000 : 19320 ms

    No difference. That surprised me.

    Side Benefits
    At one point, I needed to understand how BERO’s dreamrip software was operating. I knew I used to have the source code but I could no longer find it. Instead, I decided to try to reverse engineer what I needed from the SH-4 binary image that I had. It wasn’t an ELF image ; rather, it was a raw binary meant to be loaded at a particular memory location which makes it extra challenging for ‘objdump’. This led to me asking my most viewed and upvoted question on Stack Overflow : “Disassembling A Flat Binary File Using objdump”. The next day, it also led me to post one of my most upvoted answers when I found the solution elsewhere.

    Strangely, I have since tried out the command line shown in my answer and have been unable to make it work. But people keep upvoting both the question and the answer.

    Eventually this all became moot when I discovered a misplaced copy of the source code on one of my computers.

    I strongly recall binging through the Alias TV show while I was slogging away on this project, so I guess that’s a positive association since I got so many fun screenshots out of it.

    The Final Resolution
    Strangely, I was still determined to make this project work even though the Dreamcast SD adapter arrived for me about halfway through the effort. Part of this was just stubbornness, but part of it was my assumptions about serial port speeds, in particular, my assumption that there was a certain speed-of-light type of limitation on serial port speeds so that the SD adapter, operating over the DC’s serial port, would not be appreciably faster than the serial cable.

    This turned out to be very incorrect. In fact, the SD adapter is capable of extracting an entire gigabyte disc image in 35-40 minutes. This is the method I have since been using to extract Dreamcast disc images.

    The post Dreamcast Serial Extractor first appeared on Breaking Eggs And Making Omelettes.