Recherche avancée

Médias (91)

Autres articles (14)

  • Les formats acceptés

    28 janvier 2010, par

    Les commandes suivantes permettent d’avoir des informations sur les formats et codecs gérés par l’installation local de ffmpeg :
    ffmpeg -codecs ffmpeg -formats
    Les format videos acceptés en entrée
    Cette liste est non exhaustive, elle met en exergue les principaux formats utilisés : h264 : H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 m4v : raw MPEG-4 video format flv : Flash Video (FLV) / Sorenson Spark / Sorenson H.263 Theora wmv :
    Les formats vidéos de sortie possibles
    Dans un premier temps on (...)

  • Les vidéos

    21 avril 2011, par

    Comme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
    Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
    Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

Sur d’autres sites (2624)

  • What is Funnel Analysis ? A Complete Guide for Quick Results

    25 janvier 2024, par Erin

    Your funnel is leaking.

    You’re losing visitors.

    You’re losing conversions and sales.

    But you don’t know how it’s happening, where it’s happening, or what to do about it.

    The reason ? You aren’t properly analysing your funnels.

    If you want to improve conversions and grow your business, you need to understand how to properly assess your sales funnels to set yourself up for success.

    In this guide, we’ll show you what funnel analysis is, why it’s important, and what steps you need to take to leverage it to improve conversions.

    What is funnel analysis ?

    Every business uses sales funnels, whether they know it or not.

    But most people aren’t analysing them, costing them conversions.

    What is funnel analysis?

    Funnel analysis is a marketing method to analyse the events leading to specific conversion points. 

    It aims to look at the entire journey of potential customers from the moment they first touch base with your website or business to the moment they click “buy.”

    It’s assessing what your audience is doing at every step of the journey.

    By assessing what actions are taking place at scale, you can see where you’re falling short in your sales funnel.

    You’ll see :

    1. Where prospects are falling off.
    2. Where people are converting well.

    By gaining this understanding, you’ll better understand the health of your website’s sales funnels and overall marketing strategy.

    With that knowledge, you can optimise your marketing strategy to patch those leaks, improve conversions and grow your business.

    Why funnel analysis is important

    Funnel analysis is critical because your funnel is your business.

    When you analyse your funnel, you’re analysing your business.

    You’re looking at what’s working and what’s not so you can grow revenue and profit margins.

    Funnel analysis lets you monitor user behaviour to show you the motivation and intention behind their decisions.

    Here are five reasons you need to incorporate funnel analysis into your workflow.

    Why funnel analysis is important.

    1. Gives insights into your funnel problems

    The core purpose of funnel analysis is to look at what’s going on on your website.

    What are the most effective steps to conversion ?

    Where do users drop off in the conversion process ?

    And which pages contribute the most to conversion or drop-offs ?

    Funnel analysis helps you understand what’s going on with your site visitors. Plus, it helps you see what’s wrong with your funnel.

    If you aren’t sure what’s happening with your funnel, you won’t know what to improve to grow your revenue.

    2. Improves conversions

    When you know what’s going on with your funnel, you’ll know how to improve it.

    To improve your conversion funnel, you need to close the leaks. These are areas where website visitors are falling off.

    It’s the moment the conversion is lost.

    You need to use funnel analysis to give insight into these problem areas. Once you can see where the issue is, you can patch that leak and improve the percentage of visitors who convert.

    For example, if your conversion rate on your flagship product page has plateaued and you can’t figure out how to increase conversions, implementing a funnel analysis tactic like heatmaps will show you that visitors are spending time reading your product description. Still, they’re not spending much time near your call to action.

    Matomo's heatmaps feature

    This might tell you that you need to update your description copy or adjust your button (i.e. colour, size, copy). You can increase conversions by making those changes in your funnel analysis insights.

    3. Improves the customer experience

    Funnel analysis helps you see where visitors spend their time, what elements they interact with and where they fall off.

    One of the key benefits of analysing your funnel is you’ll be able to help improve the experience your visitors have on your website.

    For example, if you have informational videos on a specific web page to educate your visitors, you might use the Media Analytics feature in your web analytics solution to find out that they’re not spending much time watching them.

    This could lead you to believe that the content itself isn’t good or relevant to them.

    But, after implementing session recordings within your funnel analysis, you see people clicking a ton near the play button. This might tell you that they’re having trouble clicking the actual button on the video player due to poor UX.

    In this scenario, you could update the UX on your web page so the videos are easy to click and watch, no matter what device someone uses.

    With more video viewers, you can provide value to your visitors instead of leaving them frustrated trying to watch your videos.

    4. Grows revenue

    This is what you’re likely after : more revenue.

    More often than not, this means you need to focus on improving your conversion rate.

    Funnel analysis helps you find those areas where visitors are exiting so you can patch those leaks up and turn more visitors into customers.

    Let’s say you have a conversion rate of 1.7%.

    You get 50,000 visitors per month.

    Your average order is $82.

    Even if you increase your conversion rate by 10% (to 1.87%) through funnel analysis, here’s the monthly difference in revenue :

    Before : $69,700
    After : $76,670

    In one year, you’ll make nearly $80,000 in additional revenue from funnel analysis alone.

    Different types of funnel analysis

    There are a few different types of funnel analysis.

    How you define success in your funnel all comes down to one of these four pillars.

    Depending on your goals, business and industry, you may want to assess the different funnel analyses at different times.

    1. Pageview funnel analysis

    Pageview funnel analysis is about understanding how well your website content is performing. 

    It helps you enhance user experience, making visitors stay longer on your site. By identifying poor performing pages (pages with high exit rates), you can pinpoint areas that need optimisation for better engagement.

    2. Conversion funnel analysis

    Next up, we’re looking at conversion funnel analysis.

    This type of funnel analysis is crucial for marketers aiming to turn website visitors into action-takers. This involves tracking and optimising conversion goals, such as signing up for newsletters, downloading ebooks, submitting forms or signing up for free trials. 

    The primary goal of conversion funnel analysis is to boost your website’s overall conversion rates.

    3. E-commerce funnel analysis

    For businesses selling products online, e-commerce funnel analysis is essential. 

    It involves measuring whether your products are being purchased and finding drop-off points in the purchasing process. 

    By optimising the e-commerce funnel, you can enhance revenue and improve the overall efficiency of your sales process.

    How to conduct funnel analysis

    Now that you understand what funnel analysis is, why it’s important, and the different types of analysis, it’s time to show you how to do it yourself.

    To get started with funnel analysis, you need to have the right web analytics solution.

    Here are the most common funnel analysis tools and methods you can use :

    1. Funnel analytics

    If you want to choose a single tool to conduct funnel analysis, it’s an all-in-one web analytics tool, like Matomo.

    Matomo funnel analytics example one.

    With Matomo’s Funnel Analytics, you can dive into your whole funnel and analyse each step (and each step’s conversion rate).

    Matomo funnel analytics stages.

    For instance, if you look at the example above, you can see the proceed rate at each funnel step before the conversion page.

    This means you can improve each proceed rate, to drive more traffic to your conversion page in order to increase conversion rates.

    In the above snapshot from Matomo, it shows visitors starting on the job board overview page, moving on to view specific job listings. The goal is to convert these visitors into job applicants.

    However, a significant issue arises at the job view stage, where 95% of visitors don’t proceed to job application. To increase conversions, we need to first concentrate on improving the job view page.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    2. Heatmaps

    Heatmaps is a behaviour analytics tool that lets you see different visitor activities, including :

    • Mouse movement
    • How far down visitors scroll
    • Clicks

    You can see which elements were clicked on and which weren’t and how far people scroll down your page.

    Heatmaps in Matomo

    A heatmap lets you see which parts of a page are getting the most attention and which parts go unnoticed by your users.

    For example, if, during your funnel analysis, you see that a lot of visitors are falling off after they land on the checkout page, then you might want to add a heatmap on your checkout page to see where and why people are exiting.

    3. Session recordings

    Want to see what individual users are doing and how they’re interacting with your site ?

    Then, you’ll want to check out session recordings.

    A session recording is a video playback of a visitor’s time on your website.

    Session Recordings

    It’s the most effective method to observe your visitors’ interactions with your site, eliminating uncertainty when identifying areas for funnel improvement.

    Session recordings instill confidence in your optimisation efforts by providing insights into why and where visitors may be dropping off in the funnel.

    4. A/B testing

    If you want to take the guesswork out of optimising your funnel and increasing your conversions, you need to start A/B testing.

    An A/B test is where you create two versions of a web page to determine which one converts better.

    Matomo A/B Test feature

    For example, if your heatmaps and session recordings show that your users are dropping off near your call to action, it may be time to test a new version.

    You may find that by simply testing a different colour button, you may increase conversions by 20% or more.

    5. Form analytics

    Are you trying to get more leads to fill out forms on your site ?

    Well, Form Analytics can help you understand how your website visitors interact with your signup forms.

    You can view metrics such as starter rate, conversion rate, average hesitation time and average time spent.

    This information allows you to optimise your forms effectively, ultimately maximising your success.

    Let’s look at the performance of a form using Matomo’s Form Analytics feature below.

    In the Matomo example, our starter rate stands at a solid 60.1%, but there’s a significant drop to a submitter rate of 29.3%, resulting in a conversion rate of 16.3%.

    Looking closer, people are hesitating for about 16.2 seconds and taking nearly 1 minute 39 seconds on average to complete our form.

    This could indicate our form is confusing and requesting too much. Simplifying it could help increase sign-ups.

    See first-hand how Concrete CMS tripled their leads using Form Analytics in Matomo.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    Start optimising your funnels with Matomo today

    If you want to optimise your business, you must optimise your funnels.

    Without information on what’s working and what’s not, you’ll never know if your website changes are making a difference.

    Worse yet, you could have underperforming stages in your funnel, but you won’t know unless you start looking.

    Funnel analysis changes that.

    By analysing your funnels regularly, you’ll be able to see where visitors are leaking out of your funnel. That way, you can get more visitors to convert without generating more traffic.

    If you want to improve conversions and grow revenue today, try Matomo’s Funnel Analytics feature.

    You’ll be able to see conversion rates, drop-offs, and fine-tuned details on each step of your funnel so you can turn more potential customers into paying customers.

    Additionally, Matomo comes equipped with features like heatmaps, session recordings, A/B testing, and form analytics to optimise your funnels with confidence.

    Try Matomo free for 21-days. No credit card required.

  • ffmpeg Audiosegment error in get audio chunks in socketIo server in python

    26 janvier 2024, par a_crszkvc30Last_NameCol

    I want to send each audio chunk every minute.
