Recherche avancée

Médias (1)

Mot : - Tags -/Christian Nold

Autres articles (104)

  • La gestion des forums

    3 novembre 2011, par

    Si les forums sont activés sur le site, les administrateurs ont la possibilité de les gérer depuis l’interface d’administration ou depuis l’article même dans le bloc de modification de l’article qui se trouve dans la navigation de la page.
    Accès à l’interface de modération des messages
    Lorsqu’il est identifié sur le site, l’administrateur peut procéder de deux manières pour gérer les forums.
    S’il souhaite modifier (modérer, déclarer comme SPAM un message) les forums d’un article particulier, il a à sa (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (9136)

  • Assembling frames into a video in Node.js using fluent-ffmpeg [closed]

    14 novembre 2024, par Andrei

    I have the original video and it's modified frames in a folder. Now I want to assemble the modified frames into a new video. I also want to take the audio from the original video and add it to the new video.

    


    My latest code is this using fluent-ffmpeg. But it's not working.

    


    await new Promise((resolve, reject) => {
  ffmpeg(path.join(processedFramesDir, "frame-%d.png"))
    .inputOptions(["-framerate 30", "-start_number 1"])
    .input(videoPath)
    .outputOptions([
      "-c:v",
      "libx264",
      "-c:a",
      "copy",
      "-shortest",
      "-r",
      "30",
      "-pix_fmt",
      "yuv420p",
    ])
    .outputOptions(["-map 0:v:0", "-map 1:a:0"])
    .save(outputVideoPath)
    .on("start", (commandLine) => {
      console.log("FFmpeg command: " + commandLine);
    })
    .on("stderr", (stderrLine) => {
      console.log("FFmpeg stderr: " + stderrLine);
    })
    .on("end", resolve)
    .on("error", (err, stdout, stderr) => {
      console.error("Error assembling video:", err);
      console.error("FFmpeg stderr:", stderr);
      reject(err);
    });
});


    


    I get this error even though the frames exist and they are valid pngs :&#xA;FFmpeg command: ffmpeg -framerate 30 -start_number 1 -i /tmp/video-processing-CyULOE/processedFrames/frame-%05d.png -i /tmp/video-processing-CyULOE/input.mp4 -y -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p -map 0:v:0 -map 1:a:0 /tmp/video-processing-CyULOE/output.mp4 2024-11-13 23:40:27 FFmpeg stderr: ffmpeg version 4.1.11-0&#x2B;deb10u1 Copyright (c) 2000-2023 the FFmpeg developers 2024-11-13 23:40:27 FFmpeg stderr:   built with gcc 8 (Debian 8.3.0-6) 2024-11-13 23:40:27 FFmpeg stderr:   configuration: --prefix=/usr --extra-version=0&#x2B;deb10u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared 2024-11-13 23:40:27 FFmpeg stderr:   libavutil      56. 22.100 / 56. 22.100 2024-11-13 23:40:27 FFmpeg stderr:   libavcodec     58. 35.100 / 58. 35.100 2024-11-13 23:40:27 FFmpeg stderr:   libavformat    58. 20.100 / 58. 20.100 2024-11-13 23:40:27 FFmpeg stderr:   libavdevice    58.  5.100 / 58.  5.100 2024-11-13 23:40:27 FFmpeg stderr:   libavfilter     7. 40.101 /  7. 40.101 2024-11-13 23:40:27 FFmpeg stderr:   libavresample   4.  0.  0 /  4.  0.  0 2024-11-13 23:40:27 FFmpeg stderr:   libswscale      5.  3.100 /  5.  3.100 2024-11-13 23:40:27 FFmpeg stderr:   libswresample   3.  3.100 /  3.  3.100 2024-11-13 23:40:27 FFmpeg stderr:   libpostproc    55.  3.100 / 55.  3.100 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646F8A20000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646C89F0000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x524946464EA10000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x5249464628A40000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646AAA30000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x524946467CA10000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646AAA30000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646BAA10000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646ACA30000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x5249464670A80000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646E8A60000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x524946469AA60000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x5249464672A90000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646B8A50000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646AAA80000. 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x52494646A0A70000. 2024-11-13 23:40:27 FFmpeg stderr:     Last message repeated 1 times 2024-11-13 23:40:27 FFmpeg stderr: [png @ 0x5630fb89a880] Invalid PNG signature 0x5249464646A80000. 2024-11-13 23:40:27 FFmpeg stderr: [image2 @ 0x5630fb898a40] decoding for stream 0 failed 2024-11-13 23:40:27 FFmpeg stderr: [image2 @ 0x5630fb898a40] Could not find codec parameters for stream 0 (Video: png, none(pc)): unspecified size 2024-11-13 23:40:27 FFmpeg stderr: Consider increasing the value for the &#x27;analyzeduration&#x27; and &#x27;probesize&#x27; options 2024-11-13 23:40:27 FFmpeg stderr: Input #0, image2, from &#x27;/tmp/video-processing-CyULOE/processedFrames/frame-%05d.png&#x27;: 2024-11-13 23:40:27 FFmpeg stderr:   Duration: 00:00:00.60, start: 0.000000, bitrate: N/A 2024-11-13 23:40:27 FFmpeg stderr:     Stream #0:0: Video: png, none(pc), 30 fps, 30 tbr, 30 tbn, 30 tbc 2024-11-13 23:40:28 FFmpeg stderr: Input #1, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;/tmp/video-processing-CyULOE/input.mp4&#x27;: 2024-11-13 23:40:28 FFmpeg stderr:   Metadata: 2024-11-13 23:40:28 FFmpeg stderr:     major_brand     : isom 2024-11-13 23:40:28 FFmpeg stderr:     minor_version   : 512 2024-11-13 23:40:28 FFmpeg stderr:     compatible_brands: isomiso2avc1mp41 2024-11-13 23:40:28 FFmpeg stderr:     encoder         : Lavf60.16.100 2024-11-13 23:40:28 FFmpeg stderr:   Duration: 00:00:00.62, start: 0.000000, bitrate: 4289 kb/s 2024-11-13 23:40:28 FFmpeg stderr:     Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 4395 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) 2024-11-13 23:40:28 FFmpeg stderr:     Metadata: 2024-11-13 23:40:28 FFmpeg stderr:       handler_name    : VideoHandler 2024-11-13 23:40:28 FFmpeg stderr:     Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default) 2024-11-13 23:40:28 FFmpeg stderr:     Metadata: 2024-11-13 23:40:28 FFmpeg stderr:       handler_name    : SoundHandler 2024-11-13 23:40:28 FFmpeg stderr: Stream mapping: 2024-11-13 23:40:28 FFmpeg stderr:   Stream #0:0 -> #0:0 (png (native) -> h264 (libx264)) 2024-11-13 23:40:28 FFmpeg stderr:   Stream #1:1 -> #0:1 (copy) 2024-11-13 23:40:28 FFmpeg stderr: Press [q] to stop, [?] for help 2024-11-13 23:40:28 FFmpeg stderr: [image2 @ 0x5630fb898a40] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8) 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb9b7700] Invalid PNG signature 0x52494646F8A20000. 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb988dc0] Invalid PNG signature 0x52494646C89F0000. 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba3edc0] Invalid PNG signature 0x524946464EA10000. 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba40600] Invalid PNG signature 0x5249464628A40000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb8c7900] Invalid PNG signature 0x52494646AAA30000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb9b7700] Invalid PNG signature 0x524946467CA10000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb988dc0] Invalid PNG signature 0x52494646AAA30000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba3edc0] Invalid PNG signature 0x52494646BAA10000. 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba40600] Invalid PNG signature 0x52494646ACA30000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr:     Last message repeated 1 times 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb8c7900] Invalid PNG signature 0x5249464670A80000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb9b7700] Invalid PNG signature 0x52494646E8A60000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb988dc0] Invalid PNG signature 0x524946469AA60000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba3edc0] Invalid PNG signature 0x5249464672A90000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba40600] Invalid PNG signature 0x52494646B8A50000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb8c7900] Invalid PNG signature 0x52494646AAA80000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb9b7700] Invalid PNG signature 0x52494646A0A70000. 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fb988dc0] Invalid PNG signature 0x52494646A0A70000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr: [png @ 0x5630fba3edc0] Invalid PNG signature 0x5249464646A80000. 2024-11-13 23:40:28 FFmpeg stderr: Error while decoding stream #0:0: Invalid data found when processing input 2024-11-13 23:40:28 FFmpeg stderr:     Last message repeated 4 times 2024-11-13 23:40:28 FFmpeg stderr: Cannot determine format of input stream 0:0 after EOF 2024-11-13 23:40:28 FFmpeg stderr: Error marking filters as finished 2024-11-13 23:40:28 FFmpeg stderr: Conversion failed! 2024-11-13 23:40:28 FFmpeg stderr:  2024-11-13 23:40:28 Error assembling video: Error: ffmpeg exited with code 1: Cannot determine format of input stream 0:0 after EOF 2024-11-13 23:40:28 Error marking filters as finished 2024-11-13 23:40:28 Conversion failed! 2024-11-13 23:40:28  2024-11-13 23:40:28     at ChildProcess.<anonymous> (/usr/src/app/node_modules/fluent-ffmpeg/lib/processor.js:180:22) 2024-11-13 23:40:28     at ChildProcess.emit (node:events:519:28) 2024-11-13 23:40:28     at ChildProcess._handle.onexit (node:internal/child_process:294:12)</anonymous>

    &#xA;

    The code used to

    &#xA;

    ffmpeg(videoPath) .screenshots({ folder: framesDir, filename: "frame-%i.png", size: "?x1080", count: 10, }) .on("end", resolve) .on("error", reject);&#xA;

    &#xA;

    The pngs are valid and displaying in windows photos viewer enter image description here

    &#xA;

  • Open Banking Security 101 : Is open banking safe ?

    3 décembre 2024, par Daniel Crough — Banking and Financial Services

    Open banking is changing the financial industry. Statista reports that open banking transactions hit $57 billion worldwide in 2023 and will likely reach $330 billion by 2027. According to ACI, global real-time payment (RTP) transactions are expected to exceed $575 billion by 2028.

    Open banking is changing how banking works, but is it safe ? And what are the data privacy and security implications for global financial service providers ?

    This post explains the essentials of open banking security and addresses critical data protection and compliance questions. We’ll explore how a privacy-first approach to data analytics can help you meet regulatory requirements, build customer trust and ultimately thrive in the open banking market while offering innovative financial products.

     

    Discover trends, strategies, and opportunities to balance compliance and competitiveness.

    What is open banking ?

    Open banking is a system that connects banks, authorised third-party providers and technology, empowering customers to securely share their financial data with other companies. At the same time, it unlocks access to more innovative and personalised financial products and services like spend management solutions, tailored budgeting apps and more convenient payment gateways. 

    With open banking, consumers have greater choice and control over their financial data, ultimately fostering a more competitive financial industry, supporting technological innovation and paving the way for a more customer-centric financial future.

    Imagine offering your clients a service that analyses spending habits across all accounts — no matter the institution — and automatically finds ways to save them money. Envision providing personalised financial advice tailored to individual needs or enabling customers to apply for a mortgage with just a few taps on their phone. That’s the power of open banking.

    Embracing this technology is an opportunity for banks and fintech companies to build new solutions for customers who are eager for a more transparent and personalised digital experience.

    How is open banking different from traditional banking ?

    In traditional banking, consumers’ financial data is locked away and siloed within each bank’s systems, accessible only to the bank and the account holder. While account holders could manually aggregate and share this data, the process is cumbersome and prone to errors.

    With open banking, users can choose what data to share and with whom, allowing trusted third-party providers to access their financial information directly from the source. 

    Side-by-side comparison between open banking and traditional banking showing the flow of financial information between the bank and the user with and without a third party.

    How does open banking work ?

    The technology that makes open banking possible is the application programming interface (API). Think of banking APIs as digital translators for different software systems ; instead of translating languages, they translate data and code.

    The bank creates and publishes APIs that provide secure access to specific types of customer data, like credit card transaction history and account balances. The open banking API acts like a friendly librarian, ready to assist apps in accessing the information they need in a secure and organised way.

    Third-party providers, like fintech companies, use these APIs to build their applications and services. Some tech companies also act as intermediaries between fintechs and banks to simplify connections to multiple APIs simultaneously.

    For example, banks like BBVA (Spain) and Capital One (USA) offer secure API platforms. Fintechs like Plaid and TrueLayer use those banking APIs as a bridge to users’ financial data. This bridge gives other service providers like Venmo, Robinhood and Coinbase access to customer data, allowing them to offer new payment gateways and investment tools that traditional banks don’t provide.

    Is open banking safe for global financial services ?

    Yes, open banking is designed from the ground up to be safe for global financial services.

    Open banking doesn’t make customer financial data publicly available. Instead, it uses a secure, regulated framework for sharing information. This framework relies on strong security measures and regulatory oversight to protect user data and ensure responsible access by authorised third-party providers.

    In the following sections, we’ll explore the key security features and banking regulations that make this technology safe and reliable.

    Regulatory compliance in open banking

    Regulatory oversight is a cornerstone of open banking security.

    In the UK and the EU, strict regulations govern how companies access and use customer data. The revised Payment Services Directive (PSD2) in Europe mandates strong customer authentication and secure communication, promoting a high level of security for open banking services.

    To offer open banking services, companies must register with their respective regulatory bodies and comply with all applicable data protection laws.

    For example, third-party service providers in the UK must be authorised by the Financial Conduct Authority (FCA) and listed on the Financial Services Register. Depending on the service they provide, they must get an Account Information Service Provider (AISP) or a Payment Initiation Service Provider (PISP) license.

    Similar regulations and registries exist across Europe, enforced by the European National Competent Authority, like BaFin in Germany and the ACPR in France.

    In the United States, open banking providers don’t require a special federal license. However, this will soon change, as the U.S. Consumer Financial Protection Bureau (CFPB) unveiled a series of rules on 22 October 2024 to establish a regulatory framework for open banking.

    These regulations ensure that only trusted providers can participate in the open banking ecosystem. Anyone can check if a company is a trusted provider on public databases like the Regulated Providers registry on openbanking.org.uk. While being registered doesn’t guarantee fair play, it adds a layer of safety for consumers and banks.

    Key open banking security features that make it safe for global financial services

    Open banking is built on a foundation of solid security measures. Let’s explore five key features that make it safe and reliable for financial institutions and their customers.

    List of the five most important features that make open banking safe for global finance

    Strong Customer Authentication (SCA)

    Strong Customer Authentication (SCA) is a security principle that protects against unauthorised access to user financial data. It’s a regulated and legally required form of multi-factor authentication (MFA) within the European Economic Area.

    SCA mandates that users verify their identity using at least two of the following three factors :

    • Something they know (a password, PIN, security question, etc.)
    • Something they have (a mobile phone, a hardware token or a bank card)
    • Something they are (a fingerprint, facial recognition or voice recognition)

    This type of authentication helps reduce the risk of fraud and unauthorised transactions.

    API security

    PSD2 regulations mandate that banks provide open APIs, giving consumers the right to use any third-party service provider for their online banking services. According to McKinsey research, this has led to a surge in API adoption within the banking sector, with the largest banks allocating 14% of their IT budget to APIs. 

    To ensure API security, banks and financial service providers implement several measures, including :

    • API gateways, which act as a central point of control for all API traffic, enforcing security policies and preventing unauthorised access
    • API keys and tokens to authenticate and authorise API requests (the equivalent of a library card for apps)
    • Rate limiting to prevent denial-of-service attacks by limiting the number of requests a third-party application can make within a specific timeframe
    • Regular security audits and penetration testing to identify and address potential vulnerabilities in the API infrastructure

    Data minimisation and purpose limitation

    Data minimisation and purpose limitation are fundamental principles of data protection that contribute significantly to open banking safety.

    Data minimisation means third parties will collect and process only the data necessary to provide their service. Purpose limitation requires them to use the collected data only for its original purpose.

    For example, a budgeting app that helps users track their spending only needs access to transaction history and account balances. It doesn’t need access to the user’s full transaction details, investment portfolio or loan applications.

    Limiting the data collected from individual banks significantly reduces the risk of potential misuse or exposure in a data breach.

    Encryption

    Encryption is a security method that protects data in transit and at rest. It scrambles data into an unreadable format, making it useless to anyone without the decryption key.

    In open banking, encryption protects users’ data as it travels between the bank and the third-party provider’s systems via the API. It also protects data stored on the bank’s and the provider’s servers. Encryption ensures that even if a breach occurs, user data remains confidential.

    Explicit consent

    In open banking, before a third-party provider can access user data, it must first inform the user what data it will pull and why. The customer must then give their explicit consent to the third party collecting and processing that data.

    This transparency and control are essential for building trust and ensuring customers feel safe using third-party services.

    But beyond that, from the bank’s perspective, explicit customer consent is also vital for compliance with GDPR and other data protection regulations. It can also help limit the bank’s liability in case of a data breach.

    Explicit consent goes beyond sharing financial data. It’s also part of new data privacy regulations around tracking user behaviour online. This is where an ethical web analytics solution like Matomo can be invaluable. Matomo fully complies with some of the world’s strictest privacy regulations, like GDPR, lGPD and HIPAA. With Matomo, you get peace of mind knowing you can continue gathering valuable insights to improve your services and user experience while respecting user privacy and adhering to regulations.

    Risks of open banking for global financial services

    While open banking offers significant benefits, it’s crucial to acknowledge the associated risks. Understanding these risks allows financial institutions to implement safeguards and protect themselves and their customers.

    List of the three key risks that banks should always keep in mind.

    Risk of data breaches

    By its nature, open banking is like adding more doors and windows to your house. It’s convenient but also gives burglars more ways to break in.

    Open banking increases what cybersecurity professionals call the “attack surface,” or the number of potential points of vulnerability for hackers to steal financial data.

    Data breaches are a serious threat to banks and financial institutions. According to IBM’s 2024 Cost of a Data Breach Report, each breach costs companies in the US an average of $4.88 million. Therefore, banks and fintechs must prioritise strong security measures and data protection protocols to mitigate these risks.

    Risk of third-party access

    By definition, open banking involves granting third-party providers access to customer financial information. This introduces a level of risk outside the bank’s direct control.

    Financial institutions must carefully vet third-party providers, ensuring they meet stringent security standards and comply with all relevant data protection regulations.

    Risk of user account takeover

    Open banking can increase the risk of user account takeover if adequate security measures are not in place. For example, if a malicious third-party provider gains unauthorised access to a user’s bank login details, they could take control of the user’s account and make fraudulent bank transactions.

    A proactive approach to security, continuous monitoring and a commitment to evolving best practices and security protocols are crucial for navigating the open banking landscape.

    Open banking and data analytics : A balancing act for financial institutions

    The additional data exchanged through open banking unveils deeper insights into customer behaviour and preferences. This data can fuel innovation, enabling the development of personalised products and services and improved risk management strategies.

    However, using this data responsibly requires a careful balancing act.

    Too much reliance on data without proper safeguards can erode trust and invite regulatory issues. The opposite can stifle innovation and limit the technology’s potential.

    Matomo Analytics derisks web and app environments by giving full control over what data is tracked and how it is stored. The platform prioritises user data privacy and security while providing valuable data and analytics that will be familiar to anyone who has used Google Analytics.

    Open banking, data privacy and AI

    The future of open banking is entangled with emerging technologies like artificial intelligence (AI) and machine learning. These technologies significantly enhance open banking analytics, personalise services, and automate financial tasks.

    Several banks, credit unions and financial service providers are already exploring AI’s potential in open banking. For example, HSBC developed the AI-enabled FX Prompt in 2023 to improve forex trading. The bank processed 823 million client API calls, many of which were open banking.

    However, using AI in open banking raises important data privacy considerations. As the American Bar Association highlights, balancing personalisation with responsible AI use is crucial for open banking’s future. Financial institutions must ensure that AI-driven solutions are developed and implemented ethically, respecting customer privacy and data protection.

    Conclusion

    Open banking presents a significant opportunity for innovation and growth in the financial services industry. While it’s important to acknowledge the associated risks, security measures like explicit customer consent, encryption and regulatory frameworks make open banking a safe and reliable system for banks and their clients.

    Financial service providers must adopt a multifaceted approach to data privacy, implementing privacy-centred solutions across all aspects of their business, from open banking to online services and web analytics.

    By prioritising data privacy and security, financial institutions can build customer trust, unlock the full potential of open banking and thrive in today’s changing financial environment.

  • How to resize dimensions of video through ffmpeg-python ?

    25 janvier, par kunambi

    I'm trying to resize a video file which a user has uploaded to Django, by using ffmpeg-python. The documentation isn't very easy to understand, so I've tried to cobble this together from various sources.

    &#xA;

    This method is run in a celery container, in order to not slow the experience for the user. The problem I'm facing is that I can't seem to resize the video file. I've tried two different approaches :

    &#xA;

    from django.db import models&#xA;from io import BytesIO&#xA;from myapp.models import MediaModel&#xA;&#xA;&#xA;def resize_video(mypk: str) -> None:&#xA;    instance = MediaModel.objects.get(pk=mypk)&#xA;    media_instance: models.FileField = instance.media&#xA;    media_output = "test.mp4"&#xA;    buffer = BytesIO()&#xA;&#xA;    for chunk in media_instance.chunks():&#xA;        buffer.write(chunk)&#xA;&#xA;    stream_video = ffmpeg.input("pipe:").video.filter("scale", 720, -1)  # resize to 720px width&#xA;    stream_audio = ffmpeg.input("pipe:").audio&#xA;    process = (&#xA;        ffmpeg.output(stream_video, stream_audio, media_output, acodec="aac")&#xA;        .overwrite_output()&#xA;        .run_async(pipe_stdin=True, quiet=True)&#xA;    )&#xA;    buffer.seek(0)&#xA;    process_out, process_err = process.communicate(input=buffer.getbuffer())&#xA;    # (pdb) process_out&#xA;    # b&#x27;&#x27;&#xA;&#xA;    # attempting to use `.concat` instead&#xA;    process2 = (&#xA;        ffmpeg.concat(stream_video, stream_audio, v=1, a=1)&#xA;        .output(media_output)&#xA;        .overwrite_output()&#xA;        .run_async(pipe_stdin=True, quiet=True)&#xA;    )&#xA;    buffer.seek(0)&#xA;    process2_out, process2_err = process2.communicate(input=buffer.getbuffer())&#xA;    # (pdb) process2_out&#xA;    # b&#x27;&#x27;&#xA;

    &#xA;

    As we can see, no matter which approach chosen, the output is an empty binary. The process_err and process2_err both generate the following message :

    &#xA;

    ffmpeg version N-111491-g31979127f8-20230717 Copyright (c) 2000-2023 the&#xA;FFmpeg developers&#xA;  built with gcc 13.1.0 (crosstool-NG 1.25.0.196_227d99d)&#xA;  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static&#xA;--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64&#xA;--target-os=mingw32 --enable-gpl --enable-version3 --disable-debug&#xA;--disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2&#xA;--enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp&#xA;--enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl&#xA;--disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib&#xA;--enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth&#xA;--enable-chromaprint --enable-libdav1d --enable-libdavs2&#xA;--disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r&#xA;--enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray&#xA;--enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist&#xA;--enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp&#xA;--enable-lv2 --enable-libvpl --enable-openal --enable-libopencore-amrnb&#xA;--enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg&#xA;--enable-libopenmpt --enable-librav1e --enable-librubberband&#xA;--enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt&#xA;--enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm&#xA;--disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc&#xA;--enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2&#xA;--enable-libxvid --enable-libzimg --enable-libzvbi&#xA;--extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags=&#xA;--extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp&#xA;--extra-version=20230717&#xA;  libavutil      58. 14.100 / 58. 14.100&#xA;  libavcodec     60. 22.100 / 60. 22.100&#xA;  libavformat    60. 10.100 / 60. 10.100&#xA;  libavdevice    60.  2.101 / 60.  2.101&#xA;  libavfilter     9.  8.102 /  9.  8.102&#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, mov,mp4,m4a,3gp,3g2,mj2, frompipe:&#x27;:\r\n"&#xA;  Metadata:&#xA;    major_brand     : mp42&#xA;    minor_version   : 0&#xA;    compatible_brands: mp42mp41&#xA;    creation_time   : 2020-11-10T15:01:09.000000Z&#xA;  Duration: 00:00:04.16, start: 0.000000, bitrate: N/A&#xA;  Stream #0:0[0x1](eng): Video: h264 (Main) (avc1 / 0x31637661),&#xA;yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 2649 kb/s, 25 fps, 25&#xA;tbr, 25k tbn (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-11-10T15:01:09.000000Z&#xA;      handler_name    : ?Mainconcept Video Media Handler&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : AVC Coding&#xA;  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,&#xA;stereo, fltp, 317 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-11-10T15:01:09.000000Z&#xA;      handler_name    : #Mainconcept MP4 Sound Media Handler&#xA;      vendor_id       : [0][0][0][0]&#xA;Stream mapping:&#xA;  Stream #0:0 (h264) -> scale:default (graph 0)&#xA;  scale:default (graph 0) -> Stream #0:0 (libx264)&#xA;  Stream #0:1 -> #0:1 (aac (native) -> aac (native))&#xA;[libx264 @ 00000243a23a1100] using SAR=1/1&#xA;[libx264 @ 00000243a23a1100] using cpu capabilities: MMX2 SSE2Fast SSSE3&#xA;SSE4.2 AVX FMA3 BMI2 AVX2&#xA;[libx264 @ 00000243a23a1100] profile High, level 3.0, 4:2:0, 8-bit&#xA;[libx264 @ 00000243a23a1100] 264 - core 164 - H.264/MPEG-4 AVC codec -&#xA;Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=1&#xA;ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00&#xA;mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11&#xA;fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1&#xA;sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0&#xA;constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1&#xA;weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40&#xA;intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0&#xA;qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00&#xA; "Output #0, mp4, toaa37f8d7685f4df9af85b1cdcd95997e.mp4&#x27;:\r\n"&#xA;  Metadata:&#xA;    major_brand     : mp42&#xA;    minor_version   : 0&#xA;    compatible_brands: mp42mp41&#xA;    encoder         : Lavf60.10.100&#xA;  Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv420p(tv, progressive),&#xA;800x450 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 12800 tbn&#xA;    Metadata:&#xA;      encoder         : Lavc60.22.100 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A&#xA;  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo,&#xA;fltp, 128 kb/s (default)&#xA;    Metadata:&#xA;      creation_time   : 2020-11-10T15:01:09.000000Z&#xA;      handler_name    : #Mainconcept MP4 Sound Media Handler&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Lavc60.22.100 aac&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A&#xA;speed=N/A    \r&#x27;&#xA;frame=   21 fps=0.0 q=28.0 size=       0kB time=00:00:02.75 bitrate=  &#xA;0.1kbits/s speed=4.75x    \r&#x27;&#xA;[out#0/mp4 @ 00000243a230bd80] video:91kB audio:67kB subtitle:0kB other&#xA;streams:0kB global headers:0kB muxing overhead: 2.838559%&#xA;frame=  104 fps=101 q=-1.0 Lsize=     162kB time=00:00:04.13 bitrate=&#xA;320.6kbits/s speed=4.02x    &#xA;[libx264 @ 00000243a23a1100] frame I:1     Avg QP:18.56  size:  2456&#xA;[libx264 @ 00000243a23a1100] frame P:33    Avg QP:16.86  size:  1552&#xA;[libx264 @ 00000243a23a1100] frame B:70    Avg QP:17.55  size:   553&#xA;[libx264 @ 00000243a23a1100] consecutive B-frames:  4.8% 11.5% 14.4%&#xA;69.2%&#xA;[libx264 @ 00000243a23a1100] mb I  I16..4: 17.3% 82.1%  0.6%&#xA;[libx264 @ 00000243a23a1100] mb P  I16..4:  5.9% 15.2%  0.4%  P16..4: 18.3% &#xA;0.9%  0.4%  0.0%  0.0%    skip:58.7%&#xA;[libx264 @ 00000243a23a1100] mb B  I16..4:  0.8%  0.3%  0.0%  B16..8: 15.4% &#xA;1.0%  0.0%  direct: 3.6%  skip:78.9%  L0:34.2% L1:64.0% BI: 1.7%&#xA;[libx264 @ 00000243a23a1100] 8x8 transform intra:68.2% inter:82.3%&#xA;[libx264 @ 00000243a23a1100] coded y,uvDC,uvAC intra: 4.2% 18.4% 1.2% inter:&#xA;1.0% 6.9% 0.0%&#xA;[libx264 @ 00000243a23a1100] i16 v,h,dc,p: 53% 25%  8% 14%&#xA;[libx264 @ 00000243a23a1100] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19%  6% 70%  1% &#xA;1%  1%  1%  0%  0%&#xA;[libx264 @ 00000243a23a1100] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 46% 21% 15%  2% &#xA;5%  4%  3%  3%  1%&#xA;[libx264 @ 00000243a23a1100] i8c dc,h,v,p: 71% 15% 13%  1%&#xA;[libx264 @ 00000243a23a1100] Weighted P-Frames: Y:30.3% UV:15.2%&#xA;[libx264 @ 00000243a23a1100] ref P L0: 46.7%  7.5% 34.6%  7.3%  3.9%&#xA;[libx264 @ 00000243a23a1100] ref B L0: 88.0% 10.5%  1.5%&#xA;[libx264 @ 00000243a23a1100] ref B L1: 98.1%  1.9%&#xA;[libx264 @ 00000243a23a1100] kb/s:177.73&#xA;[aac @ 00000243a23a2e00] Qavg: 1353.589&#xA;

    &#xA;

    I'm at a loss right now, would love any feedback/solution.

    &#xA;