Recherche avancée

Médias (91)

Autres articles (27)

  • Qualité du média après traitement

    21 juin 2013, par

    Le bon réglage du logiciel qui traite les média est important pour un équilibre entre les partis ( bande passante de l’hébergeur, qualité du média pour le rédacteur et le visiteur, accessibilité pour le visiteur ). Comment régler la qualité de son média ?
    Plus la qualité du média est importante, plus la bande passante sera utilisée. Le visiteur avec une connexion internet à petit débit devra attendre plus longtemps. Inversement plus, la qualité du média est pauvre et donc le média devient dégradé voire (...)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • 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 (...)

Sur d’autres sites (4001)

  • How to handle FFmpeg hardware decoder initialisation failure

    5 décembre 2024, par Bernie

    I'm using the FFmpeg.AutoGen library in my project and found a crash on a video using hardware decoding.
So I went back to the example and tested it there and found the same result.

    


    The example reports the following

    


    Current directory: D:\...\Ruslan-B\FFmpeg.AutoGen\FFmpeg.AutoGen.Example\bin\Debug\net6.0
Running in 64-bit mode.
FFmpeg binaries found in: D:\...\Ruslan-B\FFmpeg.AutoGen\FFmpeg\bin\x64
FFmpeg version info: 5.0-full_build-www.gyan.dev
Use hardware acceleration for decoding?[n]
y
Select hardware decoder:
1. AV_HWDEVICE_TYPE_CUDA
2. AV_HWDEVICE_TYPE_DXVA2
3. AV_HWDEVICE_TYPE_QSV
4. AV_HWDEVICE_TYPE_D3D11VA
5. AV_HWDEVICE_TYPE_OPENCL
6. AV_HWDEVICE_TYPE_VULKAN
Selected [2]