this is the test code and i want to save audiofile and audio chunk file.
then, i will combine two audio files stop button was worked correctly but with set time function is not worked in python server.
there is python server code with socketio

    


    def handle_voice(sid,data): # blob 으로 들어온 데이터 
    # BytesIO를 사용하여 메모리 상에서 오디오 데이터를 로드
    audio_segment = AudioSegment.from_file(BytesIO(data), format="webm")
    directory = "dddd"
    # 오디오 파일로 저장
    #directory = str(names_sid.get(sid))
    if not os.path.exists(directory):
        os.makedirs(directory)
 
    # 오디오 파일로 저장
    file_path = os.path.join(directory, f'{sid}.wav')
    audio_segment.export(file_path, format='wav') 
    print('오디오 파일 저장 완료')`
 


    


    and there is client

    


    &#xA;&#xA;&#xA;&#xA;    &#xA;    &#xA;    <code class="echappe-js">&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.5.2/socket.io.js&quot;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;&#xA;    &#xA;    
    

    &#xA;

    &#xA;

    &#xA; &lt;script&gt;&amp;#xA;        var socket = io(&amp;#x27;http://127.0.0.1:5000&amp;#x27;);&amp;#xA;        const record = document.getElementById(&quot;record&quot;)&amp;#xA;        const stop = document.getElementById(&quot;stop&quot;)&amp;#xA;        const soundClips = document.getElementById(&quot;sound-clips&quot;)&amp;#xA;        const chkHearMic = document.getElementById(&quot;chk-hear-mic&quot;)&amp;#xA;&amp;#xA;        const audioCtx = new(window.AudioContext || window.webkitAudioContext)() // 오디오 컨텍스트 정의&amp;#xA;&amp;#xA;        const analyser = audioCtx.createAnalyser()&amp;#xA;        //        const distortion = audioCtx.createWaveShaper()&amp;#xA;        //        const gainNode = audioCtx.createGain()&amp;#xA;        //        const biquadFilter = audioCtx.createBiquadFilter()&amp;#xA;&amp;#xA;        function makeSound(stream) {&amp;#xA;            const source = audioCtx.createMediaStreamSource(stream)&amp;#xA;            socket.connect()&amp;#xA;            source.connect(analyser)&amp;#xA;            //            analyser.connect(distortion)&amp;#xA;            //            distortion.connect(biquadFilter)&amp;#xA;            //            biquadFilter.connect(gainNode)&amp;#xA;            //            gainNode.connect(audioCtx.destination) // connecting the different audio graph nodes together&amp;#xA;            analyser.connect(audioCtx.destination)&amp;#xA;&amp;#xA;        }&amp;#xA;&amp;#xA;        if (navigator.mediaDevices) {&amp;#xA;            console.log(&amp;#x27;getUserMedia supported.&amp;#x27;)&amp;#xA;&amp;#xA;            const constraints = {&amp;#xA;                audio: true&amp;#xA;            }&amp;#xA;            let chunks = []&amp;#xA;&amp;#xA;            navigator.mediaDevices.getUserMedia(constraints)&amp;#xA;                .then(stream =&gt; {&amp;#xA;&amp;#xA;                    const mediaRecorder = new MediaRecorder(stream)&amp;#xA;                    &amp;#xA;                    chkHearMic.onchange = e =&gt; {&amp;#xA;                        if(e.target.checked == true) {&amp;#xA;                            audioCtx.resume()&amp;#xA;                            makeSound(stream)&amp;#xA;                        } else {&amp;#xA;                            audioCtx.suspend()&amp;#xA;                        }&amp;#xA;                    }&amp;#xA;                    &amp;#xA;                    record.onclick = () =&gt; {&amp;#xA;                        mediaRecorder.start(1000)&amp;#xA;                        console.log(mediaRecorder.state)&amp;#xA;                        console.log(&quot;recorder started&quot;)&amp;#xA;                        record.style.background = &quot;red&quot;&amp;#xA;                        record.style.color = &quot;black&quot;&amp;#xA;                    }&amp;#xA;&amp;#xA;                    stop.onclick = () =&gt; {&amp;#xA;                        mediaRecorder.stop()&amp;#xA;                        console.log(mediaRecorder.state)&amp;#xA;                        console.log(&quot;recorder stopped&quot;)&amp;#xA;                        record.style.background = &quot;&quot;&amp;#xA;                        record.style.color = &quot;&quot;&amp;#xA;                    }&amp;#xA;&amp;#xA;                    mediaRecorder.onstop = e =&gt; {&amp;#xA;                        console.log(&quot;data available after MediaRecorder.stop() called.&quot;)&amp;#xA;                        const bb = new Blob(chunks, { &amp;#x27;type&amp;#x27; : &amp;#x27;audio/wav&amp;#x27; })&amp;#xA;                        socket.emit(&amp;#x27;voice&amp;#x27;,bb)&amp;#xA;                        const clipName = prompt(&quot;오디오 파일 제목을 입력하세요.&quot;, new Date())&amp;#xA;&amp;#xA;                        const clipContainer = document.createElement(&amp;#x27;article&amp;#x27;)&amp;#xA;                        const clipLabel = document.createElement(&amp;#x27;p&amp;#x27;)&amp;#xA;                        const audio = document.createElement(&amp;#x27;audio&amp;#x27;)&amp;#xA;                        const deleteButton = document.createElement(&amp;#x27;button&amp;#x27;)&amp;#xA;&amp;#xA;                        clipContainer.classList.add(&amp;#x27;clip&amp;#x27;)&amp;#xA;                        audio.setAttribute(&amp;#x27;controls&amp;#x27;, &amp;#x27;&amp;#x27;)&amp;#xA;                        deleteButton.innerHTML = &quot;삭제&quot;&amp;#xA;                        clipLabel.innerHTML = clipName&amp;#xA;&amp;#xA;                        clipContainer.appendChild(audio)&amp;#xA;                        clipContainer.appendChild(clipLabel)&amp;#xA;                        clipContainer.appendChild(deleteButton)&amp;#xA;                        soundClips.appendChild(clipContainer)&amp;#xA;&amp;#xA;                        audio.controls = true&amp;#xA;                        const blob = new Blob(chunks, {&amp;#xA;                            &amp;#x27;type&amp;#x27;: &amp;#x27;audio/ogg codecs=opus&amp;#x27;&amp;#xA;                        })&amp;#xA;&amp;#xA;                        chunks = []&amp;#xA;                        const audioURL = URL.createObjectURL(blob)&amp;#xA;                        audio.src = audioURL&amp;#xA;                        console.log(&quot;recorder stopped&quot;)&amp;#xA;&amp;#xA;                        deleteButton.onclick = e =&gt; {&amp;#xA;                            evtTgt = e.target&amp;#xA;                            evtTgt  .parentNode.parentNode.removeChild(evtTgt.parentNode)&amp;#xA;                        }&amp;#xA;                    }&amp;#xA;&amp;#xA;                  mediaRecorder.ondataavailable = function(e) {&amp;#xA;                    chunks.push(e.data)&amp;#xA;                    if (chunks.length &gt;= 5)&amp;#xA;                    {&amp;#xA;                        const bloddb = new Blob(chunks, { &amp;#x27;type&amp;#x27; : &amp;#x27;audio/wav&amp;#x27; })&amp;#xA;                        socket.emit(&amp;#x27;voice&amp;#x27;, bloddb)&amp;#xA;                         &amp;#xA;                        chunks = []&amp;#xA;                    }&amp;#xA;                    mediaRecorder.sendData = function(buffer) {&amp;#xA;                        const bloddb = new Blob(buffer, { &amp;#x27;type&amp;#x27; : &amp;#x27;audio/wav&amp;#x27; })&amp;#xA;                        socket.emit(&amp;#x27;voice&amp;#x27;, bloddb)&amp;#xA;}&amp;#xA;};&amp;#xA;                })&amp;#xA;                .catch(err =&gt; {&amp;#xA;                    console.log(&amp;#x27;The following error occurred: &amp;#x27; &amp;#x2B; err)&amp;#xA;                })&amp;#xA;        }&amp;#xA;    &lt;/script&gt;&#xA;&#xA;

    &#xA;

    ask exception was never retrieved&#xA;future: <task finished="finished" coro="<InstrumentedAsyncServer._handle_event_internal()" defined="defined" at="at"> exception=CouldntDecodeError(&#x27;Decoding failed. ffmpeg returned error code: 3199971767\n\nOutput from ffmpeg/avlib:\n\nffmpeg version 6.1.1-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers\r\n  built with gcc 12.2.0 (Rev10, Built by MSYS2 project)\r\n  configuration: --enable-gpl --enable-version3 --enable-static --pkg-config=pkgconf --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-dxva2 --enable-d3d11va --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\r\n  libavutil      58. 29.100 / 58. 29.100\r\n  libavcodec     60. 31.102 / 60. 31.102\r\n  libavformat    60. 16.100 / 60. 16.100\r\n  libavdevice    60.  3.100 / 60.  3.100\r\n  libavfilter     9. 12.100 /  9. 12.100\r\n  libswscale      7.  5.100 /  7.  5.100\r\n  libswresample   4. 12.100 /  4. 12.100\r\n  libpostproc    57.  3.100 / 57.  3.100\r\n[cache @ 000001d9828efe40] Inner protocol failed to seekback end : -40\r\n[matroska,webm @ 000001d9828efa00] EBML header parsing failed\r\n[cache @ 000001d9828efe40] Statistics, cache hits:0 cache misses:3\r\n[in#0 @ 000001d9828da3c0] Error opening input: Invalid data found when processing input\r\nError opening input file cache:pipe:0.\r\nError opening input files: Invalid data found when processing input\r\n&#x27;)>&#xA;Traceback (most recent call last):&#xA;  File "f:\fastapi-socketio-wb38\.vent\Lib\site-packages\socketio\async_admin.py", line 276, in _handle_event_internal&#xA;    ret = await self.sio.__handle_event_internal(server, sid, eio_sid,&#xA;          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&#xA;  File "f:\fastapi-socketio-wb38\.vent\Lib\site-packages\socketio\async_server.py", line 597, in _handle_event_internal&#xA;    r = await server._trigger_event(data[0], namespace, sid, *data[1:])&#xA;        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&#xA;  File "f:\fastapi-socketio-wb38\.vent\Lib\site-packages\socketio\async_server.py", line 635, in _trigger_event&#xA;    ret = handler(*args)&#xA;          ^^^^^^^^^^^^^^&#xA;  File "f:\fastapi-socketio-wb38\Python-Javascript-Websocket-Video-Streaming--main\poom2.py", line 153, in handle_voice&#xA;    audio_segment = AudioSegment.from_file(BytesIO(data), format="webm")&#xA;                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&#xA;  File "f:\fastapi-socketio-wb38\.vent\Lib\site-packages\pydub\audio_segment.py", line 773, in from_file&#xA;    raise CouldntDecodeError(&#xA;pydub.exceptions.CouldntDecodeError: Decoding failed. ffmpeg returned error code: 3199971767&#xA;&#xA;Output from ffmpeg/avlib:&#xA;&#xA;ffmpeg version 6.1.1-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 --pkg-config=pkgconf --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-dxva2 --enable-d3d11va --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. 29.100 / 58. 29.100&#xA;  libavcodec     60. 31.102 / 60. 31.102&#xA;  libavformat    60. 16.100 / 60. 16.100&#xA;  libavdevice    60.  3.100 / 60.  3.100&#xA;  libavfilter     9. 12.100 /  9. 12.100&#xA;  libswscale      7.  5.100 /  7.  5.100&#xA;  libswresample   4. 12.100 /  4. 12.100&#xA;  libpostproc    57.  3.100 / 57.  3.100&#xA;[cache @ 000001d9828efe40] Inner protocol failed to seekback end : -40&#xA;[matroska,webm @ 000001d9828efa00] EBML header parsing failed&#xA;[cache @ 000001d9828efe40] Statistics, cache hits:0 cache misses:3&#xA;[in#0 @ 000001d9828da3c0] Error opening input: Invalid data found when processing input&#xA;Error opening input file cache:pipe:0.&#xA;Error opening input files: Invalid data found when processing input&#xA;</task>

    &#xA;

    im using version of ffmpeg-6.1.1-full_build.&#xA;i dont know this error exist the stop button sent event correctly. but chunk data was not work correctly in python server.&#xA;my english was so bad. sry

    &#xA;

  • Ffmpeg input seeking - "Invalid NAL unit size"

    30 janvier 2024, par Dimitris

    I'm trying to use ffmpeg to get a 10-second clip from the middle of a video. The execution time of the command is important, that's why I've decided to use combined input & output seeking (as illustrated here).&#xA;The input video file is a CMAF with fragmented MP4, duration of 10 minutes.

    &#xA;

    I'm testing on a Mac, Ffmpeg version is 6.1.1.

    &#xA;

    This is the command that I'm using :

    &#xA;

    ffmpeg -nostdin -y -ss 290 -copyts -start_at_zero -i https://devcdn.flowplayer.com/5f07362e-c358-41d0-857a-c64302a3fcc9/cmaf/17bdb16d-71d1-414c-a291-a028bd45b9ec/playlist_360.m3u8 -ss 300.0 -t 10 -vcodec libwebp -lossless 0 -quality 60 -compression_level 2 -loop 0 -an -sn output.webp&#xA;

    &#xA;

    Result : no output file is created.

    &#xA;

    From what I understand it fails to seek position "290" in the video, probably due to "Invalid NAL unit size" errors.

    &#xA;

    Here's the output :

    &#xA;

    ffmpeg version N-106797-g580fb6a8c9-tessus Copyright (c) 2000-2022 the FFmpeg developersbuilt with Apple clang version 11.0.0 (clang-1100.0.33.17)configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplaylibavutil      57. 24.101 / 57. 24.101libavcodec     59. 27.100 / 59. 27.100libavformat    59. 23.100 / 59. 23.100libavdevice    59.  6.100 / 59.  6.100libavfilter     8. 37.100 /  8. 37.100libswscale      6.  6.100 /  6.  6.100libswresample   4.  6.100 /  4.  6.100libpostproc    56.  5.100 / 56.  5.100Input #0, mov,mp4,m4a,3gp,3g2,mj2, from &#x27;https://devcdn.flowplayer.com/5f07362e-c358-41d0-857a-c64302a3fcc9/cmaf/17bdb16d-71d1-414c-a291-a028bd45b9ec/playlist_360.cmfv&#x27;:Metadata:major_brand     : isomminor_version   : 1compatible_brands: isomavc1dashcmfccreation_time   : 2024-01-30T07:41:03.000000ZDuration: 00:09:56.54, start: 0.083333, bitrate: 458 kb/sStream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 1 kb/s, 24 fps, 24 tbr, 90k tbn (default)Metadata:creation_time   : 2024-01-30T07:41:03.000000Zhandler_name    : ETI ISO Video Media Handlervendor_id       : [0][0][0]ffmpeg version 6.1.1-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2023 the FFmpeg developers&#xA;  built with Apple clang version 11.0.0 (clang-1100.0.33.17)&#xA;  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay&#xA;  libavutil      58. 29.100 / 58. 29.100&#xA;  libavcodec     60. 31.102 / 60. 31.102&#xA;  libavformat    60. 16.100 / 60. 16.100&#xA;  libavdevice    60.  3.100 / 60.  3.100&#xA;  libavfilter     9. 12.100 /  9. 12.100&#xA;  libswscale      7.  5.100 /  7.  5.100&#xA;  libswresample   4. 12.100 /  4. 12.100&#xA;  libpostproc    57.  3.100 / 57.  3.100&#xA;[hls @ 0x7fc7bb904280] Skip (&#x27;#EXT-X-VERSION:6&#x27;)&#xA;[hls @ 0x7fc7bb904280] Opening &#x27;https://devcdn.flowplayer.com/5f07362e-c358-41d0-857a-c64302a3fcc9/cmaf/17bdb16d-71d1-414c-a291-a028bd45b9ec/playlist_360.cmfv&#x27; for reading&#xA;    Last message repeated 2 times&#xA;Input #0, hls, from &#x27;[**]/playlist_360.m3u8&#x27;:&#xA;  Duration: 00:09:56.46, start: 0.083333, bitrate: 0 kb/s&#xA;  Program 0 &#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;  Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 1 kb/s, 24 fps, 24 tbr, 90k tbn (default)&#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;      compatible_brands: isomavc1dashcmfc&#xA;      handler_name    : ETI ISO Video Media Handler&#xA;      vendor_id       : [0][0][0][0]&#xA;      encoder         : Elemental H.264&#xA;      major_brand     : isom&#xA;      minor_version   : 1&#xA;      creation_time   : 2024-01-30T07:41:03.000000Z&#xA;Stream mapping:&#xA;  Stream #0:0 -> #0:0 (h264 (native) -> webp (libwebp))&#xA;[hls @ 0x7fc7bb904280] Opening &#x27;https://devcdn.flowplayer.com/5f07362e-c358-41d0-857a-c64302a3fcc9/cmaf/17bdb16d-71d1-414c-a291-a028bd45b9ec/playlist_360.cmfv&#x27; for reading&#xA;    Last message repeated 2 times&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1772342253 > 1534).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1538&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1977545460 > 1481).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1485&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1694403391 > 1582).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1586&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1404850266 > 1661).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1665&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (703351242 > 1680).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1684&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-836978648 > 1751).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1755&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (752797651 > 1867).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1871&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1831058223 > 1833).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 1837&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1238958831 > 2067).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2071&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (435683248 > 2090).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2094&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (2136335178 > 2229).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2233&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1468707300 > 2203).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2207&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (482758774 > 2402).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2406&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1079612217 > 2417).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2421&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-608087491 > 2546).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2550&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-1457748625 > 2527).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2531&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1933919710 > 2734).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2738&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1004643870 > 2803).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2807&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-207765435 > 2988).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2992&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-196888537 > 2306).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2310&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1118966683 > 2620).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2624&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1325583054 > 2715).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2719&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-2003602869 > 2906).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2910&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1666330272 > 3085).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 3089&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (-742329993 > 2593).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2597&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (1326266794 > 2347).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2351&#xA;[NULL @ 0x7fc7bb804f40] Invalid NAL unit size (2459776 > 2155).&#xA;[NULL @ 0x7fc7bb804f40] missing picture in access unit with size 2159&#xA;[https @ 0x7fc7ba022a00] Opening &#x27;https://devcdn.flowplayer.com/5f07362e-c358-41d0-857a-c64302a3fcc9/cmaf/17bdb16d-71d1-414c-a291-a028bd45b9ec/playlist_360.cmfv&#x27; for reading&#xA;[...]&#xA;[vost#0:0/libwebp @ 0x7fc7bbb05780] No filtered frames for output stream, trying to initialize anyway.&#xA;Output #0, webp, to &#x27;output.webp&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf60.16.100&#xA;  Stream #0:0(und): Video: webp, yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 24 fps, 1k tbn (default)&#xA;    Metadata:&#xA;      variant_bitrate : 0&#xA;      compatible_brands: isomavc1dashcmfc&#xA;      handler_name    : ETI ISO Video Media Handler&#xA;      vendor_id       : [0][0][0][0]&#xA;      creation_time   : 2024-01-30T07:41:03.000000Z&#xA;      major_brand     : isom&#xA;      minor_version   : 1&#xA;      encoder         : Lavc60.31.102 libwebp&#xA;[out#0/webp @ 0x7fc7bbb04900] video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown&#xA;[out#0/webp @ 0x7fc7bbb04900] Output file is empty, nothing was encoded(check -ss / -t / -frames parameters if used)&#xA;frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=N/A bitrate=N/A speed=N/A &#xA;

    &#xA;

    What I've tried so far :

    &#xA;

      &#xA;
    1. Downloaded the input file to a local directory and used it as input to ffmpeg - same results.

      &#xA;

    2. &#xA;

    3. Used the mp4 file from the playlist directly as an input to ffmpeg - worked but execution time is very slow

      &#xA;

    4. &#xA;

    5. Emmited the input seeking part (-ss 290 -copyts -start_at_zero) from the command - worked but also very slow in terms of execution time

      &#xA;

    6. &#xA;

    &#xA;

    Any ideas on why I'm getting "Invalid NAL unit size" and how to make the command work with input seeking ?

    &#xA;