Recherche avancée

Médias (91)

Autres articles (97)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

Sur d’autres sites (8308)

  • What is Behavioural Segmentation and Why is it Important ?

    28 septembre 2023, par Erin — Analytics Tips

    Amidst the dynamic landscape of web analytics, understanding customers has grown increasingly vital for businesses to thrive. While traditional demographic-focused strategies possess merit, they need to uncover the nuanced intricacies of individual online behaviours and preferences. As customer expectations evolve in the digital realm, enterprises must recalibrate their approaches to remain relevant and cultivate enduring digital relationships.

    In this context, the surge of technology and advanced data analysis ushers in a marketing revolution : behavioural segmentation. Businesses can unearth invaluable insights by meticulously scrutinising user actions, preferences and online interactions. These insights lay the foundation for precisely honed, high-performing, personalised campaigns. The era dominated by blanket, catch-all marketing strategies is yielding to an era of surgical precision and tailored engagement. 

    While the insights from user behaviours empower businesses to optimise customer experiences, it’s essential to strike a delicate balance between personalisation and respecting user privacy. Ethical use of behavioural data ensures that the power of segmentation is wielded responsibly and in compliance, safeguarding user trust while enabling businesses to thrive in the digital age.

    What is behavioural segmentation ?

    Behavioural segmentation is a crucial concept in web analytics and marketing. It involves categorising individuals or groups of users based on their online behaviour, actions and interactions with a website. This segmentation method focuses on understanding how users engage with a website, their preferences and their responses to various stimuli. Behavioural segmentation classifies users into distinct segments based on their online activities, such as the pages they visit, the products they view, the actions they take and the time they spend on a site.

    Behavioural segmentation plays a pivotal role in web analytics for several reasons :

    1. Enhanced personalisation :

    Understanding user behaviour enables businesses to personalise online experiences. This aids with delivering tailored content and recommendations to boost conversion, customer loyalty and customer satisfaction.

    2. Improved user experience :

    Behavioural segmentation optimises user interfaces (UI) and navigation by identifying user paths and pain points, enhancing the level of engagement and retention.

    3. Targeted marketing :

    Behavioural segmentation enhances marketing efficiency by tailoring campaigns to user behaviour. This increases the likelihood of interest in specific products or services.

    4. Conversion rate optimisation :

    Analysing behavioural data reveals factors influencing user decisions, enabling website optimisation for a streamlined purchasing process and higher conversion rates.

    5. Data-driven decision-making :

    Behavioural segmentation empowers data-driven decisions. It identifies trends, behavioural patterns and emerging opportunities, facilitating adaptation to changing user preferences and market dynamics.

    6. Ethical considerations :

    Behavioural segmentation provides valuable insights but raises ethical concerns. User data collection and use must prioritise transparency, privacy and responsible handling to protect individuals’ rights.

    The significance of ethical behavioural segmentation will be explored more deeply in a later section, where we will delve into the ethical considerations and best practices for collecting, storing and utilising behavioural data in web analytics. It’s essential to strike a balance between harnessing the power of behavioural segmentation for business benefits and safeguarding user privacy and data rights in the digital age.

    A woman surrounded by doors shaped like heads of different

    Different types of behavioural segments with examples

    1. Visit-based segments : These segments hinge on users’ visit patterns. Analyse visit patterns, compare first-time visitors to returning ones, or compare users landing on specific pages to those landing on others.
      • Example : The real estate website Zillow can analyse how first-time visitors and returning users behave differently. By understanding these patterns, Zillow can customise its website for each group. For example, they can highlight featured listings and provide navigation tips for first-time visitors while offering personalised recommendations and saved search options for returning users. This could enhance user satisfaction and boost the chances of conversion.
    2. Interaction-based segments : Segments can be created based on user interactions like special events or goals completed on the site.
      • Example : Airbnb might use this to understand if users who successfully book accommodations exhibit different behaviours than those who don’t. This insight could guide refinements in the booking process for improved conversion rates.
    3. Campaign-based segments : Beyond tracking visit numbers, delve into usage differences of visitors from specific sources or ad campaigns for deeper insights.
      • Example : Nike might analyse user purchase behaviour from various traffic sources (referral websites, organic, direct, social media and ads). This informs marketing segmentation adjustments, focusing on high-performance channels. It also customises the website experience for different traffic sources, optimising content, promotions and navigation. This data-driven approach could boost user experiences and maximise marketing impact for improved brand engagement and sales conversions.
    4. Ecommerce segments : Separate users based on purchases, even examining the frequency of visits linked to specific products. Segment heavy users versus light users. This helps uncover diverse customer types and browsing behaviours.
      • Example : Amazon could create segments to differentiate between visitors who made purchases and those who didn’t. This segmentation could reveal distinct usage patterns and preferences, aiding Amazon in tailoring its recommendations and product offerings.
    5. Demographic segments : Build segments based on browser language or geographic location, for instance, to comprehend how user attributes influence site interactions.
      • Example : Netflix can create user segments based on demographic factors like geographic location to gain insight into how a visitor’s location can influence content preferences and viewing behaviour. This approach could allow for a more personalised experience.
    6. Technographic segments : Segment users by devices or browsers, revealing variations in site experience and potential platform-specific issues or user attitudes.
      • Example : Google could create segments based on users’ devices (e.g., mobile, desktop) to identify potential issues in rendering its search results. This information could be used to guide Google in providing consistent experiences regardless of device.
    A group of consumers split into different segments based on their behaviour

    The importance of ethical behavioural segmentation

    Respecting user privacy and data protection is crucial. Matomo offers features that align with ethical segmentation practices. These include :

    • Anonymization : Matomo allows for data anonymization, safeguarding individual identities while providing valuable insights.
    • GDPR compliance : Matomo is GDPR compliant, ensuring that user data is handled following European data protection regulations.
    • Data retention and deletion : Matomo enables businesses to set data retention policies and delete user data when it’s no longer needed, reducing the risk of data misuse.
    • Secured data handling : Matomo employs robust security measures to protect user data, reducing the risk of data breaches.

    Real-world examples of ethical behavioural segmentation :

    1. Content publishing : A leading news website could utilise data anonymization tools to ethically monitor user engagement. This approach allows them to optimise content delivery based on reader preferences while ensuring the anonymity and privacy of their target audience.
    2. Non-profit organisations : A charity organisation could embrace granular user control features. This could be used to empower its donors to manage their data preferences, building trust and loyalty among supporters by giving them control over their personal information.
    Person in a suit holding a red funnel that has data flowing through it into a file

    Examples of effective behavioural segmentation

    Companies are constantly using behavioural insights to engage their audiences effectively. In this section, we’ll delve into real-world examples showcasing how top companies use behavioural segmentation to enhance their marketing efforts.

    A woman standing in front of a pie chart pointing to the top right-hand section of customers in that segment
    1. Coca-Cola’s behavioural insights for marketing strategy : Coca-Cola employs behavioural segmentation to evaluate its advertising campaigns. Through analysing user engagement across TV commercials, social media promotions and influencer partnerships, Coca-Cola’s marketing team can discover that video ads shared by influencers generate the highest ROI and web traffic.

      This insight guides the reallocation of resources, leading to increased sales and a more effective advertising strategy.

    2. eBay’s custom conversion approach : eBay excels in conversion optimisation through behavioural segmentation. When users abandon carts, eBay’s dynamic system sends personalised email reminders featuring abandoned items and related recommendations tailored to user interests and past purchase decisions.

      This strategy revives sales, elevates conversion rates and sparks engagement. eBay’s adeptness in leveraging behavioural insights transforms user experience, steering a customer journey toward conversion.

    3. Sephora’s data-driven conversion enhancement : Data analysts can use Sephora’s behavioural segmentation strategy to fuel revenue growth through meticulous data analysis. By identifying a dedicated subset of loyal customers who exhibit a consistent preference for premium skincare products, data analysts enable Sephora to customise loyalty programs.

      These personalised rewards programs provide exclusive discounts and early access to luxury skincare releases, resulting in heightened customer engagement and loyalty. The data-driven precision of this approach directly contributes to amplified revenue from this specific customer segment.

    Examples of the do’s and don’ts of behavioural segmentation 

    Happy woman surrounded by icons of things and activities she enjoys

    Behavioural segmentation is a powerful marketing and data analysis tool, but its success hinges on ethical and responsible practices. In this section, we will explore real-world examples of the do’s and don’ts of behavioural segmentation, highlighting companies that have excelled in their approach and those that have faced challenges due to lapses in ethical considerations.

    Do’s of behavioural segmentation :

    • Personalised messaging :
      • Example : Spotify
        • Spotify’s success lies in its ability to use behavioural data to curate personalised playlists and user recommendations, enhancing its music streaming experience.
    • Transparency :
      • Example : Basecamp
        • Basecamp’s transparency in sharing how user data is used fosters trust. They openly communicate data practices, ensuring users are informed and comfortable.
    • Anonymization
      • Example : Matomo’s anonymization features
        • Matomo employs anonymization features to protect user identities while providing valuable insights, setting a standard for responsible data handling.
    • Purpose limitation :
      • Example : Proton Mail
        • Proton Mail strictly limits the use of user data to email-related purposes, showcasing the importance of purpose-driven data practices.
    • Dynamic content delivery : 
      • Example : LinkedIn
        • LinkedIn uses behavioural segmentation to dynamically deliver job recommendations, showcasing the potential for relevant content delivery.
    • Data security :
      • Example : Apple
        • Apple’s stringent data security measures protect user information, setting a high bar for safeguarding sensitive data.
    • Adherence to regulatory compliance : 
      • Example : Matomo’s regulatory compliance features
        • Matomo’s regulatory compliance features ensure that businesses using the platform adhere to data protection regulations, further promoting responsible data usage.

    Don’ts of behavioural segmentation :

    • Ignoring changing regulations
      • Example : Equifax
        • Equifax faced major repercussions for neglecting evolving regulations, resulting in a data breach that exposed the sensitive information of millions.
    • Sensitive attributes
      • Example : Twitter
        • Twitter faced criticism for allowing advertisers to target users based on sensitive attributes, sparking concerns about user privacy and data ethics.
    • Data sharing without consent
      • Example : Meta & Cambridge Analytica
        • The Cambridge Analytica scandal involving Meta (formerly Facebook) revealed the consequences of sharing user data without clear consent, leading to a breach of trust.
    • Lack of control
      • Example : Uber
        • Uber faced backlash for its poor data security practices and a lack of control over user data, resulting in a data breach and compromised user information.
    • Don’t be creepy with invasive personalisation
      • Example : Offer Moment
        • Offer Moment’s overly invasive personalisation tactics crossed ethical boundaries, unsettling users and eroding trust.

    These examples are valuable lessons, emphasising the importance of ethical and responsible behavioural segmentation practices to maintain user trust and regulatory compliance in an increasingly data-driven world.

    Continue the conversation

    Diving into customer behaviours, preferences and interactions empowers businesses to forge meaningful connections with their target audience through targeted marketing segmentation strategies. This approach drives growth and fosters exceptional customer experiences, as evident from the various common examples spanning diverse industries.

    In the realm of ethical behavioural segmentation and regulatory compliance, Matomo is a trusted partner. Committed to safeguarding user privacy and data integrity, our advanced web analytics solution empowers your business to harness the power of behavioral segmentation, all while upholding the highest standards of compliance with stringent privacy regulations.

    To gain deeper insight into your visitors and execute impactful marketing campaigns, explore how Matomo can elevate your efforts. Try Matomo free for 21-days, no credit card required. 

  • FFMPEG error submitting a packet to the muxer

    27 juillet 2024, par Badgio10177

    I am attempting to stream video frames to a RTSP server using FFMPEG. I instantiate an ffmpeg pipeline in c++. There are times when the process works perfectly and other times I get the error Error submitting a packet to the muxer : Broken pipe. Error muxing a packet. What uis strange is that there are times when the stream works and times when it does not which leads me to believe that the FFMPEG parameters that I set are not necessarily incorrect.

    


    I am using a mex function within MATLAB to take in a frame and stream it.

    


    // Global variables&#xA;FILE* openPipeLine = NULL;&#xA;&#xA;void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[], int frameWidth, int frameHeight)&#xA;{&#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 -report -f rawvideo -r 10 -video_size 1280x720 -pixel_format bgr24 -i pipe: -vcodec libx264 -pix_fmt yuv420p -f rtsp rtsp://localhost:8554/mystream 2> log.txt", "wb");&#xA;&#xA;    }&#xA;&#xA;    // Write the frame data to the pipeline&#xA;    fwrite(processedFrame.data, 1, frameWidth * frameHeight * 3, openPipeLine);&#xA;    mexAtExit(exitFcn);&#xA;}&#xA;</mat>

    &#xA;

    Below is the full report from the ffmpeg process. Do my operating system variables change from time to time which cause the stream to work at times and break at others ? I am using Windows 10.

    &#xA;

    Log level: 48&#xA;Command line:&#xA;ffmpeg -report -f rawvideo -r 10 -video_size 1280x720 -pixel_format bgr24 -i pipe: -vcodec libx264 -pix_fmt yuv420p -f rtsp rtsp://localhost:8554/mystream&#xA;&#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-lib  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;Splitting the commandline.&#xA;&#xA;Successfully parsed a group of options.&#xA;Opening an input file: pipe:.&#xA;[rawvideo @ 00000182dba5efc0] Opening &#x27;pipe:&#x27; for reading&#xA;[pipe @ 00000182dba611c0] Setting default whitelist &#x27;crypto,data&#x27;&#xA;[rawvideo @ 00000182dba5efc0] Before avformat_find_stream_info() pos: 0 bytes read:65536 seeks:0 nb_streams:1&#xA;[rawvideo @ 00000182dba5efc0] All info found&#xA;[rawvideo @ 00000182dba5efc0] After avformat_find_stream_info() pos: 2764800 bytes read:2764800 seeks:0 frames:1&#xA;Input #0, rawvideo, from &#x27;pipe:&#x27;:&#xA;  Duration: N/A, start: 0.000000, bitrate: 221184 kb/s&#xA;  Stream #0:0, 1, 1/10: Video: rawvideo (BGR[24] / 0x18524742), bgr24, 1280x720, 221184 kb/s, 10 tbr, 10 tbn&#xA;Successfully opened the file.&#xA;Parsing a group of options: output url rtsp://192.168.0.2:8554/mystream.&#xA;Applying option vcodec (force video codec (&#x27;copy&#x27; to copy stream)) with argument libx264.&#xA;Applying option pix_fmt (set pixel format) with argument yuv420p.&#xA;Applying option f (force format) with argument rtsp.&#xA;Successfully parsed a group of options.&#xA;Opening an output file: rtsp://192.168.0.2:8554/mystream.&#xA;[out#0/rtsp @ 00000182dba72c00] No explicit maps, mapping streams automatically...&#xA;[vost#0:0/libx264 @ 00000182dba75cc0] Created video stream from input stream 0:0&#xA;Successfully opened the file.&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;detected 16 logical cores&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;video_size&#x27; to value &#x27;1280x720&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;pix_fmt&#x27; to value &#x27;3&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;time_base&#x27; to value &#x27;1/10&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;pixel_aspect&#x27; to value &#x27;0/1&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] Setting &#x27;frame_rate&#x27; to value &#x27;10/1&#x27;&#xA;[graph 0 input from stream 0:0 @ 00000182dba86180] w:1280 h:720 pixfmt:bgr24 tb:1/10 fr:10/1 sar:0/1&#xA;[format @ 00000182dba86540] Setting &#x27;pix_fmts&#x27; to value &#x27;yuv420p&#x27;&#xA;[auto_scale_0 @ 00000182dba869c0] w:iw h:ih flags:&#x27;&#x27; interl:0&#xA;[format @ 00000182dba86540] auto-inserting filter &#x27;auto_scale_0&#x27; between the filter &#x27;Parsed_null_0&#x27; and the filter &#x27;format&#x27;&#xA;[AVFilterGraph @ 00000182dba49040] query_formats: 4 queried, 2 merged, 1 already done, 0 delayed&#xA;[auto_scale_0 @ 00000182dba869c0] w:1280 h:720 fmt:bgr24 sar:0/1 -> w:1280 h:720 fmt:yuv420p sar:0/1 flags:0x00000004&#xA;[libx264 @ 00000182dba76080] using mv_range_thread = 24&#xA;[libx264 @ 00000182dba76080] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512&#xA;[libx264 @ 00000182dba76080] profile High, level 3.1, 4:2:0, 8-bit&#xA;[libx264 @ 00000182dba76080] 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=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00&#xA;[tcp @ 00000182dc5ce480] No default whitelist set&#xA;[tcp @ 00000182dc5ce480] Original list of addresses:&#xA;[tcp @ 00000182dc5ce480] Address 192.168.0.2 port 8554&#xA;[tcp @ 00000182dc5ce480] Interleaved list of addresses:&#xA;[tcp @ 00000182dc5ce480] Address 192.168.0.2 port 8554&#xA;[tcp @ 00000182dc5ce480] Starting connection attempt to 192.168.0.2 port 8554&#xA;[tcp @ 00000182dc5ce480] Successfully connected to 192.168.0.2 port 8554&#xA;[rtsp @ 00000182dba72d00] SDP:&#xA;v=0&#xA;&#xA;o=- 0 0 IN IP4 127.0.0.1&#xA;&#xA;s=No Name&#xA;&#xA;c=IN IP4 192.168.0.2&#xA;&#xA;t=0 0&#xA;&#xA;a=tool:libavformat 60.10.100&#xA;&#xA;m=video 0 RTP/AVP 96&#xA;&#xA;a=rtpmap:96 H264/90000&#xA;&#xA;a=fmtp:96 packetization-mode=1; sprop-parameter-sets=Z2QAH6zZQFAFuhAAAAMAEAAAAwFA8YMZYA==,aOvjyyLA; profile-level-id=64001F&#xA;&#xA;a=control:streamid=0&#xA;&#xA;&#xA;[rtp @ 00000182dc5cd040] No default whitelist set&#xA;[udp @ 00000182dba4b140] No default whitelist set&#xA;[udp @ 00000182dba4b140] end receive buffer size reported is 393216&#xA;[udp @ 00000182dc9bf040] No default whitelist set&#xA;[udp @ 00000182dc9bf040] end receive buffer size reported is 393216&#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, 0, 1/90000: 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;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;frame=    0 fps=0.0 q=0.0 size=       0kB time=N/A bitrate=N/A speed=N/A    &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840   &#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[libx264 @ 00000182dba76080] frame=   0 QP=21.34 NAL=3 Slice:I Poc:0   I:3600 P:0    SKIP:0    size=135901 bytes&#xA;frame=    0 fps=0.0 q=25.0 size=       0kB time=-00:00:00.20 bitrate=  -0.0kbits/s speed=N/A    &#xA;[vost#0:0/libx264 @ 00000182dba75cc0] Error submitting a packet to the muxer: Broken pipe&#xA;[out#0/rtsp @ 00000182dba72c00] Error muxing a packet&#xA;[out#0/rtsp @ 00000182dba72c00] Terminating muxer thread&#xA;[rawvideo @ 00000182dba72700] PACKET SIZE: 2764800, STRIDE: 3840&#xA;[libx264 @ 00000182dba76080] frame=   1 QP=18.29 NAL=2 Slice:P Poc:2   I:2662 P:866  SKIP:72   size=54835 bytes&#xA;frame=    1 fps=0.0 q=25.0 size=N/A time=-00:00:00.10 bitrate=N/A speed=N/A    &#xA;No more output streams to write to, finishing.&#xA;&#xA;Conversion failed!&#xA;&#xA;

    &#xA;

  • Ffmpeg - Reading header information takes too long

    13 mars 2023, par Md Yeamin

    I am using ffmpeg-kit to encode videos on android devices. For some files ffmpeg takes too long to read the header information. This issue happens very randomly. Sometime the execution completes within 1 or 2 seconds, sometime it takes longer than 10 seconds to complete, for the file linked below.

    &#xA;

    I have build ffmpeg to log some additional info to figure out the root cause. There is a 10s gap between the log output at 15:17:02.276 and 15:17:12.909 (added a separator for quick find). After completion of the mov_read_ftyp there is a long delay before the mov_read_dref method starts the execution. Is there any other method that executed in between and could take this much long time to complete the execution ? What could be the reason behind the delay ?

    &#xA;

    Here is detailed log about the issue.

    &#xA;

    Log :

    &#xA;

    2023-03-12 15:17:02.096 :: ffmpeg-kit-debug: execute:&#xA;2023-03-12 15:17:02.116 :: ffmpeg-kit-debug: LogCallback: setjmp&#xA;2023-03-12 15:17:02.120 :: ffmpeg-kit-debug: LogCallback: setjmp done&#xA;2023-03-12 15:17:02.124 :: ffmpeg-kit-debug: LogCallback: ffmpeg_var_cleanup&#xA;2023-03-12 15:17:02.127 :: ffmpeg-kit-debug: LogCallback: ffmpeg_var_cleanup done&#xA;2023-03-12 15:17:02.132 :: ffmpeg-kit-debug: LogCallback: init_dynload&#xA;2023-03-12 15:17:02.135 :: ffmpeg-kit-debug: LogCallback: init_dynload done&#xA;2023-03-12 15:17:02.137 :: ffmpeg-kit-debug: LogCallback: register_exit&#xA;2023-03-12 15:17:02.141 :: ffmpeg-kit-debug: LogCallback: register_exit done&#xA;2023-03-12 15:17:02.144 :: ffmpeg-kit-debug: LogCallback: avdevice_register_all&#xA;2023-03-12 15:17:02.151 :: ffmpeg-kit-debug: LogCallback: avdevice_register_all done&#xA;2023-03-12 15:17:02.155 :: ffmpeg-kit-debug: LogCallback: avformat_network_init&#xA;2023-03-12 15:17:02.159 :: ffmpeg-kit-debug: LogCallback: avformat_network_init done&#xA;2023-03-12 15:17:02.163 :: ffmpeg-kit-debug: LogCallback: show_banner&#xA;2023-03-12 15:17:02.165 :: ffmpeg-kit-debug: LogCallback: show_banner done&#xA;2023-03-12 15:17:02.169 :: ffmpeg-kit-debug: LogCallback: ffmpeg_parse_options&#xA;2023-03-12 15:17:02.172 :: ffmpeg-kit-debug: LogCallback: allocating memory&#xA;2023-03-12 15:17:02.176 :: ffmpeg-kit-debug: LogCallback: split_commandline&#xA;2023-03-12 15:17:02.179 :: ffmpeg-kit-debug: LogCallback: Splitting the commandline.&#xA;&#xA;2023-03-12 15:17:02.182 :: ffmpeg-kit-debug: LogCallback: Reading option &#x27;-hide_banner&#x27; ...&#xA;2023-03-12 15:17:02.184 :: ffmpeg-kit-debug: LogCallback:  matched as option &#x27;hide_banner&#x27; (do not show program banner) with argument &#x27;1&#x27;.&#xA;&#xA;2023-03-12 15:17:02.187 :: ffmpeg-kit-debug: LogCallback: Reading option &#x27;-y&#x27; ...&#xA;2023-03-12 15:17:02.189 :: ffmpeg-kit-debug: LogCallback:  matched as option &#x27;y&#x27; (overwrite output files) with argument &#x27;1&#x27;.&#xA;&#xA;2023-03-12 15:17:02.193 :: ffmpeg-kit-debug: LogCallback: Reading option &#x27;-i&#x27; ...&#xA;2023-03-12 15:17:02.197 :: ffmpeg-kit-debug: LogCallback:  matched as input url with argument &#x27;saf:6.MP4&#x27;.&#xA;&#xA;2023-03-12 15:17:02.199 :: ffmpeg-kit-debug: LogCallback: Finished splitting the commandline.&#xA;&#xA;2023-03-12 15:17:02.202 :: ffmpeg-kit-debug: LogCallback: split_commandline done&#xA;2023-03-12 15:17:02.203 :: ffmpeg-kit-debug: LogCallback: parse_optgroup&#xA;2023-03-12 15:17:02.205 :: ffmpeg-kit-debug: LogCallback: Parsing a group of options: global .&#xA;&#xA;2023-03-12 15:17:02.207 :: ffmpeg-kit-debug: LogCallback: Applying option hide_banner (do not show program banner) with argument 1.&#xA;&#xA;2023-03-12 15:17:02.210 :: ffmpeg-kit-debug: LogCallback: Applying option y (overwrite output files) with argument 1.&#xA;&#xA;2023-03-12 15:17:02.212 :: ffmpeg-kit-debug: LogCallback: Successfully parsed a group of options.&#xA;&#xA;2023-03-12 15:17:02.217 :: ffmpeg-kit-debug: LogCallback: parse_optgroup done&#xA;2023-03-12 15:17:02.220 :: ffmpeg-kit-debug: LogCallback: term_init&#xA;2023-03-12 15:17:02.224 :: ffmpeg-kit-debug: LogCallback: term_init done&#xA;2023-03-12 15:17:02.226 :: ffmpeg-kit-debug: LogCallback: open_files INPUT&#xA;2023-03-12 15:17:02.228 :: ffmpeg-kit-debug: LogCallback: Parsing a group of options: input url saf:6.MP4.&#xA;&#xA;2023-03-12 15:17:02.232 :: ffmpeg-kit-debug: LogCallback: Successfully parsed a group of options.&#xA;&#xA;2023-03-12 15:17:02.236 :: ffmpeg-kit-debug: LogCallback: Opening an input file: saf:6.MP4.&#xA;&#xA;2023-03-12 15:17:02.239 :: ffmpeg-kit-debug: LogCallback: [NULL @ 0xb40000730dd9dbf0] Opening &#x27;saf:6.MP4&#x27; for reading&#xA;&#xA;2023-03-12 15:17:02.243 :: ffmpeg-kit-debug: LogCallback: [saf @ 0xb40000728de0ca10] Setting default whitelist &#x27;saf,crypto,data&#x27;&#xA;&#xA;2023-03-12 15:17:02.245 :: ffmpeg-kit-debug: LogCallback: fd_open start&#xA;2023-03-12 15:17:02.248 :: ffmpeg-kit-debug: LogCallback: fd_open opening&#xA;2023-03-12 15:17:02.252 :: ffmpeg-kit-debug: LogCallback: fd_open opened&#xA;2023-03-12 15:17:02.255 :: ffmpeg-kit-debug: LogCallback: mov_probe&#xA;2023-03-12 15:17:02.257 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100&#xA;&#xA;2023-03-12 15:17:02.260 :: ffmpeg-kit-debug: LogCallback: mov_read_header&#xA;2023-03-12 15:17:02.264 :: ffmpeg-kit-debug: LogCallback: mov_read_header seeking&#xA;2023-03-12 15:17:02.268 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] ISO: File Type Major Brand: mp41&#xA;&#xA;2023-03-12 15:17:02.270 :: ffmpeg-kit-debug: LogCallback: mov_read_ftyp dict set&#xA;2023-03-12 15:17:02.273 :: ffmpeg-kit-debug: LogCallback: mov_read_ftyp mov_aaxc_crypto before&#xA;2023-03-12 15:17:02.276 :: ffmpeg-kit-debug: LogCallback: mov_read_ftyp mov_aaxc_crypto done&#xA;-----------------------------------------------------------------------------------------------&#xA;2023-03-12 15:17:12.909 :: ffmpeg-kit-debug: LogCallback: mov_read_dref started&#xA;2023-03-12 15:17:12.911 :: ffmpeg-kit-debug: LogCallback: mov_read_dref check entries&#xA;2023-03-12 15:17:12.915 :: ffmpeg-kit-debug: LogCallback: mov_read_dref drefs_count 0 &#xA;2023-03-12 15:17:12.918 :: ffmpeg-kit-debug: LogCallback: mov_read_dref av_free sc->drefs&#xA;2023-03-12 15:17:12.920 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Unknown dref type 0x73696c61 size 12&#xA;&#xA;2023-03-12 15:17:12.923 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Processing st: 0, edit list 0 - media time: 0, duration: 39436397&#xA;&#xA;2023-03-12 15:17:12.925 :: ffmpeg-kit-debug: LogCallback: mov_read_dref started&#xA;2023-03-12 15:17:12.931 :: ffmpeg-kit-debug: LogCallback: mov_read_dref check entries&#xA;2023-03-12 15:17:12.935 :: ffmpeg-kit-debug: LogCallback: mov_read_dref drefs_count 0 &#xA;2023-03-12 15:17:12.938 :: ffmpeg-kit-debug: LogCallback: mov_read_dref av_free sc->drefs&#xA;2023-03-12 15:17:12.945 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Unknown dref type 0x73696c61 size 12&#xA;&#xA;2023-03-12 15:17:12.951 :: ffmpeg-kit-debug: LogCallback: mov_read_dref started&#xA;2023-03-12 15:17:12.958 :: ffmpeg-kit-debug: LogCallback: mov_read_dref check entries&#xA;2023-03-12 15:17:12.965 :: ffmpeg-kit-debug: LogCallback: mov_read_dref drefs_count 0 &#xA;2023-03-12 15:17:12.971 :: ffmpeg-kit-debug: LogCallback: mov_read_dref av_free sc->drefs&#xA;2023-03-12 15:17:12.975 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Unknown dref type 0x73696c61 size 12&#xA;&#xA;2023-03-12 15:17:12.978 :: ffmpeg-kit-debug: LogCallback: mov_read_dref started&#xA;2023-03-12 15:17:12.985 :: ffmpeg-kit-debug: LogCallback: mov_read_dref check entries&#xA;2023-03-12 15:17:12.988 :: ffmpeg-kit-debug: LogCallback: mov_read_dref drefs_count 0 &#xA;2023-03-12 15:17:12.990 :: ffmpeg-kit-debug: LogCallback: mov_read_dref av_free sc->drefs&#xA;2023-03-12 15:17:12.992 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Unknown dref type 0x73696c61 size 12&#xA;&#xA;2023-03-12 15:17:12.994 :: ffmpeg-kit-debug: LogCallback: mov_read_dref started&#xA;2023-03-12 15:17:12.996 :: ffmpeg-kit-debug: LogCallback: mov_read_dref check entries&#xA;2023-03-12 15:17:12.997 :: ffmpeg-kit-debug: LogCallback: mov_read_dref drefs_count 0 &#xA;2023-03-12 15:17:12.999 :: ffmpeg-kit-debug: LogCallback: mov_read_dref av_free sc->drefs&#xA;2023-03-12 15:17:13.002 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Unknown dref type 0x73696c61 size 12&#xA;&#xA;2023-03-12 15:17:13.003 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] All samples in data stream index:id [4:5] have zero duration, stream set to be discarded by default. Override using AVStream->discard or -discard for ffmpeg command.&#xA;&#xA;2023-03-12 15:17:13.006 :: ffmpeg-kit-debug: LogCallback: mov_read_header seek done&#xA;2023-03-12 15:17:13.008 :: ffmpeg-kit-debug: LogCallback: mov_read_header parse done&#xA;2023-03-12 15:17:13.010 :: ffmpeg-kit-debug: LogCallback: mov_read_header trex data read done&#xA;2023-03-12 15:17:13.011 :: ffmpeg-kit-debug: LogCallback: mov_read_header bitrate calculation code&#xA;2023-03-12 15:17:13.013 :: ffmpeg-kit-debug: LogCallback: mov_read_header fps calculation done&#xA;2023-03-12 15:17:13.015 :: ffmpeg-kit-debug: LogCallback: mov_read_header read side data done&#xA;2023-03-12 15:17:13.017 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] Before avformat_find_stream_info() pos: 3720541874 bytes read:3720541874 seeks:0 nb_streams:5&#xA;&#xA;2023-03-12 15:17:13.019 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] nal_unit_type: 7(SPS), nal_ref_idc: 1&#xA;&#xA;2023-03-12 15:17:13.022 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] nal_unit_type: 8(PPS), nal_ref_idc: 1&#xA;&#xA;2023-03-12 15:17:13.024 :: ffmpeg-kit-debug: LogCallback: fd_seek start&#xA;2023-03-12 15:17:13.028 :: ffmpeg-kit-debug: LogCallback: fd_seek seeking&#xA;2023-03-12 15:17:13.030 :: ffmpeg-kit-debug: LogCallback: fd_seek seek done&#xA;2023-03-12 15:17:13.033 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] nal_unit_type: 7(SPS), nal_ref_idc: 1&#xA;&#xA;2023-03-12 15:17:13.035 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] nal_unit_type: 8(PPS), nal_ref_idc: 1&#xA;&#xA;2023-03-12 15:17:13.038 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] nal_unit_type: 9(AUD), nal_ref_idc: 0&#xA;&#xA;2023-03-12 15:17:13.042 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] nal_unit_type: 5(IDR), nal_ref_idc: 1&#xA;&#xA;2023-03-12 15:17:13.047 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] Format yuvj420p chosen by get_format().&#xA;&#xA;2023-03-12 15:17:13.059 :: ffmpeg-kit-debug: LogCallback: [h264 @ 0xb40000731df00bc0] Reinit context to 1920x1088, pix_fmt: yuvj420p&#xA;&#xA;2023-03-12 15:17:13.066 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] All info found&#xA;&#xA;2023-03-12 15:17:13.071 :: ffmpeg-kit-debug: LogCallback: fd_seek start&#xA;2023-03-12 15:17:13.075 :: ffmpeg-kit-debug: LogCallback: fd_seek size check error&#xA;2023-03-12 15:17:13.077 :: ffmpeg-kit-debug: LogCallback: fd_seek start&#xA;2023-03-12 15:17:13.081 :: ffmpeg-kit-debug: LogCallback: fd_seek size check error&#xA;2023-03-12 15:17:13.087 :: ffmpeg-kit-debug: LogCallback: fd_seek start&#xA;2023-03-12 15:17:13.090 :: ffmpeg-kit-debug: LogCallback: fd_seek size check error&#xA;2023-03-12 15:17:13.093 :: ffmpeg-kit-debug: LogCallback: [mov,mp4,m4a,3gp,3g2,mj2 @ 0xb40000730dd9dbf0] After avformat_find_stream_info() pos: 323745 bytes read:3720930284 seeks:1 frames:3&#xA;&#xA;2023-03-12 15:17:13.096 :: ffmpeg-kit-debug: LogCallback: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;saf:6.MP4&#x27;:&#xA;&#xA;2023-03-12 15:17:13.099 :: ffmpeg-kit-debug: LogCallback:   Metadata:&#xA;&#xA;2023-03-12 15:17:13.102 :: ffmpeg-kit-debug: LogCallback:     major_brand     : &#xA;2023-03-12 15:17:13.108 :: ffmpeg-kit-debug: LogCallback: mp41&#xA;2023-03-12 15:17:13.110 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.113 :: ffmpeg-kit-debug: LogCallback:     minor_version   : &#xA;2023-03-12 15:17:13.115 :: ffmpeg-kit-debug: LogCallback: 538120216&#xA;2023-03-12 15:17:13.119 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.121 :: ffmpeg-kit-debug: LogCallback:     compatible_brands: &#xA;2023-03-12 15:17:13.124 :: ffmpeg-kit-debug: LogCallback: mp41&#xA;2023-03-12 15:17:13.127 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.129 :: ffmpeg-kit-debug: LogCallback:     creation_time   : &#xA;2023-03-12 15:17:13.132 :: ffmpeg-kit-debug: LogCallback: 2022-02-06T13:53:53.000000Z&#xA;2023-03-12 15:17:13.136 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.138 :: ffmpeg-kit-debug: LogCallback:     firmware        : &#xA;2023-03-12 15:17:13.140 :: ffmpeg-kit-debug: LogCallback: HD9.01.01.60.00&#xA;2023-03-12 15:17:13.142 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.144 :: ffmpeg-kit-debug: LogCallback:   Duration: &#xA;2023-03-12 15:17:13.146 :: ffmpeg-kit-debug: LogCallback: 00:10:57.27&#xA;2023-03-12 15:17:13.149 :: ffmpeg-kit-debug: LogCallback: , start: &#xA;2023-03-12 15:17:13.152 :: ffmpeg-kit-debug: LogCallback: 0.000000&#xA;2023-03-12 15:17:13.154 :: ffmpeg-kit-debug: LogCallback: , bitrate: &#xA;2023-03-12 15:17:13.157 :: ffmpeg-kit-debug: LogCallback: 45284 kb/s&#xA;2023-03-12 15:17:13.159 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.161 :: ffmpeg-kit-debug: LogCallback:   Chapters:&#xA;&#xA;2023-03-12 15:17:13.164 :: ffmpeg-kit-debug: LogCallback:     Chapter #0:0: &#xA;2023-03-12 15:17:13.166 :: ffmpeg-kit-debug: LogCallback: start 619.735000, &#xA;2023-03-12 15:17:13.169 :: ffmpeg-kit-debug: LogCallback: end 657.273000&#xA;&#xA;2023-03-12 15:17:13.171 :: ffmpeg-kit-debug: LogCallback:   Stream #0:0&#xA;2023-03-12 15:17:13.174 :: ffmpeg-kit-debug: LogCallback: [0x1]&#xA;2023-03-12 15:17:13.175 :: ffmpeg-kit-debug: LogCallback: (eng)&#xA;2023-03-12 15:17:13.177 :: ffmpeg-kit-debug: LogCallback: , 1, 1/60000&#xA;2023-03-12 15:17:13.182 :: ffmpeg-kit-debug: LogCallback: : Video: h264, 1 reference frame (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive, left), 1920x1080 (1920x1088) [SAR 1:1 DAR 16:9], 0/1, 45005 kb/s&#xA;2023-03-12 15:17:13.185 :: ffmpeg-kit-debug: LogCallback: , &#xA;2023-03-12 15:17:13.189 :: ffmpeg-kit-debug: LogCallback: 59.94 fps, &#xA;2023-03-12 15:17:13.192 :: ffmpeg-kit-debug: LogCallback: 59.94 tbr, &#xA;2023-03-12 15:17:13.194 :: ffmpeg-kit-debug: LogCallback: 60k tbn&#xA;2023-03-12 15:17:13.197 :: ffmpeg-kit-debug: LogCallback:  (default)&#xA;2023-03-12 15:17:13.199 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.200 :: ffmpeg-kit-debug: LogCallback:     Metadata:&#xA;&#xA;2023-03-12 15:17:13.203 :: ffmpeg-kit-debug: LogCallback:       creation_time   : &#xA;2023-03-12 15:17:13.204 :: ffmpeg-kit-debug: LogCallback: 2022-02-06T13:53:53.000000Z&#xA;2023-03-12 15:17:13.206 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.209 :: ffmpeg-kit-debug: LogCallback:       handler_name    : &#xA;2023-03-12 15:17:13.211 :: ffmpeg-kit-debug: LogCallback: GoPro AVC  &#xA;2023-03-12 15:17:13.213 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.216 :: ffmpeg-kit-debug: LogCallback:       vendor_id       : &#xA;2023-03-12 15:17:13.219 :: ffmpeg-kit-debug: LogCallback: [0][0][0][0]&#xA;2023-03-12 15:17:13.220 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.223 :: ffmpeg-kit-debug: LogCallback:       encoder         : &#xA;2023-03-12 15:17:13.225 :: ffmpeg-kit-debug: LogCallback: GoPro AVC encoder&#xA;2023-03-12 15:17:13.227 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.229 :: ffmpeg-kit-debug: LogCallback:   Stream #0:1&#xA;2023-03-12 15:17:13.231 :: ffmpeg-kit-debug: LogCallback: [0x2]&#xA;2023-03-12 15:17:13.233 :: ffmpeg-kit-debug: LogCallback: (eng)&#xA;2023-03-12 15:17:13.236 :: ffmpeg-kit-debug: LogCallback: , 1, 1/48000&#xA;2023-03-12 15:17:13.238 :: ffmpeg-kit-debug: LogCallback: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 189 kb/s&#xA;2023-03-12 15:17:13.240 :: ffmpeg-kit-debug: LogCallback:  (default)&#xA;2023-03-12 15:17:13.243 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.244 :: ffmpeg-kit-debug: LogCallback:     Metadata:&#xA;&#xA;2023-03-12 15:17:13.247 :: ffmpeg-kit-debug: LogCallback:       creation_time   : &#xA;2023-03-12 15:17:13.252 :: ffmpeg-kit-debug: LogCallback: 2022-02-06T13:53:53.000000Z&#xA;2023-03-12 15:17:13.255 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.257 :: ffmpeg-kit-debug: LogCallback:       handler_name    : &#xA;2023-03-12 15:17:13.259 :: ffmpeg-kit-debug: LogCallback: GoPro AAC  &#xA;2023-03-12 15:17:13.262 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.264 :: ffmpeg-kit-debug: LogCallback:       vendor_id       : &#xA;2023-03-12 15:17:13.268 :: ffmpeg-kit-debug: LogCallback: [0][0][0][0]&#xA;2023-03-12 15:17:13.271 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.274 :: ffmpeg-kit-debug: LogCallback:   Stream #0:2&#xA;2023-03-12 15:17:13.276 :: ffmpeg-kit-debug: LogCallback: [0x3]&#xA;2023-03-12 15:17:13.278 :: ffmpeg-kit-debug: LogCallback: (eng)&#xA;2023-03-12 15:17:13.280 :: ffmpeg-kit-debug: LogCallback: , 1, 1/60000&#xA;2023-03-12 15:17:13.281 :: ffmpeg-kit-debug: LogCallback: : Data: none (tmcd / 0x64636D74), 0/1&#xA;2023-03-12 15:17:13.284 :: ffmpeg-kit-debug: LogCallback:  (default)&#xA;2023-03-12 15:17:13.288 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.290 :: ffmpeg-kit-debug: LogCallback:     Metadata:&#xA;&#xA;2023-03-12 15:17:13.291 :: ffmpeg-kit-debug: LogCallback:       creation_time   : &#xA;2023-03-12 15:17:13.292 :: ffmpeg-kit-debug: LogCallback: 2022-02-06T13:53:53.000000Z&#xA;2023-03-12 15:17:13.294 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.296 :: ffmpeg-kit-debug: LogCallback:       handler_name    : &#xA;2023-03-12 15:17:13.299 :: ffmpeg-kit-debug: LogCallback: GoPro TCD  &#xA;2023-03-12 15:17:13.302 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.306 :: ffmpeg-kit-debug: LogCallback:   Stream #0:3&#xA;2023-03-12 15:17:13.309 :: ffmpeg-kit-debug: LogCallback: [0x4]&#xA;2023-03-12 15:17:13.310 :: ffmpeg-kit-debug: LogCallback: (eng)&#xA;2023-03-12 15:17:13.313 :: ffmpeg-kit-debug: LogCallback: , 0, 1/1000&#xA;2023-03-12 15:17:13.316 :: ffmpeg-kit-debug: LogCallback: : Data: bin_data (gpmd / 0x646D7067), 0/1, 61 kb/s&#xA;2023-03-12 15:17:13.318 :: ffmpeg-kit-debug: LogCallback:  (default)&#xA;2023-03-12 15:17:13.320 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.322 :: ffmpeg-kit-debug: LogCallback:     Metadata:&#xA;&#xA;2023-03-12 15:17:13.325 :: ffmpeg-kit-debug: LogCallback:       creation_time   : &#xA;2023-03-12 15:17:13.327 :: ffmpeg-kit-debug: LogCallback: 2022-02-06T13:53:53.000000Z&#xA;2023-03-12 15:17:13.329 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.331 :: ffmpeg-kit-debug: LogCallback:       handler_name    : &#xA;2023-03-12 15:17:13.335 :: ffmpeg-kit-debug: LogCallback: GoPro MET  &#xA;2023-03-12 15:17:13.337 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.339 :: ffmpeg-kit-debug: LogCallback:   Stream #0:4&#xA;2023-03-12 15:17:13.342 :: ffmpeg-kit-debug: LogCallback: [0x5]&#xA;2023-03-12 15:17:13.344 :: ffmpeg-kit-debug: LogCallback: (eng)&#xA;2023-03-12 15:17:13.345 :: ffmpeg-kit-debug: LogCallback: , 0, 1/60000&#xA;2023-03-12 15:17:13.347 :: ffmpeg-kit-debug: LogCallback: : Data: none (fdsc / 0x63736466), 0/1, 13 kb/s&#xA;2023-03-12 15:17:13.350 :: ffmpeg-kit-debug: LogCallback:  (default)&#xA;2023-03-12 15:17:13.352 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.354 :: ffmpeg-kit-debug: LogCallback:     Metadata:&#xA;&#xA;2023-03-12 15:17:13.356 :: ffmpeg-kit-debug: LogCallback:       creation_time   : &#xA;2023-03-12 15:17:13.359 :: ffmpeg-kit-debug: LogCallback: 2022-02-06T13:53:53.000000Z&#xA;2023-03-12 15:17:13.361 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.365 :: ffmpeg-kit-debug: LogCallback:       handler_name    : &#xA;2023-03-12 15:17:13.369 :: ffmpeg-kit-debug: LogCallback: GoPro SOS  &#xA;2023-03-12 15:17:13.372 :: ffmpeg-kit-debug: LogCallback: &#xA;&#xA;2023-03-12 15:17:13.374 :: ffmpeg-kit-debug: LogCallback: Successfully opened the file.&#xA;&#xA;2023-03-12 15:17:13.376 :: ffmpeg-kit-debug: LogCallback: open_files INPUT done&#xA;2023-03-12 15:17:13.378 :: ffmpeg-kit-debug: LogCallback: apply_sync_offsets&#xA;2023-03-12 15:17:13.382 :: ffmpeg-kit-debug: LogCallback: apply_sync_offsets done&#xA;2023-03-12 15:17:13.386 :: ffmpeg-kit-debug: LogCallback: init_complex_filters&#xA;2023-03-12 15:17:13.389 :: ffmpeg-kit-debug: LogCallback: init_complex_filters done&#xA;2023-03-12 15:17:13.391 :: ffmpeg-kit-debug: LogCallback: open_files OUTPUT&#xA;2023-03-12 15:17:13.392 :: ffmpeg-kit-debug: LogCallback: open_files OUTPUT done&#xA;2023-03-12 15:17:13.395 :: ffmpeg-kit-debug: LogCallback: check_filter_outputs&#xA;2023-03-12 15:17:13.397 :: ffmpeg-kit-debug: LogCallback: check_filter_outputs done&#xA;2023-03-12 15:17:13.399 :: ffmpeg-kit-debug: LogCallback: ffmpeg_parse_options done&#xA;2023-03-12 15:17:13.402 :: ffmpeg-kit-debug: LogCallback: At least one output file must be specified&#xA;&#xA;2023-03-12 15:17:13.405 :: ffmpeg-kit-debug: LogCallback: [AVIOContext @ 0xb4000072dddd6510] Statistics: 3720930284 bytes read, 1 seeks&#xA;&#xA;2023-03-12 15:17:13.407 :: ffmpeg-kit-debug: LogCallback: fd_close start&#xA;2023-03-12 15:17:13.410 :: ffmpeg-kit-debug: LogCallback: fd_close done&#xA;2023-03-12 15:17:13.412 :: ffmpeg-kit-debug: LogCallback: setjmp done&#xA;

    &#xA;

    Note : I have built ffmpeg-kit with the following script :

    &#xA;

    #!/bin/bash&#xA;&#xA;export ENCODERS="libvorbis,libvpx_vp8,libvpx_vp9,libx264,libx265,mpeg1video,mpeg2video,mpeg4,flv,wmv1,wmv2,msmpeg4v3,libaom_av1,\&#xA;h261,h263,theora,libtheora,png,aac,ac3,alac,libopencore_amrnb,libvo_amrwbenc,eac3,flac,mp2,libtwolame,libmp3lame,libopus,libspeex,wavpack,wmav1,wmav2,pcm_s16le,\&#xA;ssa,ass,dvbsub,dvdsub,movtext,srt,subrip,text,ttml,webvtt,xsub"&#xA;&#xA;export SETTINGS="--disable-indevs \&#xA;  --enable-pthreads \&#xA;  --enable-indev=lavfi \&#xA;  --disable-outdevs \&#xA;  --disable-protocols \&#xA;  --enable-protocol=file,fd,saf,async \&#xA;  --disable-encoders \&#xA;  --enable-encoder=${ENCODERS}"&#xA;&#xA;export CUSTOM_CONFIG=${SETTINGS}&#xA;&#xA;./android.sh --disable-arm-v7a --disable-arm-v7a-neon --disable-x86 --disable-x86-64 --enable-android-media-codec --enable-android-zlib --enable-chromaprint --enable-dav1d --enable-fontconfig --enable-freetype --enable-fribidi --enable-gmp --enable-gnutls --enable-kvazaar --enable-lame --enable-libaom --enable-libass --enable-libiconv --enable-libilbc --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxml2 --enable-opencore-amr --enable-openh264 --enable-opus --enable-sdl --enable-shine --enable-snappy --enable-soxr --enable-speex --enable-tesseract --enable-twolame --enable-vo-amrwbenc --enable-zimg --enable-x264 --enable-x265 --enable-gpl -l&#xA;

    &#xA;

    Sample file : https://drive.google.com/file/d/1lvCiOBQqBEnUECn_HJi8qUoaCPCBnkgO/view?usp=share_link

    &#xA;

    Ffmpeg version : 5.1.

    &#xA;