Decoding...
[mpegts @ 0000012917fced00] parser not found for codec klv, packets or times may be invalid.
[h264 @ 000001293b424080] Reinit context to 1920x1088, pix_fmt: yuv420p
[mpegts @ 0000012917fced00] parser not found for codec klv, packets or times may be invalid.
[AVHWDeviceContext @ 000001293b9a6940] Using D3D9Ex device.
codec name: h264
[h264 @ 000001293b8a5040] Decoder GUIDs reported as supported:
[h264 @ 000001293b8a5040] {ee27417f-5e28-4e65-beea-1d26b508adc9}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {bf22ad00-03ea-4690-8077-473346209b7e}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {e07ec519-e651-4cd6-ac84-1370cceec851}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {bcc5db6d-a2b6-4af0-ace4-adb1f787bc89}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {1b81bea4-a0c7-11d3-b984-00c04f2e73c5}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {1b81be68-a0c7-11d3-b984-00c04f2e73c5}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {d79be8da-0cf1-4c81-b82a-69a4e236f43d}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {f9aaccbb-c2b6-4cfc-8779-5707b1760552}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {705b9d82-76cf-49d6-b7e6-ac8872db013c}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {c528916c-c0af-4645-8cb2-372b6d4adc2a}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {07cfaffb-5a2e-4b99-b62a-e4ca53b6d5aa}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {91cd2d6e-897b-4fa1-b0d7-51dc88010e0a}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {90b899ea-3a62-4705-88b3-8df04b2744e7}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {442b942a-b4d9-4940-bc45-a882e5f919f3}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {8c56eb1e-2b47-466f-8d33-7dbcd63f3df2}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {5b11d51b-2f4c-4452-bcc3-09f2a1160cc0}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {75fc75f7-c589-4a07-a25b-72e03b0383b3}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]  1[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {107af0e0-ef1a-4d19-aba8-67a163073d13}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]  1[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {463707f8-a1d0-4585-876d-83aa6d60b89e}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {a4c749ef-6ecf-48aa-8448-50a7a1165ff7}[h264 @ 000001293b8a5040]  1[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {76988a52-df13-419a-8e64-ffcf4a336cf5}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {80a3a7bd-89d8-4497-a2b8-2126af7e6eb8}[h264 @ 000001293b8a5040]  1[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {a74ccae2-f466-45ae-86f5-ab8be8af8483}[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {1b81be94-a0c7-11d3-b984-00c04f2e73c5}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {1b81bea2-a0c7-11d3-b984-00c04f2e73c5}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] {49761bec-4b63-4349-a5ff-87ffdf088466}[h264 @ 000001293b8a5040]  0[h264 @ 000001293b8a5040]
[h264 @ 000001293b8a5040] No decoder device for codec found
[h264 @ 000001293b8a5040] Failed setup for format dxva2_vld: hwaccel initialisation returned error.
[h264 @ 000001293b8a5040] Reinit context to 1920x1088, pix_fmt: yuv420p
Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at FFmpeg.AutoGen.ffmpeg+<>c.<.cctor>b__7_466(FFmpeg.AutoGen.AVFrame*, FFmpeg.AutoGen.AVFrame*, Int32)
   at FFmpeg.AutoGen.ffmpeg.av_hwframe_transfer_data(FFmpeg.AutoGen.AVFrame*, FFmpeg.AutoGen.AVFrame*, Int32)
   at FFmpeg.AutoGen.Example.VideoStreamDecoder.TryDecodeNextFrame(FFmpeg.AutoGen.AVFrame ByRef)
   at FFmpeg.AutoGen.Example.Program.DecodeAllFramesToImages(FFmpeg.AutoGen.AVHWDeviceType)
   at FFmpeg.AutoGen.Example.Program.Main(System.String[])


    


    The errors/messages

    


    ...
[h264 @ 0000013533bfb040] No decoder device for codec found
[h264 @ 0000013533bfb040] Failed setup for format dxva2_vld: hwaccel initialisation returned error.
[h264 @ 0000013533bfb040] Reinit context to 1920x1088, pix_fmt: yuv420p


    


    are reported in the call to

    


    error = ffmpeg.avcodec_receive_frame(_pCodecContext, _pFrame);


    


    The result (error) of ffmpeg.avcodec_receive_frame is 0. so there's no obvious error.
But the messages make it obviously that the hardware decoder can't handle the video.

    


    The exception is thrown in the call to ffmpeg.av_hwframe_transfer_data()

    


    if (_pCodecContext->hw_device_ctx != null)
{
    ffmpeg.av_hwframe_transfer_data(_receivedFrame, _pFrame, 0).ThrowExceptionIfError();
    frame = *_receivedFrame;
}


    


    My question is how can I determine this beforehand and not use the hardware decoder ? i.e. fall back to the software decoder.

    


    Edit :
I've found that _pCodecContext->hwaccel is null after the call to ffmpeg.avcodec_receive_frame(_pCodecContext, _pFrame); when for the Truck.ts video but for videos where the hardware decoder is working _pCodecContext->hwaccel is non-null.

    


    Updating the code to

    


    if (_pCodecContext->hw_device_ctx != null && _pCodecContext->hwaccel != null)
{
    ffmpeg.av_hwframe_transfer_data(_receivedFrame, _pFrame, 0).ThrowExceptionIfError();
    frame = *_receivedFrame;
}


    


    Seems to be enough to catch the error.
Is the right way to check that the hardware decoder is working or is there a better approach ?

    


  • 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.

  • FFMPEG fix broken stream headers ?

    4 janvier 2017, par Dominic

    I have a couple of video files (.tsv) from the same recording device. One file seems to have broken headers, ffmpeg reports

    "dimensions not set"

    and

    "Could not write header for output file #0 (incorrect codec
    parameters)",

    the other is ok. Is there any way to instruct ffmpeg (or any other software that may help) to use headers / video parameters from user options or from the other file ?

    ffmpeg output for broken video :

    H:\PVR\TV> ffmpeg.exe -i "TV(152420).TSV" -vcodec copy -acodec copy "d:\TVP(152420).mp4"
    ffmpeg version N-82966-g6993bb4 Copyright (c) 2000-2016 the FFmpeg developers
     built with gcc 5.4.0 (GCC)
     configuration: --enable-gpl --enable-version3 --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable
    -bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-li
    bbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enabl
    e-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-li
    bopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --en
    able-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable
    -libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zl
    ib
     libavutil      55. 43.100 / 55. 43.100
     libavcodec     57. 70.100 / 57. 70.100
     libavformat    57. 61.100 / 57. 61.100
     libavdevice    57.  2.100 / 57.  2.100
     libavfilter     6. 68.100 /  6. 68.100
     libswscale      4.  3.101 /  4.  3.101
     libswresample   2.  4.100 /  2.  4.100
     libpostproc    54.  2.100 / 54.  2.100
    [h264 @ 000000000058f040] non-existing SPS 0 referenced in buffering period
    [h264 @ 000000000058f040] SPS unavailable in decode_picture_timing
    [h264 @ 000000000058f040] non-existing PPS 0 referenced
    [h264 @ 000000000058f040] non-existing SPS 0 referenced in buffering period
    [h264 @ 000000000058f040] SPS unavailable in decode_picture_timing
    [h264 @ 000000000058f040] non-existing PPS 0 referenced
    [h264 @ 000000000058f040] decode_slice_header error
    [h264 @ 000000000058f040] no frame!

    /repeated a few times/

    [h264 @ 000000000058f040] non-existing SPS 0 referenced in buffering period
    [h264 @ 000000000058f040] SPS unavailable in decode_picture_timing
    [h264 @ 000000000058f040] non-existing PPS 0 referenced
    [h264 @ 000000000058f040] non-existing SPS 0 referenced in buffering period
    [h264 @ 000000000058f040] SPS unavailable in decode_picture_timing
    [h264 @ 000000000058f040] non-existing PPS 0 referenced
    [h264 @ 000000000058f040] decode_slice_header error
    [h264 @ 000000000058f040] no frame!
    [mpegts @ 000000000058a9a0] DTS discontinuity in stream 5: packet 14 with DTS 8279617306, packet 15 with DTS 8590342112
    [mpegts @ 000000000058a9a0] decoding for stream 0 failed
    [mpegts @ 000000000058a9a0] start time for stream 4 is not set in estimate_timings_from_pts
    [mpegts @ 000000000058a9a0] start time for stream 7 is not set in estimate_timings_from_pts
    [mpegts @ 000000000058a9a0] PES packet size mismatch
       Last message repeated 3 times
    [mpegts @ 000000000058a9a0] Could not find codec parameters for stream 0 (Video: h264 ([27][0][0][0] / 0x001B), none): u
    nspecified size
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    [mpegts @ 000000000058a9a0] Could not find codec parameters for stream 6 (Unknown: none ([5][0][0][0] / 0x0005)): unknow
    n codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, mpegts, from 'TVP(152420).TSV':
     Duration: 02:40:37.93, start: 91995.111844, bitrate: 3550 kb/s
     Program 1
       Stream #0:0[0x66]: Video: h264 ([27][0][0][0] / 0x001B), none, 50 fps, 50 tbr, 90k tbn, 180k tbc
       Stream #0:1[0x67](pol): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 160 kb/s
       Stream #0:2[0x69](pol): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
       Stream #0:3[0x68](qaa): Audio: eac3 (EAC3 / 0x33434145), 48000 Hz, 5.1(side), fltp, 256 kb/s
       Stream #0:4[0x6a](pol): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
       Stream #0:5[0x6c](aux): Audio: eac3 (EAC3 / 0x33434145), 48000 Hz, stereo, fltp, 96 kb/s (visual impaired)
       Stream #0:6[0x6b]: Unknown: none ([5][0][0][0] / 0x0005)
       Stream #0:7[0x6d](eng): Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
     Program 2
     Program 21
     Program 31
     Program 32
     Program 33
     Program 34
     Program 35
    [mp4 @ 00000000032cd500] dimensions not set
    Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
     Stream #0:3 -> #0:1 (copy)
       Last message repeated 1 times

    Meanwhile, the other file from the same transmission goes through similar "no frame" messages, to finish with successful stream identification.

    [h264 @ 00000000004cf040] non-existing SPS 0 referenced in buffering period
    [h264 @ 00000000004cf040] SPS unavailable in decode_picture_timing
    [h264 @ 00000000004cf040] non-existing PPS 0 referenced
    [h264 @ 00000000004cf040] non-existing SPS 0 referenced in buffering period
    [h264 @ 00000000004cf040] SPS unavailable in decode_picture_timing
    [h264 @ 00000000004cf040] non-existing PPS 0 referenced
    [h264 @ 00000000004cf040] decode_slice_header error
    [h264 @ 00000000004cf040] no frame!
    [mpegts @ 00000000004ca9a0] start time for stream 4 is not set in estimate_timings_from_pts
    [mpegts @ 00000000004ca9a0] start time for stream 7 is not set in estimate_timings_from_pts
    [mpegts @ 00000000004ca9a0] PES packet size mismatch
       Last message repeated 3 times
    [mpegts @ 00000000004ca9a0] Could not find codec parameters for stream 6 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, mpegts, from 'TV(152420)_001.TSV':
     Duration: 01:02:17.92, start: 6188.060000, bitrate: 5877 kb/s
     Program 1
       Metadata:
         service_name    : TV1
         service_provider: xxx
       Stream #0:0[0x66]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, top first), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn, 50 tbc
       Stream #0:1[0x67](pol): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 160 kb/s
       Stream #0:2[0x69](pol): Subtitle: dvb_teletext ([6][0][0][0] / x0006)
       Stream #0:3[0x68](qaa): Audio: eac3 (EAC3 / 0x33434145), 48000 Hz, 5.1(side), fltp, 256 kb/s
       Stream #0:4[0x6a](pol): Subtitle: dvb_subtitle ([6][0][0][0] / x0006)
       Stream #0:5[0x6c](aux): Audio: eac3 (EAC3 / 0x33434145), 48000 Hz, stereo, fltp, 96 kb/s (visual impaired)
       Stream #0:6[0x6b]: Unknown: none ([5][0][0][0] / 0x0005)
       Stream #0:7[0x6d](eng): Subtitle: dvb_subtitle ([6][0][0][0] / x0006)
     Program 2
       Metadata:
         service_name    : TV2
         service_provider: xxx
     Program 3
       Metadata:
         service_name    : TV3
         service_provider: xxx