Recherche avancée

Médias (91)

Autres articles (42)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

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

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

Sur d’autres sites (6342)

  • How to concatenate 3 mp4 files using ffmpeg (facing error in resultant video) ?

    5 février 2021, par Mayank Thapliyal

    I have 3 videos of mp4 format. They have same resolution (640 X 1280) but other properties like frame rate etc are different. I want to join them back to back.So I gave a check on internet and I used the following method

    


    :: Create File List
echo file file1.mp4 >  mylist.txt 
echo file file2.mp4 >> mylist.txt
echo file file3.mp4 >> mylist.txt

:: Concatenate Files
ffmpeg -f concat -i mylist.txt -c copy output.mp4


    


    But unfortunately it did not worked.In the resultant video, file1 part got freezed, and audio of whole video shifted (no idea how).And other methods are also not working properly

    


    I just want to join them back to back.Any idea how to do it ?

    


    Edit :- I gave a check on the output of the ffmpeg (using pause command in bat and discovered the following. Maybe it may help regarding the issue)

    


    C:\Users\Cascade_Games\Desktop\Cascade Empire\ffmpeg-4.3.1-2020-10-01-full_build\bin>ffmpeg -f concat -i mylist.txt -vcodec copy -acodec copy Mux1.mp4
ffmpeg version 4.3.1-2020-10-01-full_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.0 (Rev3, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --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
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002a0474e6a40] Auto-inserting h264_mp4toannexb bitstream filter
Input #0, concat, from 'mylist.txt':
  Duration: N/A, start: -0.023220, bitrate: 2447 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x640 [SAR 1:1 DAR 2:1], 2320 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s
    Metadata:
      handler_name    : SoundHandler
Output #0, mp4, to 'Mux1.mp4':
  Metadata:
    encoder         : Lavf58.45.100
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x640 [SAR 1:1 DAR 2:1], q=2-31, 2320 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002a04750d700] Auto-inserting h264_mp4toannexb bitstream filter
[mov,mp4,m4a,3gp,3g2,mj2 @ 000002a0474ef040] Auto-inserting h264_mp4toannexb bitstream filter
[mp4 @ 000002a0478e09c0] Non-monotonous DTS in output stream 0:1; previous: 30282976, current: 27826977; changing to 30282977. This may result in incorrect timestamps in the output file.
[mp4 @ 000002a0478e09c0] Non-monotonous DTS in output stream 0:1; previous: 30282977, current: 27828129; changing to 30282978. This may result in incorrect timestamps in the output file.
(Same Thing was getting repeated,hence I deleted it)
[mp4 @ 000002a0478e09c0] Non-monotonous DTS in output stream 0:1; previous: 30283209, current: 28095393; changing to 30283210. This may result in incorrect timestamps in the output file.
[mp4 @ 000002a0478e09c0] Non-monotonous DTS in output stream 0:1; previous: 30283210, current: 28096545; changing to 30283211. This may result in incorrect timestamps in the output file.
[mp4 @ 000002a0478e09c0] aac bitstream error
    Last message repeated 234 times
frame=18937 fps=11438 q=-1.0 Lsize=   49051kB time=00:11:26.69 bitrate= 585.2kbits/s speed= 415x
video:40720kB audio:7653kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.401324%


    


    Edit :-
Info of all files (I have changed the video name to 1.mp4,2.mp4,3.mp4)

    


    C:\Users\Cascade_Games\Desktop\Cascade Empire\ffmpeg-4.3.1-2020-10-01-full_build\bin>ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4
