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 (30)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

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

  • Création définitive du canal

    12 mars 2010, par

    Lorsque votre demande est validée, vous pouvez alors procéder à la création proprement dite du canal. Chaque canal est un site à part entière placé sous votre responsabilité. Les administrateurs de la plateforme n’y ont aucun accès.
    A la validation, vous recevez un email vous invitant donc à créer votre canal.
    Pour ce faire il vous suffit de vous rendre à son adresse, dans notre exemple "http://votre_sous_domaine.mediaspip.net".
    A ce moment là un mot de passe vous est demandé, il vous suffit d’y (...)

Sur d’autres sites (4631)

  • Protecting consumer privacy : How to ensure CCPA compliance

    18 août 2023, par Erin — CCPA, Privacy

    The California Consumer Privacy Act (CCPA) is a state law that enhances privacy rights and consumer protection for residents of California. 

    It grants consumers six rights, like the right to know what personal information is being collected about them by businesses and others. 

    CCPA also requires businesses to provide notice of data collection practices. Consumers can choose to opt out of the sale of their data. 

    In this article, we’ll learn more about the scope of CCPA, the penalties for non-compliance and how our web analytics tool, Matomo, can help you create a CCPA-compliant framework.

    What is the CCPA ? 

    CCPA was implemented on January 1, 2020. It ensures that businesses securely handle individuals’ personal information and respect their privacy in the digital ecosystem. 

    How does CCPA compliance add value

    CCPA addresses the growing concerns over privacy and data protection ; 40% of US consumers share that they’re worried about digital privacy. With the increasing amount of personal information being collected and shared by businesses, there was a need to establish regulations to provide individuals with more control and transparency over their data. 

    CCPA aims to protect consumer privacy rights and promote greater accountability from businesses when handling personal information.

    Scope of CCPA 

    The scope of CCPA includes for-profit businesses that collect personal information from California residents, regardless of where you run the business from.

    It defines three thresholds that determine the inclusion criteria for businesses subject to CCPA regulations. 

    Businesses need to abide by CCPA if they meet any of the three options :

    1. Revenue threshold : Have an annual gross revenue of over $25 million.
    2. Consumer threshold : Businesses that purchase, sell or distribute the personal information of 100,000 or more consumers, households or devices.
    3. Data threshold : Businesses that earn at least half of their revenue annually from selling the personal information of California residents.

    What are the six consumer rights under the CCPA ? 

    Here’s a short description of the six consumer rights. 

    The six rights of consumers under CCPA
    1. Right to know : Under this right, you can ask a business to disclose specific personal information they collect about you and the categories of sources of the information. You can also know the purpose of collection and to which third-party the business will disclose this info. This allows consumers to understand what information is being held and how it is used. You can request this info for free twice a year.
    2. Right to delete : Consumers can request the deletion of their personal information. Companies must comply with some exceptions.
    3. Right to opt-out : Consumers can deny the sale of their personal information. Companies must provide a link on their homepage for users to exercise this right. After you choose this, companies can’t sell your data unless you authorise them to do so later.
    4. Right to non-discrimination : Consumers cannot be discriminated against for exercising their CCPA rights. For instance, a company cannot charge different prices, provide a different quality of service or deny services.
    5. Right to correct : Consumers can request to correct inaccurate personal information.

    6. Right to limit use : Consumers can specify how they want the businesses to use their sensitive personal information. This includes social security numbers, financial account details, precise geolocation data or genetic data. Consumers can direct businesses to use this sensitive information only for specific purposes, such as providing the requested services.

    Penalties for CCPA non-compliance 

    52% of organisations have yet to adopt CCPA principles as of 2022. Non-compliance can attract penalties.

    Section 1798.155 of the CCPA states that any business that doesn’t comply with CCPA’s terms can face penalties based on the consumer’s private right to action. Consumers can directly take the company to the civil court and don’t need prosecutors’ interventions. 

    Businesses get a chance of 30 days to make amends for their actions. 

    If that’s also not possible, the business may receive a civil penalty of up to $2,500 per violation. Violations can be of any kind, even accidental. An intentional violation can attract a fine of $7,500. 

    Consumers can also initiate private lawsuits to claim damages that range from $100 to $750, or actual damages (whichever is higher), for each occurrence of their unredacted and unencrypted data being breached on a business’s server.

    CCPA vs. GDPR 

    Both CCPA and GDPR aim to enhance individuals’ control over their personal information and provide transparency about how their data is collected, used and shared. The comparison between the CCPA and GDPR is crucial in understanding the regulatory framework of data protection laws.

    Here’s how CCPA and GDPR differ :

    Scope

    • CCPA is for businesses that meet specific criteria and collect personal information from California residents. 
    • GDPR (General Data Protection Regulation) applies to businesses that process the personal data of citizens and residents of the European Union.

    Definition of personal information

    • CCPA includes personal information broadly, including identifiers such as IP addresses and households. Examples include name, email id, location and browsing history. However, it excludes HIPAA-protected medical data, clinical trial data and other personal information from government records.
    • GDPR covers any personal data relating to an identified or identifiable individual, excluding households. Examples include the phone number, email address and personal identification number. It excludes anonymous and deceased person’s data.
    Personal information definition under CCPA and GDPR

    Consent

    • Under the CCPA, consumers can opt out of the sale of their personal information.
    • GDPR states that organisations should obtain explicit consent from individuals for processing their personal data.

    Rights

    • CCPA grants the right to know what personal information is being collected and the right to request deletion of their personal information.
    • GDPR also gives individuals various rights, such as the right to access and rectify their personal data, the right to erasure (also known as the right to be forgotten) and also the right to data portability. 

    Enforcement

    • For CCPA, businesses may have to pay $7,500 for each violation. 
    • GDPR has stricter penalties for non-compliance, with fines of up to 4% of the global annual revenue of a company or €20 million, whichever is higher.

    A 5-step CCPA compliance framework 

    Here’s a simple framework you can follow to ensure compliance with CCPA. Alongside this, we’ll also share how Matomo can help. 

    Matomo is an open-source web analytics platform trusted by organisations like the United Nations, NASA and more. It provides valuable insights into website traffic, visitor behaviour and marketing effectiveness. More than 1 million websites and apps (approximately 1% of the internet !) use our solution, and it’s available in 50+ languages. Below, we’ll share how you can use Matomo to be CCPA compliant.

    1. Assess data

    First, familiarise yourself with the California Consumer Privacy Act and check your eligibility for CCPA compliance. 

    For example, as mentioned earlier, one threshold is : purchases, receives or sells the personal data of 100,000 or more individuals or households

    But how do you know if you have crossed 100K ? With Matomo ! 

    Go to last year’s calendar, select visitors, then go to locations and under the “Region” option, check for California. If you’ve crossed 100K visitors, you know you have to become CCPA compliant.

    View geolocation traffic details in Matomo

    Identify and assess the personal information you collect with Matomo.

    2. Evaluate privacy practices

    Review the current state of your privacy policies and practices. Conduct a thorough assessment of data sharing and third-party agreements. Then, update policies and procedures to align with CCPA requirements.

    For example, you can anonymise IP addresses with Matomo to ensure that user data collected for web analytics purposes cannot be used to trace back to specific individuals.

    Using Matomo to anonymize visitors' IP addresses

    If you have a consent management solution to honour user requests for data privacy, you can also integrate Matomo with it. 

    3. Communicate 

    Inform consumers about their CCPA rights and how you handle their data.

    Establish procedures for handling consumer requests and obtaining consent. For example, you can add an opt-out form on your website with Matomo. Or you can also use Matomo to disable cookies from your website.

    Screenshot of a command line disabling cookies

    Documenting your compliance efforts, including consumer requests and how you responded to them, is a good idea. Finally, educate staff on CCPA compliance and their responsibilities to work collaboratively.

    4. Review vendor contracts

    Assessing vendor contracts allows you to determine if they include necessary data processing agreements. You can also identify if vendors are sharing personal information with third parties, which could pose a compliance risk. Verify if vendors have adequate security measures in place to protect the personal data they handle.

    That’s why you can review and update agreements to include provisions for data protection, privacy and CCPA requirements.

    Establish procedures to monitor and review vendor compliance with CCPA regularly. This may include conducting audits, requesting certifications and implementing controls to mitigate risks associated with vendors handling personal data.

    5. Engage legal counsel

    Consider consulting with legal counsel to ensure complete understanding and compliance with CCPA regulations.

    Finally, stay updated on any changes or developments related to CCPA and adjust your compliance efforts accordingly.

    Matomo and CCPA compliance 

    There’s an increasing emphasis on privacy regulations like CCPA. Matomo offers a robust solution that allows businesses to be CCPA-compliant without sacrificing the ability to track and analyse crucial data.

    You can gain in-depth insights into user behaviour and website performance — all while prioritising data protection and privacy. 

    Request a demo or sign up for a free 21-day trial to get started with our powerful CCPA-compliant web analytics platform — no credit card required. 

    Disclaimer

    We are not lawyers and don’t claim to be. The information provided here is to help give an introduction to CCPA. We encourage every business and website to take data privacy seriously and discuss these issues with your lawyer if you have any concerns.

  • FFMPEG Pipeline Crash [closed]

    17 août 2023, par Badgio10177

    I instantiate an ffmpeg pipeline within C++. No frames get streamed to the RTSP server and the pipeline crashes unexpectedly.

    


    I have the following code :

    


    #include <iostream>&#xA;#include <typeinfo>&#xA;#include "opencvmex.hpp"&#xA;#include &#xA;#include &#xA;#include "mex.h"&#xA;#include &#xA;#include &#xA;#include  // Windows API for process enumeration&#xA;#include <opencv2></opencv2>core.hpp>&#xA;&#xA;// Global variables&#xA;FILE* openPipeLine = NULL;&#xA;&#xA;//////////////////////////////////////////////////////////////////////////////&#xA;// Exit function to execute when the mex function is cleared.&#xA;//////////////////////////////////////////////////////////////////////////////&#xA;void exitFcn()&#xA;{&#xA;    fflush(openPipeLine); // Clear out the pipeline.&#xA;    _pclose(openPipeLine);   //Close the pipeline.&#xA;}&#xA;&#xA;///////////////////////////////////////////////////////////////////////////&#xA;// Main entry point to a MEX function&#xA;///////////////////////////////////////////////////////////////////////////&#xA;void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[], int frameWidth, int frameHeight)&#xA;{&#xA;    // Use the appropriate namespace for OpenCV functions&#xA;    using namespace cv;&#xA;&#xA;    Ptr<mat> inputFrame = ocvMxArrayToImage_uint8(prhs[0], true);&#xA;    Mat processedFrame = *inputFrame;&#xA;&#xA;    // Check if FFMPEG process has been started&#xA;    if (!openPipeLine)&#xA;    {&#xA;        openPipeLine = _popen("ffmpeg -f rawvideo -r 10 -video_size 1280x720 -pixel_format bgr24 -i pipe: -vcodec libx264 -crf 25 -pix_fmt yuv420p -f rtsp rtsp://192.168.0.2:8554/mystream 2> log.txt", "wb");&#xA;    }&#xA;&#xA;    // Write the frame data to the pipeline&#xA;    fwrite(processedFrame.data, 1, frameWidth * frameHeight * 3, openPipeLine);&#xA;    mexAtExit(exitFcn);&#xA;}&#xA;&#xA;&#xA;&#xA;</mat></typeinfo></iostream>

    &#xA;

    The function is a Matlab Mex function. What is interesting is that there are certain times when the stream works and some times it just crashes. The log file for the ffmpeg process is the following :

    &#xA;

    ffmpeg version 2023-08-14-git-c704901324-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers&#xA;  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint&#xA;  libavutil      58. 16.101 / 58. 16.101&#xA;  libavcodec     60. 23.100 / 60. 23.100&#xA;  libavformat    60. 10.100 / 60. 10.100&#xA;  libavdevice    60.  2.101 / 60.  2.101&#xA;  libavfilter     9. 11.100 /  9. 11.100&#xA;  libswscale      7.  3.100 /  7.  3.100&#xA;  libswresample   4. 11.100 /  4. 11.100&#xA;  libpostproc    57.  2.100 / 57.  2.100&#xA;Input #0, rawvideo, from &#x27;pipe:&#x27;:&#xA;  Duration: N/A, start: 0.000000, bitrate: 221184 kb/s&#xA;  Stream #0:0: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;[libx264 @ 0000027964ad6300] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512&#xA;[libx264 @ 0000027964ad6300] profile High, level 3.1, 4:2:0, 8-bit&#xA;[libx264 @ 0000027964ad6300] 264 - core 164 r3107 a8b68eb - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=22 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=10 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=25.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00&#xA;Output #0, rtsp, to &#x27;rtsp://192.168.0.2:8554/mystream&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf60.10.100&#xA;  Stream #0:0: Video: h264, yuv420p(tv, progressive), 1280x720, q=2-31, 10 fps, 90k tbn&#xA;    Metadata:&#xA;      encoder         : Lavc60.23.100 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;[vost#0:0/libx264 @ 0000027964ad5f00] Error submitting a packet to the muxer: Broken pipe&#xA;[out#0/rtsp @ 0000027964abdf00] Error muxing a packet&#xA;frame=    1 fps=0.1 q=27.0 size=N/A time=-00:00:00.10 bitrate=N/A speed=N/A    &#xA;[out#0/rtsp @ 0000027964abdf00] video:146kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown&#xA;frame=    1 fps=0.0 q=-1.0 Lsize=N/A time=00:00:06.50 bitrate=N/A speed=0.32x    &#xA;[libx264 @ 0000027964ad6300] frame I:1     Avg QP:26.79  size:148574&#xA;[libx264 @ 0000027964ad6300] frame P:17    Avg QP:21.66  size: 23672&#xA;[libx264 @ 0000027964ad6300] frame B:50    Avg QP:28.20  size:  3276&#xA;[libx264 @ 0000027964ad6300] consecutive B-frames:  1.5%  0.0%  4.4% 94.1%&#xA;[libx264 @ 0000027964ad6300] mb I  I16..4:  1.1% 53.0% 45.9%&#xA;[libx264 @ 0000027964ad6300] mb P  I16..4:  1.8%  9.3%  1.2%  P16..4: 29.5% 10.2% 14.0%  0.0%  0.0%    skip:34.0%&#xA;[libx264 @ 0000027964ad6300] mb B  I16..4:  0.1%  0.5%  0.0%  B16..8: 21.1%  3.3%  1.3%  direct: 2.0%  skip:71.7%  L0:50.9% L1:46.2% BI: 2.9%&#xA;[libx264 @ 0000027964ad6300] 8x8 transform intra:68.9% inter:94.3%&#xA;[libx264 @ 0000027964ad6300] coded y,uvDC,uvAC intra: 78.9% 70.2% 26.1% inter: 10.9% 8.9% 1.7%&#xA;[libx264 @ 0000027964ad6300] i16 v,h,dc,p: 31% 36% 32%  1%&#xA;[libx264 @ 0000027964ad6300] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 16% 22% 40%  4%  2%  2%  3%  2% 10%&#xA;[libx264 @ 0000027964ad6300] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 32%  8%  4%  4%  4%  6%  4%  9%&#xA;[libx264 @ 0000027964ad6300] i8c dc,h,v,p: 35% 36% 24%  5%&#xA;[libx264 @ 0000027964ad6300] Weighted P-Frames: Y:0.0% UV:0.0%&#xA;[libx264 @ 0000027964ad6300] ref P L0: 60.0% 17.6%  9.3% 13.1%&#xA;[libx264 @ 0000027964ad6300] ref B L0: 73.1% 20.1%  6.8%&#xA;[libx264 @ 0000027964ad6300] ref B L1: 88.0% 12.0%&#xA;[libx264 @ 0000027964ad6300] kb/s:840.93&#xA;Conversion failed!&#xA;&#xA;

    &#xA;

    Are there any parameters in my pipeline that are causing the process to crash ?

    &#xA;

  • ffmpeg autorotate results in broken output when moving from cpu to gpu

    16 août 2023, par user2290269

    Given an input file with a Display Matrix :

    &#xA;

    ffprobe -show_format -show_streams -print_format json -i rotated.mov

    &#xA;

    Using CPU-transcoding is resulting in a correctly rotated output file and exitcode 0 :

    &#xA;

    ffmpeg -autorotate 1 -y -i rotated.mov -f mp4 -vf scale=-2:360 -c:v libx264 -b:v 800K cpu.mp4

    &#xA;

    Using GPU-transcoding is resulting in a incorretly rotated output file and exitcode 0 :

    &#xA;

    ffmpeg -hwaccel cuda -hwaccel_output_format cuda -autorotate 1 -y -i rotated.mov -f mp4 -vf scale_cuda=-2:360 -c:v h264_nvenc -b:v 800K gpu.mp4

    &#xA;

    See the Display Matrix rotation information.&#xA;The GPU-File plays upside down, the CPU-File plays correctly.

    &#xA;

    Looks like (the default -autoroatate 1) is silently ignored for GPU-based transcoding. automatic insertion of filters fails silently. exitcode is 0 for gpu, too. but the output is actually broken, because it is upside down in playback.

    &#xA;

    Same is true for input having other rotations than -180°.

    &#xA;

    One (bad) way to solve, use complex filters :&#xA;When using complex filter with hwupload_cuda, the autorotate-filters get added correctly automatically.

    &#xA;

    ffmpeg -y -i rotated.mov -f mp4 -vf hwupload_cuda=device=0,scale_cuda=-2:360 -c:v h264_nvenc -b:v 800K gpu-complexfilter.mp4

    &#xA;

    When going into scale_cuda directly there is an error message and exitcode !=0.

    &#xA;

    ffmpeg -y -loglevel debug -i rotated.mov -f mp4 -vf scale_cuda=-2:360 -c:v h264_nvenc -b:v 800K gpu-error.mp4

    &#xA;

    Impossible to convert between the formats supported by the filter &#x27;hflip&#x27; and the filter &#x27;auto_scale_0&#x27;&#xA;[vf#0:0 @ 0000026723318540] Error reinitializing filters!&#xA;Failed to inject frame into filter network: Function not implemented&#xA;Error while filtering: Function not implemented&#xA;

    &#xA;

    Using complex filters is not a good solution, because it disables automatic filter graph filter-adding and -mapping, which is very useful for e.g. -f HLS.

    &#xA;

    So is there a way to keep complex filters away and get correct output or exitcode !=0 indicating a broken output for any given input-file coming as a file-upload from the internet ?

    &#xA;

    e:\>ffprobe -show_format -show_streams -print_format json -i rotated.mov&#xA;ffprobe version 2023-08-14-git-c704901324-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers&#xA;  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint&#xA;  libavutil      58. 16.101 / 58. 16.101&#xA;  libavcodec     60. 23.100 / 60. 23.100&#xA;  libavformat    60. 10.100 / 60. 10.100&#xA;  libavdevice    60.  2.101 / 60.  2.101&#xA;  libavfilter     9. 11.100 /  9. 11.100&#xA;  libswscale      7.  3.100 /  7.  3.100&#xA;  libswresample   4. 11.100 /  4. 11.100&#xA;  libpostproc    57.  2.100 / 57.  2.100&#xA;{&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;rotated.mov&#x27;:&#xA;  Metadata:&#xA;    major_brand     : qt&#xA;    minor_version   : 512&#xA;    compatible_brands: qt&#xA;    encoder         : Lavf59.34.102&#xA;  Duration: 00:00:10.07, start: 0.000000, bitrate: 15190 kb/s&#xA;  Stream #0:0[0x1]: Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080, 15003 kb/s, 30 fps, 30 tbr, 19200 tbn (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;      vendor_id       : FFMP&#xA;      encoder         : H.264&#xA;    Side data:&#xA;      displaymatrix: rotation of -180.00 degrees&#xA;  Stream #0:1[0x2]: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 177 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;      vendor_id       : [0][0][0][0]&#xA;    "streams": [&#xA;        {&#xA;            "index": 0,&#xA;            "codec_name": "h264",&#xA;            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",&#xA;            "profile": "High",&#xA;            "codec_type": "video",&#xA;            "codec_tag_string": "avc1",&#xA;            "codec_tag": "0x31637661",&#xA;            "width": 1920,&#xA;            "height": 1080,&#xA;            "coded_width": 1920,&#xA;            "coded_height": 1080,&#xA;            "closed_captions": 0,&#xA;            "film_grain": 0,&#xA;            "has_b_frames": 1,&#xA;            "pix_fmt": "yuv420p",&#xA;            "level": 40,&#xA;            "color_range": "tv",&#xA;            "color_space": "bt709",&#xA;            "color_transfer": "bt709",&#xA;            "color_primaries": "bt709",&#xA;            "chroma_location": "left",&#xA;            "field_order": "progressive",&#xA;            "refs": 1,&#xA;            "is_avc": "true",&#xA;            "nal_length_size": "4",&#xA;            "id": "0x1",&#xA;            "r_frame_rate": "30/1",&#xA;            "avg_frame_rate": "30/1",&#xA;            "time_base": "1/19200",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 193280,&#xA;            "duration": "10.066667",&#xA;            "bit_rate": "15003313",&#xA;            "bits_per_raw_sample": "8",&#xA;            "nb_frames": "302",&#xA;            "extradata_size": 35,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "handler_name": "Core Media Video",&#xA;                "vendor_id": "FFMP",&#xA;                "encoder": "H.264"&#xA;            },&#xA;            "side_data_list": [&#xA;                {&#xA;                    "side_data_type": "Display Matrix",&#xA;                    "displaymatrix": "\n00000000:       -65536           0           0\n00000001:            0      -65536           0\n00000002:    125829120    70778880  1073741824\n",&#xA;                    "rotation": -180&#xA;                }&#xA;            ]&#xA;        },&#xA;        {&#xA;            "index": 1,&#xA;            "codec_name": "aac",&#xA;            "codec_long_name": "AAC (Advanced Audio Coding)",&#xA;            "profile": "LC",&#xA;            "codec_type": "audio",&#xA;            "codec_tag_string": "mp4a",&#xA;            "codec_tag": "0x6134706d",&#xA;            "sample_fmt": "fltp",&#xA;            "sample_rate": "44100",&#xA;            "channels": 2,&#xA;            "channel_layout": "stereo",&#xA;            "bits_per_sample": 0,&#xA;            "initial_padding": 0,&#xA;            "id": "0x2",&#xA;            "r_frame_rate": "0/0",&#xA;            "avg_frame_rate": "0/0",&#xA;            "time_base": "1/44100",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 441309,&#xA;            "duration": "10.007007",&#xA;            "bit_rate": "177895",&#xA;            "nb_frames": "433",&#xA;            "extradata_size": 2,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "handler_name": "Core Media Audio",&#xA;                "vendor_id": "[0][0][0][0]"&#xA;            }&#xA;        }&#xA;    ],&#xA;    "format": {&#xA;        "filename": "rotated.mov",&#xA;        "nb_streams": 2,&#xA;        "nb_programs": 0,&#xA;        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",&#xA;        "format_long_name": "QuickTime / MOV",&#xA;        "start_time": "0.000000",&#xA;        "duration": "10.066667",&#xA;        "size": "19115175",&#xA;        "bit_rate": "15190867",&#xA;        "probe_score": 100,&#xA;        "tags": {&#xA;            "major_brand": "qt  ",&#xA;            "minor_version": "512",&#xA;            "compatible_brands": "qt  ",&#xA;            "encoder": "Lavf59.34.102"&#xA;        }&#xA;    }&#xA;}&#xA;

    &#xA;

    E:\>ffprobe -show_format -show_streams -print_format json -i cpu.mp4&#xA;ffprobe version 2023-08-14-git-c704901324-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers&#xA;  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;  ...&#xA;{&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;cpu.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf60.10.100&#xA;  Duration: 00:00:10.10, start: 0.000000, bitrate: 850 kb/s&#xA;  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360, 713 kb/s, 30 fps, 30 tbr, 15360 tbn (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Lavc60.23.100 libx264&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;      vendor_id       : [0][0][0][0]&#xA;    "streams": [&#xA;        {&#xA;            "index": 0,&#xA;            "codec_name": "h264",&#xA;            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",&#xA;            "profile": "High",&#xA;            "codec_type": "video",&#xA;            "codec_tag_string": "avc1",&#xA;            "codec_tag": "0x31637661",&#xA;            "width": 640,&#xA;            "height": 360,&#xA;            "coded_width": 640,&#xA;            "coded_height": 360,&#xA;            "closed_captions": 0,&#xA;            "film_grain": 0,&#xA;            "has_b_frames": 2,&#xA;            "pix_fmt": "yuv420p",&#xA;            "level": 30,&#xA;            "color_range": "tv",&#xA;            "color_space": "bt709",&#xA;            "color_transfer": "bt709",&#xA;            "color_primaries": "bt709",&#xA;            "chroma_location": "left",&#xA;            "field_order": "progressive",&#xA;            "refs": 1,&#xA;            "is_avc": "true",&#xA;            "nal_length_size": "4",&#xA;            "id": "0x1",&#xA;            "r_frame_rate": "30/1",&#xA;            "avg_frame_rate": "30/1",&#xA;            "time_base": "1/15360",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 155136,&#xA;            "duration": "10.100000",&#xA;            "bit_rate": "713885",&#xA;            "bits_per_raw_sample": "8",&#xA;            "nb_frames": "303",&#xA;            "extradata_size": 49,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "language": "und",&#xA;                "handler_name": "Core Media Video",&#xA;                "vendor_id": "[0][0][0][0]",&#xA;                "encoder": "Lavc60.23.100 libx264"&#xA;            }&#xA;        },&#xA;        {&#xA;            "index": 1,&#xA;            "codec_name": "aac",&#xA;            "codec_long_name": "AAC (Advanced Audio Coding)",&#xA;            "profile": "LC",&#xA;            "codec_type": "audio",&#xA;            "codec_tag_string": "mp4a",&#xA;            "codec_tag": "0x6134706d",&#xA;            "sample_fmt": "fltp",&#xA;            "sample_rate": "44100",&#xA;            "channels": 2,&#xA;            "channel_layout": "stereo",&#xA;            "bits_per_sample": 0,&#xA;            "initial_padding": 0,&#xA;            "id": "0x2",&#xA;            "r_frame_rate": "0/0",&#xA;            "avg_frame_rate": "0/0",&#xA;            "time_base": "1/44100",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 441265,&#xA;            "duration": "10.006009",&#xA;            "bit_rate": "127739",&#xA;            "nb_frames": "432",&#xA;            "extradata_size": 5,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "language": "und",&#xA;                "handler_name": "Core Media Audio",&#xA;                "vendor_id": "[0][0][0][0]"&#xA;            }&#xA;        }&#xA;    ],&#xA;    "format": {&#xA;        "filename": "cpu.mp4",&#xA;        "nb_streams": 2,&#xA;        "nb_programs": 0,&#xA;        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",&#xA;        "format_long_name": "QuickTime / MOV",&#xA;        "start_time": "0.000000",&#xA;        "duration": "10.100000",&#xA;        "size": "1073806",&#xA;        "bit_rate": "850539",&#xA;        "probe_score": 100,&#xA;        "tags": {&#xA;            "major_brand": "isom",&#xA;            "minor_version": "512",&#xA;            "compatible_brands": "isomiso2avc1mp41",&#xA;            "encoder": "Lavf60.10.100"&#xA;        }&#xA;    }&#xA;}&#xA;

    &#xA;

    E:\>ffprobe -show_format -show_streams -print_format json -i gpu.mp4&#xA;ffprobe version 2023-08-14-git-c704901324-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers&#xA;  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;...&#xA;{&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;gpu.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf60.10.100&#xA;  Duration: 00:00:10.10, start: 0.000000, bitrate: 935 kb/s&#xA;  Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 799 kb/s, 30 fps, 30 tbr, 15360 tbn (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Lavc60.23.100 h264_nvenc&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;      vendor_id       : [0][0][0][0]&#xA;    "streams": [&#xA;        {&#xA;            "index": 0,&#xA;            "codec_name": "h264",&#xA;            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",&#xA;            "profile": "Main",&#xA;            "codec_type": "video",&#xA;            "codec_tag_string": "avc1",&#xA;            "codec_tag": "0x31637661",&#xA;            "width": 640,&#xA;            "height": 360,&#xA;            "coded_width": 640,&#xA;            "coded_height": 360,&#xA;            "closed_captions": 0,&#xA;            "film_grain": 0,&#xA;            "has_b_frames": 2,&#xA;            "sample_aspect_ratio": "1:1",&#xA;            "display_aspect_ratio": "16:9",&#xA;            "pix_fmt": "yuv420p",&#xA;            "level": 30,&#xA;            "color_range": "tv",&#xA;            "color_space": "bt709",&#xA;            "color_transfer": "bt709",&#xA;            "color_primaries": "bt709",&#xA;            "chroma_location": "left",&#xA;            "field_order": "progressive",&#xA;            "refs": 1,&#xA;            "is_avc": "true",&#xA;            "nal_length_size": "4",&#xA;            "id": "0x1",&#xA;            "r_frame_rate": "30/1",&#xA;            "avg_frame_rate": "30/1",&#xA;            "time_base": "1/15360",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 155136,&#xA;            "duration": "10.100000",&#xA;            "bit_rate": "799210",&#xA;            "bits_per_raw_sample": "8",&#xA;            "nb_frames": "303",&#xA;            "extradata_size": 53,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "language": "und",&#xA;                "handler_name": "Core Media Video",&#xA;                "vendor_id": "[0][0][0][0]",&#xA;                "encoder": "Lavc60.23.100 h264_nvenc"&#xA;            }&#xA;        },&#xA;        {&#xA;            "index": 1,&#xA;            "codec_name": "aac",&#xA;            "codec_long_name": "AAC (Advanced Audio Coding)",&#xA;            "profile": "LC",&#xA;            "codec_type": "audio",&#xA;            "codec_tag_string": "mp4a",&#xA;            "codec_tag": "0x6134706d",&#xA;            "sample_fmt": "fltp",&#xA;            "sample_rate": "44100",&#xA;            "channels": 2,&#xA;            "channel_layout": "stereo",&#xA;            "bits_per_sample": 0,&#xA;            "initial_padding": 0,&#xA;            "id": "0x2",&#xA;            "r_frame_rate": "0/0",&#xA;            "avg_frame_rate": "0/0",&#xA;            "time_base": "1/44100",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 441265,&#xA;            "duration": "10.006009",&#xA;            "bit_rate": "127739",&#xA;            "nb_frames": "432",&#xA;            "extradata_size": 5,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "language": "und",&#xA;                "handler_name": "Core Media Audio",&#xA;                "vendor_id": "[0][0][0][0]"&#xA;            }&#xA;        }&#xA;    ],&#xA;    "format": {&#xA;        "filename": "gpu.mp4",&#xA;        "nb_streams": 2,&#xA;        "nb_programs": 0,&#xA;        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",&#xA;        "format_long_name": "QuickTime / MOV",&#xA;        "start_time": "0.000000",&#xA;        "duration": "10.100000",&#xA;        "size": "1181528",&#xA;        "bit_rate": "935863",&#xA;        "probe_score": 100,&#xA;        "tags": {&#xA;            "major_brand": "isom",&#xA;            "minor_version": "512",&#xA;            "compatible_brands": "isomiso2avc1mp41",&#xA;            "encoder": "Lavf60.10.100"&#xA;        }&#xA;    }&#xA;}&#xA;

    &#xA;

    E:\>ffprobe -show_format -show_streams -print_format json -i gpu-complexfilter.mp4&#xA;ffprobe version 2023-08-14-git-c704901324-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers&#xA;  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)&#xA;...&#xA;{&#xA;Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;gpu-complexfilter.mp4&#x27;:&#xA;  Metadata:&#xA;    major_brand     : isom&#xA;    minor_version   : 512&#xA;    compatible_brands: isomiso2avc1mp41&#xA;    encoder         : Lavf60.10.100&#xA;  Duration: 00:00:10.10, start: 0.000000, bitrate: 934 kb/s&#xA;  Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 798 kb/s, 30 fps, 30 tbr, 15360 tbn (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Video&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Lavc60.23.100 h264_nvenc&#xA;  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)&#xA;    Metadata:&#xA;      handler_name    : Core Media Audio&#xA;      vendor_id       : [0][0][0][0]&#xA;    "streams": [&#xA;        {&#xA;            "index": 0,&#xA;            "codec_name": "h264",&#xA;            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",&#xA;            "profile": "Main",&#xA;            "codec_type": "video",&#xA;            "codec_tag_string": "avc1",&#xA;            "codec_tag": "0x31637661",&#xA;            "width": 640,&#xA;            "height": 360,&#xA;            "coded_width": 640,&#xA;            "coded_height": 360,&#xA;            "closed_captions": 0,&#xA;            "film_grain": 0,&#xA;            "has_b_frames": 2,&#xA;            "sample_aspect_ratio": "1:1",&#xA;            "display_aspect_ratio": "16:9",&#xA;            "pix_fmt": "yuv420p",&#xA;            "level": 30,&#xA;            "color_range": "tv",&#xA;            "color_space": "bt709",&#xA;            "color_transfer": "bt709",&#xA;            "color_primaries": "bt709",&#xA;            "chroma_location": "left",&#xA;            "field_order": "progressive",&#xA;            "refs": 1,&#xA;            "is_avc": "true",&#xA;            "nal_length_size": "4",&#xA;            "id": "0x1",&#xA;            "r_frame_rate": "30/1",&#xA;            "avg_frame_rate": "30/1",&#xA;            "time_base": "1/15360",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 155136,&#xA;            "duration": "10.100000",&#xA;            "bit_rate": "798059",&#xA;            "bits_per_raw_sample": "8",&#xA;            "nb_frames": "303",&#xA;            "extradata_size": 53,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "language": "und",&#xA;                "handler_name": "Core Media Video",&#xA;                "vendor_id": "[0][0][0][0]",&#xA;                "encoder": "Lavc60.23.100 h264_nvenc"&#xA;            }&#xA;        },&#xA;        {&#xA;            "index": 1,&#xA;            "codec_name": "aac",&#xA;            "codec_long_name": "AAC (Advanced Audio Coding)",&#xA;            "profile": "LC",&#xA;            "codec_type": "audio",&#xA;            "codec_tag_string": "mp4a",&#xA;            "codec_tag": "0x6134706d",&#xA;            "sample_fmt": "fltp",&#xA;            "sample_rate": "44100",&#xA;            "channels": 2,&#xA;            "channel_layout": "stereo",&#xA;            "bits_per_sample": 0,&#xA;            "initial_padding": 0,&#xA;            "id": "0x2",&#xA;            "r_frame_rate": "0/0",&#xA;            "avg_frame_rate": "0/0",&#xA;            "time_base": "1/44100",&#xA;            "start_pts": 0,&#xA;            "start_time": "0.000000",&#xA;            "duration_ts": 441265,&#xA;            "duration": "10.006009",&#xA;            "bit_rate": "127739",&#xA;            "nb_frames": "432",&#xA;            "extradata_size": 5,&#xA;            "disposition": {&#xA;                "default": 1,&#xA;                "dub": 0,&#xA;                "original": 0,&#xA;                "comment": 0,&#xA;                "lyrics": 0,&#xA;                "karaoke": 0,&#xA;                "forced": 0,&#xA;                "hearing_impaired": 0,&#xA;                "visual_impaired": 0,&#xA;                "clean_effects": 0,&#xA;                "attached_pic": 0,&#xA;                "timed_thumbnails": 0,&#xA;                "captions": 0,&#xA;                "descriptions": 0,&#xA;                "metadata": 0,&#xA;                "dependent": 0,&#xA;                "still_image": 0&#xA;            },&#xA;            "tags": {&#xA;                "language": "und",&#xA;                "handler_name": "Core Media Audio",&#xA;                "vendor_id": "[0][0][0][0]"&#xA;            }&#xA;        }&#xA;    ],&#xA;    "format": {&#xA;        "filename": "gpu-complexfilter.mp4",&#xA;        "nb_streams": 2,&#xA;        "nb_programs": 0,&#xA;        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",&#xA;        "format_long_name": "QuickTime / MOV",&#xA;        "start_time": "0.000000",&#xA;        "duration": "10.100000",&#xA;        "size": "1180075",&#xA;        "bit_rate": "934712",&#xA;        "probe_score": 100,&#xA;        "tags": {&#xA;            "major_brand": "isom",&#xA;            "minor_version": "512",&#xA;            "compatible_brands": "isomiso2avc1mp41",&#xA;            "encoder": "Lavf60.10.100"&#xA;        }&#xA;    }&#xA;}&#xA;

    &#xA;