ffmpeg version 4.3.1-2020-10-01-full_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10.2.0 (Rev3, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-libsnappy --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --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
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:05.27, start: 0.000000, bitrate: 2337 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x640 [SAR 1:1 DAR 2:1], 2320 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandle
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:10:25.70, start: 0.000000, bitrate: 616 kb/s
    Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x640 [SAR 1:1 DAR 2:1], 511 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #1:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)
    Metadata:
      handler_name    : SoundHandle
Input #2, mov,mp4,m4a,3gp,3g2,mj2, from '3.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.45.100
  Duration: 00:00:08.50, start: 0.000000, bitrate: 447 kb/s
    Stream #2:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 1280x640 [SAR 1:1 DAR 2:1], 228 kb/s, 2 fps, 2 tbr, 16384 tbn, 4 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #2:1(und): Audio: mp3 (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 319 kb/s (default)
    Metadata:
      handler_name    : SoundHandler


    


  • When I append a silent audio (mp3) to an existing list of audio it garbles the final audio ?

    6 février 2020, par Marie

    After several hours I have narrowed down the issue with the garbled audio to be the 2-seconds silence audio mp3 I am appending (I think I had produced it once with Wavelab)

    However, I tried using ffmpeg according to a post to produce a similar 2 seconds audio but it too will corrupt/garble/chop voice in the final concatenation of audio files.

    ffmpeg -f lavfi -i anullsrc=r=44100:cl=mono -t 2 -q:a 9 -acodec libmp3lame SILENCE_2sec.MP3

    I typically will have several audio files to concatenate together but for simplicity I have able to narrow it to a couple of files simplifying to the following script. A simple Windows batch file you should be able to use and reproduce the issue at your end.

    rem
    rem  
    SET EXE="S:\_BINS\FFmpeg 4.2.1 20200112\bin\ffmpeg.exe"

    SET ROOTPATH=.\

    SET IN_FILE="%ROOTPATH%MyList.txt"

    ECHO file '%ROOTPATH%HELLO.mp3' > MyList.txt
    ECHO file 'SILENCE_2sec.MP3' >> MyList.txt

    SET OPTIONS= -f concat -safe 0 -i  %IN_FILE%  -c copy -y

    SET OUT_FILE="%ROOTPATH%CONCATENATED_AUDIO_2.MP3"

    SET INFO_FILE="INFO.TXT"

    %EXE% %OPTIONS%  %OUT_FILE% 1> %INFO_FILE% 2>&1

    ECHO ======================== >> %INFO_FILE%
    ECHO IN_FILE=%IN_FILE%  >> %INFO_FILE%
    ECHO EXE=%EXE%  >> %INFO_FILE%
    ECHO OPTIONS=%OPTIONS%  >> %INFO_FILE%
    ECHO ======================== >> %INFO_FILE%

    Here is the console info output from the ffmpeg, let me know if you need other output include ones from ffprobe

    ffmpeg version git-2020-01-10-3d894db Copyright (c) 2000-2020 the FFmpeg developers
     built with gcc 9.2.1 (GCC) 20191125
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
     libavutil      56. 38.100 / 56. 38.100
     libavcodec     58. 65.103 / 58. 65.103
     libavformat    58. 35.101 / 58. 35.101
     libavdevice    58.  9.103 / 58.  9.103
     libavfilter     7. 70.101 /  7. 70.101
     libswscale      5.  6.100 /  5.  6.100
     libswresample   3.  6.100 /  3.  6.100
     libpostproc    55.  6.100 / 55.  6.100
    [mp3 @ 000000000036af80] Estimating duration from bitrate, this may be inaccurate
    Input #0, concat, from '.\MyList.txt':
     Duration: N/A, start: 0.000000, bitrate: 32 kb/s
       Stream #0:0: Audio: mp3, 24000 Hz, mono, fltp, 32 kb/s
    Output #0, mp3, to '.\CONCATENATED_AUDIO_2.MP3':
     Metadata:
       TSSE            : Lavf58.35.101
       Stream #0:0: Audio: mp3, 24000 Hz, mono, fltp, 32 kb/s
    Stream mapping:
     Stream #0:0 -> #0:0 (copy)
    Press [q] to stop, [?] for help
    [mp3 @ 0000000000372d00] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 17280 >= 17255
    size=      11kB time=00:00:02.73 bitrate=  33.2kbits/s speed=2.73e+03x    
    video:0kB audio:11kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 2.137446%
    ========================
    IN_FILE=".\MyList.txt"  
    EXE="S:\_BINS\FFmpeg 4.2.1 20200112\bin\ffmpeg.exe"  
    OPTIONS= -f concat -safe 0 -i  ".\MyList.txt"  -c copy -y  
    ========================  

    I believe I am running FFmpeg 4.2.1, recently installed (20200112)

    You may produce the HELLO.mp3 by saving the following link

    https://translate.google.com.vn/translate_tts?en=UTF-8&q=Hello+&tl=en&client=tw-ob

    FYI, I am still a novice of ffmpeg and using it more like a black box with the help I received in this very super forum.
    Please be as explicit as you can with command line options on how I can fix this issue.
    Thank you.

    Additional Hints Debugging :

    If I append more files after the silence audio it seems that the silence audio impacts (garbles, chops) the previous audio.
    You may try the following for the list of audio files input.

    ECHO file '%ROOTPATH%HELLO.mp3' > MyList.txt
    ECHO file 'SILENCE_2sec.MP3' >> MyList.txt
    ECHO file '%ROOTPATH%HELLO.mp3' >> MyList.txt
    ECHO file '%ROOTPATH%HELLO.mp3' >> MyList.txt

    I typically add one or more silence file to derive a post silence effect after the actual audio. That’s my current logic. However if you have an alternative to appending a silence in the process of concatenating several audio files or appending x-seconds silence to an existing audio file. I can use that method as well from my coding.

    Thank you.

  • FFmpeg stream stops after a certain time

    7 avril 2021, par Anarno

    We have a little Nodejs app, which starts a stream process, with a child_process.spawn. On the client-side, we have an HTML5-canvas element, which records the video data new MediaRecorder(canvas.captureStream(30), config), then this client sends its data to our Nodejs server over a WebSocket connection. We using FFmpeg for video encoding and decoding, then we send the data to our 3-rd party service (MUX), which accepts the stream and broadcasts them. Sadly the process continuously loses its fps, and after in general 1 minute, stops with an interesting error code. (when we save the video result locally instead of streaming via rtmps, it works perfectly.

    


    *The whole system is in docker.

    


    The error :

    


     stderr: [tls @ 0x7f998e7bca40] Error in the pull function.&#xA;Our_app_logs:    | av_interleaved_write_frame(): I/O error    &#xA;Our_app_logs:    | [flv @ 0x7f998eeb1680] Failed to update header with correct duration.&#xA;Our_app_logs:    | [flv @ 0x7f998eeb1680] Failed to update header with correct filesize.&#xA;Our_app_logs:    | Error writing trailer of rtmps://global-live.mux.com/app/94e85197-78a3-f092-3437-03d93aba74e0: I/O error&#xA;Our_app_logs:    |  <buffer 5b="5b" 74="74" 6c="6c" 73="73" 20="20" 40="40" 30="30" 78="78" 37="37" 66="66" 39="39" 38="38" 65="65" 62="62" 63="63" 61="61" 34="34" 5d="5d" 45="45" 72="72" 6f="6f" 69="69" 6e="6e" 68="68" 70="70" 75="75" 2e="2e">&#xA;Our_app_logs:    | stderr: frame= 1478 fps= 25 q=23.0 Lsize=  &#xA;   402kB time=00:01:02.89 bitrate=  52.4kbits/s speed=1.05x&#xA;Our_app_logs:    | video:369kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 9.034639%&#xA;Our_app_logs:    |  <buffer 66="66" 72="72" 61="61" 6d="6d" 65="65" 3d="3d" 20="20" 31="31" 34="34" 37="37" 38="38" 70="70" 73="73" 32="32" 35="35" 71="71" 33="33" 2e="2e" 30="30" 4c="4c" 69="69" 7a="7a" 6b="6b" 42="42" 74="74">&#xA;Our_app_logs:    | stderr: [tls @ 0x7f998e7bca40]  <buffer 5b="5b" 6c="6c" 73="73" 20="20" 40="40" 30="30" 78="78" 37="37" 66="66" 39="39" 38="38" 65="65" 62="62" 63="63" 61="61" 34="34" 5d="5d">    &#xA;Our_app_logs:    | stderr: The specified session has been invalidated for some reason.&#xA;Our_app_logs:    |  <buffer 54="54" 68="68" 65="65" 20="20" 73="73" 70="70" 63="63" 69="69" 66="66" 64="64" 6f="6f" 6e="6e" 61="61" 62="62" 76="76" 6c="6c" 74="74" 72="72" 6d="6d">&#xA;Our_app_logs:    | stderr:     Last message repeated 1 times  &#xA;Our_app_logs:    |  <buffer 20="20" 4c="4c" 61="61" 73="73" 74="74" 6d="6d" 65="65" 67="67" 72="72" 70="70" 64="64" 31="31" 69="69" 0a="0a">  &#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: frame I:13    Avg QP: 5.39  size:  &#xA;2478&#xA;Our_app_logs:    |  <buffer 66="66" 72="72" 61="61" 6d="6d" 65="65" 20="20" 49="49" 3a="3a" 31="31" 33="33" 41="41" 76="76" 67="67" 51="51" 50="50" 35="35" 2e="2e" 39="39" 73="73" 69="69" 7a="7a" 32="32" 34="34" 37="37" 38="38" 0a="0a">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: frame P:1465  Avg QP:13.51  size:  &#xA; 235&#xA;Our_app_logs:    |  <buffer 66="66" 72="72" 61="61" 6d="6d" 65="65" 20="20" 50="50" 3a="3a" 31="31" 34="34" 36="36" 35="35" 41="41" 76="76" 67="67" 51="51" 33="33" 2e="2e" 73="73" 69="69" 7a="7a" 32="32" 0a="0a">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: mb I  I16..4: 99.2%  0.1%  0.7%    &#xA;Our_app_logs:    |  <buffer 6d="6d" 62="62" 20="20" 49="49" 31="31" 36="36" 2e="2e" 34="34" 3a="3a" 39="39" 32="32" 25="25" 30="30" 37="37" 0a="0a">        &#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: mb P  I16..4:  0.3%  0.0%  0.0%  P16..4:  0.1%  0.0%  0.0%  0.0%  0.0%    skip:99.6%&#xA;Our_app_logs:    |  <buffer 6d="6d" 62="62" 20="20" 50="50" 49="49" 31="31" 36="36" 2e="2e" 34="34" 3a="3a" 30="30" 33="33" 25="25">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: 8x8 transform intra:0.3% inter:17.3%&#xA;Our_app_logs:    |  <buffer 38="38" 78="78" 20="20" 74="74" 72="72" 61="61" 6e="6e" 73="73" 66="66" 6f="6f" 6d="6d" 69="69" 3a="3a" 30="30" 2e="2e" 33="33" 25="25" 65="65" 31="31" 37="37" 0a="0a">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: coded y,uvDC,uvAC intra: 1.4% 6.9% &#xA;4.7% inter: 0.0% 0.0% 0.0%&#xA;Our_app_logs:    |  <buffer 63="63" 6f="6f" 64="64" 65="65" 20="20" 79="79" 2c="2c" 75="75" 76="76" 44="44" 43="43" 41="41" 69="69" 6e="6e" 74="74" 72="72" 61="61" 3a="3a" 31="31" 2e="2e" 34="34" 25="25" 36="36" 39="39" 37="37" 30="30">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: i16 v,h,dc,p: 90%  5%  5%  0%&#xA;Our_app_logs:    |  <buffer 69="69" 31="31" 36="36" 20="20" 76="76" 2c="2c" 68="68" 64="64" 63="63" 70="70" 3a="3a" 39="39" 30="30" 25="25" 35="35" 0a="0a">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% &#xA;18% 51%  6%  0%  0%  0%  0%  3%&#xA;Our_app_logs:    |  <buffer 69="69" 38="38" 20="20" 76="76" 2c="2c" 68="68" 64="64" 63="63" 6c="6c" 72="72" 75="75" 3a="3a" 32="32" 33="33" 25="25" 31="31" 35="35" 36="36" 30="30">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 33% &#xA;25% 40%  0%  0%  0%  0%  0%  0%&#xA;Our_app_logs:    |  <buffer 69="69" 34="34" 20="20" 76="76" 2c="2c" 68="68" 64="64" 63="63" 6c="6c" 72="72" 75="75" 3a="3a" 33="33" 25="25" 32="32" 35="35" 30="30">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: i8c dc,h,v,p: 86%  7%  6%  0%&#xA;Our_app_logs:    |  <buffer 69="69" 38="38" 63="63" 20="20" 64="64" 2c="2c" 68="68" 76="76" 70="70" 3a="3a" 36="36" 25="25" 37="37" 30="30" 0a="0a">&#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: Weighted P-Frames: Y:0.1% UV:0.1%  &#xA;Our_app_logs:    |  <buffer 57="57" 65="65" 69="69" 67="67" 68="68" 74="74" 64="64" 20="20" 50="50" 2d="2d" 46="46" 72="72" 61="61" 6d="6d" 73="73" 3a="3a" 59="59" 30="30" 2e="2e" 31="31" 25="25" 55="55" 56="56" 0a="0a">  &#xA;Our_app_logs:    | stderr: [libx264 @ 0x7f998e790080]  <buffer 5b="5b" 6c="6c" 69="69" 62="62" 78="78" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 37="37" 66="66" 39="39" 38="38" 65="65" 5d="5d">&#xA;Our_app_logs:    | stderr: kb/s:2041.23&#xA;Our_app_logs:    |  <buffer 6b="6b" 62="62" 2f="2f" 73="73" 3a="3a" 32="32" 30="30" 34="34" 31="31" 2e="2e" 33="33" 0a="0a">&#xA;Our_app_logs:    | stderr: Conversion failed!&#xA;Our_app_logs:    |  <buffer 43="43" 6f="6f" 6e="6e" 76="76" 65="65" 72="72" 73="73" 69="69" 20="20" 66="66" 61="61" 6c="6c" 64="64" 21="21" 0a="0a">&#xA;Our_app_logs:    | close, code: 1, signal: null&#xA;Our_app_logs:    | from react application: 14203&#xA;Our_app_logs:    | Status ok...&#xA;Our_app_logs:    | Data ok...&#xA;Our_app_logs:    | FFmpeg ok...&#xA;Our_app_logs:    | Writeable ok... <buffer c4="c4" 81="81" 0e="0e" 11="11" 00="00" 01="01" 61="61" c7="c7" 80="80" 5b="5b" b6="b6" 72="72" 03="03" bc="bc" b7="b7" de="de" 59="59" 7f="7f" 3c="3c" 27="27" b3="b3" 87="87" b2="b2" e6="e6" 84="84" d0="d0" f0="f0" 02="02" 2d="2d" c0="c0" 08="08" 70="70"> undefined&#xA;Our_app_logs:    | stderr: ffmpeg version 4.2.4 Copyright (c) &#xA;2000-2020 the FFmpeg developers&#xA;Our_app_logs:    |   built with gcc 9.2.0 (Alpine 9.2.0)&#xA;Our_app_logs:    |   configuration: --prefix=/usr --enable-avresample --enable-avfilter --enable-gnutls --enable-gpl --enable-libass --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libx264 --enable-libx265 --enable-libtheora --enable-libv4l2 --enable-postproc --enable-pic --enable-pthreads --enable-shared --enable-libxcb --disable-stripping --disable-static --disable-librtmp --enable-vaapi --enable-vdpau --enable-libopus --disable-debug&#xA;Our_app_logs:    |  <buffer 66="66" 6d="6d" 70="70" 65="65" 67="67" 20="20" 76="76" 72="72" 73="73" 69="69" 6f="6f" 6e="6e" 34="34" 2e="2e" 32="32" 43="43" 79="79" 68="68" 74="74" 28="28" 63="63" 29="29" 30="30" 2d="2d" 46="46">&#xA;Our_app_logs:    | stderr:   libavutil      56. 31.100 / 56. 31.100&#xA;Our_app_logs:    |   libavcodec     58. 54.100 / 58. 54.100   &#xA;Our_app_logs:    |   libavformat    58. 29.100 / 58. 29.100&#xA;Our_app_logs:    |   libavdevice    58.  8.100 / 58.  8.100&#xA;Our_app_logs:    |   libavfilter     7. 57.100 /  7. 57.100&#xA;Our_app_logs:    |   libavresample   4.  0.  0 /  4.  0.  0   &#xA;Our_app_logs:    |   libswscale      5.  5.100 /  5.  5.100   &#xA;Our_app_logs:    |   libswresample   3.  5.100 /  3.  5.100   &#xA;Our_app_logs:    |   libpostproc    55.  5.100 / 55.  5.100   &#xA;Our_app_logs:    |  <buffer 20="20" 6c="6c" 69="69" 62="62" 61="61" 76="76" 75="75" 74="74" 35="35" 36="36" 2e="2e" 33="33" 31="31" 30="30" 2f="2f" 0a="0a" 63="63" 6f="6f">&#xA;Our_app_logs:    | stderr: [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    |     Last message repeated 4 times&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    |  <buffer 5b="5b" 68="68" 32="32" 36="36" 34="34" 20="20" 40="40" 30="30" 78="78" 37="37" 66="66" 39="39" 5d="5d" 6e="6e" 6f="6f" 2d="2d" 65="65" 69="69" 73="73" 74="74" 67="67" 50="50" 53="53" 31="31" 72="72">&#xA;Our_app_logs:    | stderr: [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    |     Last message repeated 5 times&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_headerOur_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] non-existing PPS 14 referenced&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] decode_slice_header error&#xA;Our_app_logs:    | [h264 @ 0x7f299f44f600] no frame!&#xA;&#xA;</buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer></buffer>

    &#xA;

    The FFmpeg config :

    &#xA;

    const FFMPEG_CONFIG = [&#xA;  &#x27;-i&#x27;,&#xA;  &#x27;-&#x27;,&#xA;&#xA;  // video codec config: low latency, adaptive bitrate&#xA;  //   &#x27;-vcodec&#x27;,&#xA;  //   &#x27;copy&#x27;,&#xA;  &#x27;-c:v&#x27;,&#xA;  &#x27;libx264&#x27;,&#xA;  &#x27;-preset&#x27;,&#xA;  &#x27;veryfast&#x27;,&#xA;  &#x27;-tune&#x27;,&#xA;  &#x27;zerolatency&#x27;,&#xA;&#xA;  // audio codec config: sampling frequency (11025, 22050, 44100), bitrate 64 kbits&#xA;  &#x27;-c:a&#x27;,&#xA;  &#x27;aac&#x27;,&#xA;  &#x27;-ar&#x27;,&#xA;  &#x27;44100&#x27;,&#xA;  &#x27;-b:a&#x27;,&#xA;  &#x27;64k&#x27;,&#xA;&#xA;  //force to overwrite&#xA;  &#x27;-y&#x27;,&#xA;&#xA;  // used for audio sync&#xA;  &#x27;-use_wallclock_as_timestamps&#x27;,&#xA;  &#x27;1&#x27;,&#xA;  &#x27;-async&#x27;,&#xA;  &#x27;1&#x27;,&#xA;&#xA;  //&#x27;-filter_complex&#x27;, &#x27;aresample=44100&#x27;, // resample audio to 44100Hz, needed if input is not 44100&#xA;  //&#x27;-strict&#x27;, &#x27;experimental&#x27;,&#xA;  &#x27;-bufsize&#x27;,&#xA;  &#x27;1000&#x27;,&#xA;  &#x27;-f&#x27;,&#xA;  &#x27;flv&#x27;,&#xA;];&#xA;

    &#xA;

    The process :

    &#xA;

    const process = child_process.spawn(&#x27;ffmpeg&#x27;, [&#xA;      ...FFMPEG_CONFIG,&#xA;      //   &#x27;local.bin&#x27;,&#xA;      url,&#xA;    ]);&#xA; &#xA;    process.stderr.on(&#x27;data&#x27;, data => {&#xA;      console.log(`stderr: ${data}`, data);&#xA;    });&#xA;&#xA;    process.stdin.on(&#x27;error&#x27;, e => {&#xA;      console.log(&#x27;FFmpeg STDIN Error&#x27;, e);&#xA;    });&#xA;&#xA;    process.on(&#x27;error&#x27;, err => console.log(err));&#xA;&#xA;    process.on(&#x27;close&#x27;, (code, signal) => {&#xA;      console.log(`close, code: ${code}, signal: ${signal}`);&#xA;    });&#xA;

    &#xA;

    The writing :

    &#xA;

    if (!Buffer.isBuffer(data)) return;&#xA;if (!process.stdin.writable) return;&#xA;process.stdin.write(data);&#xA;

    &#xA;