Recherche avancée

Médias (0)

Mot : - Tags -/xmlrpc

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (47)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

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

  • ffmpeg x11grab to streamable format

    2 juin 2021, par Jintor

    2 FFMPEG process

    


    (1) generating a ffmpeg x11grab to a .mp4
(2) take the .mp4 and restream it simultaneously to multiple rtmp endpoints

    


    ISSUE the generated file in (1) have this error "moov atom not found"

    


    This is the command that generate (1) :

    


    ffmpeg -re -y -f x11grab -draw_mouse 0 -framerate 30 
-video_size $RESOLUTION -i :$DISPLAY_NUM -c:a aac -c:v libx264 
-movflags +faststart -preset ultrafast -crf 28 -refs 4 -qmin 4 
-pix_fmt yuv420p -filter:v fps=30 file.mp4


    


    in the (2) => when I try to ffmpeg -i file.mp4 output somewhere : I get "moov atom not found" so the (2) can't read or open (1).

    


    What I'm I missing

    


    in (1) -movflags +faststart doesn't seem to fix the issue

    


    ••••••• EDIT : more details on the context ••••••

    


    I'm using openvidu : webrtc with kurento and coturn.

    


    The record feature creates a .mp4 on the fly as the chat is going on.

    


    To start the recording, there is an API call i can make to my server and it automatically stops when all users leaves the chatroom OR do an other api call to stop. see composed video in this link https://docs.openvidu.io/en/2.17.0/advanced-features/recording/

    


    openvidu have also webhooks.

    


    My problem is not how to stop ffmpeg, but getting FFMPEG to encode while the mp4 or other is being generated "on the fly".

    


    There is 2 options :

    


    OPTION 1 : individual => 1 .webm per camare => this .webm ffmpeg can restream as hls or RTMP => it's working.

    


    OPTION 2 : ** but the issue is with "Composed" video => it's using ffmpeg to x11grab the session... but it's mp4 without moov ato, so ffmpeg don't do anything with this.

    


    see the composed.sh script here
https://github.com/OpenVidu/openvidu/blob/master/openvidu-server/docker/openvidu-recording/scripts/composed.sh

    


    ***************** EDIT 3 *************

    


    in the .sh this is the part that is creating the mp4

    


    ffmpeg -y -f alsa -i pulse -f x11grab -draw_mouse 0
-framerate $FRAMERATE -video_size $RESOLUTION -i :$DISPLAY_NUM
-c:a aac -c:v libx264 -preset ultrafast
-crf 28 -refs 4 -qmin 4 -pix_fmt yuv420p
-filter:v fps=$FRAMERATE "/recordings/$VIDEO_ID/$VIDEO_NAME.$VIDEO_FORMAT"

    


    How can I modify this to have better result example VP8 or VP9 with good quality .webm so that the ffpmeg second command(2) can encode it live...

    


    **** EDIT 4 ********

    


    I tried this it worked for 30 seconds and suddenly stopped

    


        &lt;./stop ffmpeg -y -f alsa -i pulse -f &#xA;x11grab -draw_mouse 0 -framerate $FRAMERATE &#xA;-video_size $RESOLUTION -i :$DISPLAY_NUM &#xA;-c:v libx264 -b:v 1396k -b:a 128k -ar 44100 -maxrate 1369k &#xA;-pix_fmt yuv420p -preset veryfast -tune zerolatency &#xA;-c:a aac -ac 2 -profile:v main -flags -global_header &#xA;-bufsize 969k -hls_time 1 -hls_list_size 0 -g 30 &#xA;-start_number 0 -streaming 1 -hls_playlist 1 &#xA;-lhls 1 -hls_playlist_type event -f hls "/recordings/$VIDEO_ID/$VIDEO_NAME".m3u8&#xA;&#xA;&#xA;N: [pulseaudio] main.c: Running in system mode, forcibly disabling SHM mode.&#xA;N: [pulseaudio] main.c: Running in system mode, forcibly disabling exit idle time.&#xA;Display in use -> :99&#xA;----------------------------------------&#xA;ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers&#xA;  built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)&#xA;  configuration: --prefix=/usr --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;  libavutil      56. 31.100 / 56. 31.100&#xA;  libavcodec     58. 54.100 / 58. 54.100&#xA;  libavformat    58. 29.100 / 58. 29.100&#xA;  libavdevice    58.  8.100 / 58.  8.100&#xA;  libavfilter     7. 57.100 /  7. 57.100&#xA;  libavresample   4.  0.  0 /  4.  0.  0&#xA;  libswscale      5.  5.100 /  5.  5.100&#xA;  libswresample   3.  5.100 /  3.  5.100&#xA;  libpostproc    55.  5.100 / 55.  5.100&#xA;Guessed Channel Layout for Input Stream #0.0 : stereo&#xA;Input #0, alsa, from &#x27;pulse&#x27;:&#xA;  Duration: N/A, start: 1617150428.783763, bitrate: 1536 kb/s&#xA;    Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s&#xA;[x11grab @ 0x55e88a4e8780] Stream #0: not enough frames to estimate rate; consider increasing probesize&#xA;Input #1, x11grab, from &#x27;:99&#x27;:&#xA;  Duration: N/A, start: 1617150428.837799, bitrate: N/A&#xA;    Stream #1:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1920x1080, 30 fps, 1000k tbr, 1000k tbn, 1000k tbc&#xA;Stream mapping:&#xA;  Stream #1:0 -> #0:0 (rawvideo (native) -> h264 (libx264))&#xA;  Stream #0:0 -> #0:1 (pcm_s16le (native) -> aac (native))&#xA;Press [q] to stop, [?] for help&#xA;[libx264 @ 0x55e88a4f70c0] max bitrate less than average bitrate, assuming CBR&#xA;[libx264 @ 0x55e88a4f70c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512&#xA;[libx264 @ 0x55e88a4f70c0] profile Main, level 4.0&#xA;[alsa @ 0x55e88a4c2e40] Thread message queue blocking; consider raising the thread_queue_size option (current value: 8)&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619940.ts&#x27; for writing&#xA;Output #0, hls, to &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8&#x27;:&#xA;  Metadata:&#xA;    encoder         : Lavf58.29.100&#xA;    Stream #0:0: Video: h264 (libx264), yuv420p(progressive), 1920x1080, q=-1--1, 1396 kb/s, 30 fps, 90k tbn, 30 tbc&#xA;    Metadata:&#xA;      encoder         : Lavc58.54.100 libx264&#xA;    Side data:&#xA;      cpb: bitrate max/min/avg: 1369000/0/1396000 buffer size: 969000 vbv_delay: -1&#xA;    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 128 kb/s&#xA;    Metadata:&#xA;      encoder         : Lavc58.54.100 aac&#xA;frame=   16 fps=0.0 q=21.0 size=N/A time=00:00:00.53 bitrate=N/A speed=1.06x    &#xA;frame=   31 fps= 31 q=16.0 size=N/A time=00:00:01.03 bitrate=N/A speed=1.02x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619941.ts&#x27; for writing&#xA;frame=   47 fps= 31 q=21.0 size=N/A time=00:00:01.56 bitrate=N/A speed=1.03x    &#xA;frame=   62 fps= 30 q=22.0 size=N/A time=00:00:02.06 bitrate=N/A speed=1.02x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619942.ts&#x27; for writing&#xA;frame=   77 fps= 30 q=24.0 size=N/A time=00:00:02.56 bitrate=N/A speed=1.01x    &#xA;frame=   92 fps= 30 q=22.0 size=N/A time=00:00:03.06 bitrate=N/A speed=0.999x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619943.ts&#x27; for writing&#xA;frame=  108 fps= 30 q=29.0 size=N/A time=00:00:03.60 bitrate=N/A speed=   1x    &#xA;frame=  124 fps= 30 q=21.0 size=N/A time=00:00:04.13 bitrate=N/A speed=1.01x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619944.ts&#x27; for writing&#xA;frame=  139 fps= 30 q=20.0 size=N/A time=00:00:04.63 bitrate=N/A speed=1.01x    &#xA;frame=  154 fps= 30 q=18.0 size=N/A time=00:00:05.13 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619945.ts&#x27; for writing&#xA;frame=  169 fps= 30 q=19.0 size=N/A time=00:00:05.63 bitrate=N/A speed=   1x    &#xA;frame=  185 fps= 30 q=19.0 size=N/A time=00:00:06.16 bitrate=N/A speed=1.01x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619946.ts&#x27; for writing&#xA;frame=  199 fps= 30 q=20.0 size=N/A time=00:00:06.63 bitrate=N/A speed=   1x    &#xA;frame=  215 fps= 30 q=19.0 size=N/A time=00:00:07.16 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619947.ts&#x27; for writing&#xA;frame=  230 fps= 30 q=19.0 size=N/A time=00:00:07.66 bitrate=N/A speed=   1x    &#xA;frame=  242 fps= 30 q=18.0 size=N/A time=00:00:08.06 bitrate=N/A speed=0.99x    &#xA;frame=  254 fps= 29 q=17.0 size=N/A time=00:00:08.46 bitrate=N/A speed=0.979x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619948.ts&#x27; for writing&#xA;frame=  276 fps= 30 q=17.0 size=N/A time=00:00:09.20 bitrate=N/A speed=1.01x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec133903625619949.ts&#x27; for writing&#xA;frame=  290 fps= 30 q=21.0 size=N/A time=00:00:09.66 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199410.ts&#x27; for writing&#xA;frame=  306 fps= 30 q=31.0 size=N/A time=00:00:10.20 bitrate=N/A speed=   1x    &#xA;frame=  322 fps= 30 q=21.0 size=N/A time=00:00:10.73 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199411.ts&#x27; for writing&#xA;frame=  337 fps= 30 q=21.0 size=N/A time=00:00:11.23 bitrate=N/A speed=   1x    &#xA;frame=  352 fps= 30 q=19.0 size=N/A time=00:00:11.73 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199412.ts&#x27; for writing&#xA;frame=  367 fps= 30 q=19.0 size=N/A time=00:00:12.23 bitrate=N/A speed=   1x    &#xA;frame=  382 fps= 30 q=18.0 size=N/A time=00:00:12.73 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199413.ts&#x27; for writing&#xA;frame=  397 fps= 30 q=18.0 size=N/A time=00:00:13.23 bitrate=N/A speed=   1x    &#xA;frame=  412 fps= 30 q=18.0 size=N/A time=00:00:13.73 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199414.ts&#x27; for writing&#xA;frame=  428 fps= 30 q=18.0 size=N/A time=00:00:14.26 bitrate=N/A speed=   1x    &#xA;frame=  443 fps= 30 q=17.0 size=N/A time=00:00:14.76 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199415.ts&#x27; for writing&#xA;frame=  458 fps= 30 q=18.0 size=N/A time=00:00:15.26 bitrate=N/A speed=   1x    &#xA;frame=  474 fps= 30 q=17.0 size=N/A time=00:00:15.80 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199416.ts&#x27; for writing&#xA;frame=  489 fps= 30 q=18.0 size=N/A time=00:00:16.30 bitrate=N/A speed=   1x    &#xA;frame=  504 fps= 30 q=17.0 size=N/A time=00:00:16.80 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199417.ts&#x27; for writing&#xA;frame=  520 fps= 30 q=20.0 size=N/A time=00:00:17.33 bitrate=N/A speed=   1x    &#xA;frame=  535 fps= 30 q=18.0 size=N/A time=00:00:17.83 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199418.ts&#x27; for writing&#xA;frame=  551 fps= 30 q=20.0 size=N/A time=00:00:18.36 bitrate=N/A speed=   1x    &#xA;frame=  566 fps= 30 q=19.0 size=N/A time=00:00:18.86 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199419.ts&#x27; for writing&#xA;frame=  581 fps= 30 q=20.0 size=N/A time=00:00:19.36 bitrate=N/A speed=   1x    &#xA;frame=  596 fps= 30 q=19.0 size=N/A time=00:00:19.86 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199420.ts&#x27; for writing&#xA;frame=  612 fps= 30 q=21.0 size=N/A time=00:00:20.40 bitrate=N/A speed=   1x    &#xA;frame=  626 fps= 30 q=20.0 size=N/A time=00:00:20.86 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199421.ts&#x27; for writing&#xA;frame=  641 fps= 30 q=21.0 size=N/A time=00:00:21.37 bitrate=N/A speed=   1x    &#xA;frame=  657 fps= 30 q=35.0 size=N/A time=00:00:21.90 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199422.ts&#x27; for writing&#xA;frame=  672 fps= 30 q=33.0 size=N/A time=00:00:22.40 bitrate=N/A speed=   1x    &#xA;frame=  687 fps= 30 q=23.0 size=N/A time=00:00:22.90 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199423.ts&#x27; for writing&#xA;frame=  703 fps= 30 q=23.0 size=N/A time=00:00:23.43 bitrate=N/A speed=   1x    &#xA;frame=  718 fps= 30 q=25.0 size=N/A time=00:00:23.93 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199424.ts&#x27; for writing&#xA;frame=  733 fps= 30 q=27.0 size=N/A time=00:00:24.44 bitrate=N/A speed=   1x    &#xA;frame=  749 fps= 30 q=26.0 size=N/A time=00:00:24.96 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199425.ts&#x27; for writing&#xA;frame=  764 fps= 30 q=28.0 size=N/A time=00:00:25.46 bitrate=N/A speed=   1x    &#xA;frame=  780 fps= 30 q=27.0 size=N/A time=00:00:26.00 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199426.ts&#x27; for writing&#xA;frame=  795 fps= 30 q=27.0 size=N/A time=00:00:26.50 bitrate=N/A speed=   1x    &#xA;frame=  810 fps= 30 q=26.0 size=N/A time=00:00:27.00 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec1339036256199427.ts&#x27; for writing&#xA;frame=  825 fps= 30 q=29.0 size=N/A time=00:00:27.50 bitrate=N/A speed=   1x    &#xA;[hls @ 0x55e88a4f3040] Opening &#x27;/recordings/13391978436095-2/rec13390362561994.m3u8.tmp&#x27; for writing&#xA;frame=  840 fps= 30 q=30.0 Lsize=N/A time=00:00:28.01 bitrate=N/A speed=   1x    &#xA;video:4635kB audio:404kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown&#xA;[libx264 @ 0x55e88a4f70c0] frame I:42    Avg QP:12.88  size: 28020&#xA;[libx264 @ 0x55e88a4f70c0] frame P:798   Avg QP:13.11  size:  4473&#xA;[libx264 @ 0x55e88a4f70c0] mb I  I16..4: 88.4%  0.0% 11.6%&#xA;[libx264 @ 0x55e88a4f70c0] mb P  I16..4:  6.6%  0.0%  0.4%  P16..4:  6.6%  1.9%  0.6%  0.0%  0.0%    skip:83.8%&#xA;[libx264 @ 0x55e88a4f70c0] coded y,uvDC,uvAC intra: 18.8% 20.1% 10.1% inter: 1.7% 2.4% 0.1%&#xA;[libx264 @ 0x55e88a4f70c0] i16 v,h,dc,p: 55% 30% 12%  4%&#xA;[libx264 @ 0x55e88a4f70c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 27% 31%  2%  3%  2%  2%  1%  2%&#xA;[libx264 @ 0x55e88a4f70c0] i8c dc,h,v,p: 77%  9% 12%  1%&#xA;[libx264 @ 0x55e88a4f70c0] Weighted P-Frames: Y:1.1% UV:0.1%&#xA;[libx264 @ 0x55e88a4f70c0] kb/s:1355.98&#xA;[aac @ 0x55e88a4f8440] Qavg: 40876.258&#xA;jq: error (at <stdin>:1): Cannot iterate over null (null)&#xA;jq: error (at <stdin>:1): Cannot iterate over null (null)&#xA;jq: error (at <stdin>:1): null (null) cannot be parsed as a number&#xA;jq: error (at <stdin>:1): null (null) cannot be parsed as a number&#xA;jq: error: syntax error, unexpected &#x27;|&#x27; (Unix shell quoting issues?) at , line 1:&#xA;.hasAudio=false | .hasVideo=false | .duration= | .size= | .status="failed"                                               &#xA;jq: 1 compile error&#xA;ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers&#xA;  built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)&#xA;  configuration: --prefix=/usr --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared&#xA;  libavutil      56. 31.100 / 56. 31.100&#xA;  libavcodec     58. 54.100 / 58. 54.100&#xA;  libavformat    58. 29.100 / 58. 29.100&#xA;  libavdevice    58.  8.100 / 58.  8.100&#xA;  libavfilter     7. 57.100 /  7. 57.100&#xA;  libavresample   4.  0.  0 /  4.  0.  0&#xA;  libswscale      5.  5.100 /  5.  5.100&#xA;  libswresample   3.  5.100 /  3.  5.100&#xA;  libpostproc    55.  5.100 / 55.  5.100&#xA;Invalid duration specification for ss: -i&#xA;</stdin></stdin></stdin></stdin>

    &#xA;

    ***** Edit 5 **********

    &#xA;

    no mather what format I choose, it stops after 20 to 30 secs.&#xA;the same line with .webm .mov .264 when it's not .mp4 ffmpeg seems to drop

    &#xA;

  • How to transcribe the recording for speech recognization

    29 mai 2021, par DLim

    After downloading and uploading files related to the mozilla deeepspeech, I started using google colab. I am using mozilla/deepspeech for speech recognization. The code shown below is for recording my audio. After recording the audio, I want to use a function/method to transcribe the recording into text. Everything compiles, but the text does not come out correctly. Any thoughts in my code ?

    &#xA;

    """&#xA;To write this piece of code I took inspiration/code from a lot of places.&#xA;It was late night, so I&#x27;m not sure how much I created or just copied o.O&#xA;Here are some of the possible references:&#xA;https://blog.addpipe.com/recording-audio-in-the-browser-using-pure-html5-and-minimal-javascript/&#xA;https://stackoverflow.com/a/18650249&#xA;https://hacks.mozilla.org/2014/06/easy-audio-capture-with-the-mediarecorder-api/&#xA;https://air.ghost.io/recording-to-an-audio-file-using-html5-and-js/&#xA;https://stackoverflow.com/a/49019356&#xA;"""&#xA;from google.colab.output import eval_js&#xA;from base64 import b64decode&#xA;from scipy.io.wavfile import read as wav_read&#xA;import io&#xA;import ffmpeg&#xA;&#xA;AUDIO_HTML = """&#xA;<code class="echappe-js">&lt;script&gt;&amp;#xA;var my_div = document.createElement(&quot;DIV&quot;);&amp;#xA;var my_p = document.createElement(&quot;P&quot;);&amp;#xA;var my_btn = document.createElement(&quot;BUTTON&quot;);&amp;#xA;var t = document.createTextNode(&quot;Press to start recording&quot;);&amp;#xA;&amp;#xA;my_btn.appendChild(t);&amp;#xA;//my_p.appendChild(my_btn);&amp;#xA;my_div.appendChild(my_btn);&amp;#xA;document.body.appendChild(my_div);&amp;#xA;&amp;#xA;var base64data = 0;&amp;#xA;var reader;&amp;#xA;var recorder, gumStream;&amp;#xA;var recordButton = my_btn;&amp;#xA;&amp;#xA;var handleSuccess = function(stream) {&amp;#xA;  gumStream = stream;&amp;#xA;  var options = {&amp;#xA;    //bitsPerSecond: 8000, //chrome seems to ignore, always 48k&amp;#xA;    mimeType : &amp;#x27;audio/webm;codecs=opus&amp;#x27;&amp;#xA;    //mimeType : &amp;#x27;audio/webm;codecs=pcm&amp;#x27;&amp;#xA;  };            &amp;#xA;  //recorder = new MediaRecorder(stream, options);&amp;#xA;  recorder = new MediaRecorder(stream);&amp;#xA;  recorder.ondataavailable = function(e) {            &amp;#xA;    var url = URL.createObjectURL(e.data);&amp;#xA;    var preview = document.createElement(&amp;#x27;audio&amp;#x27;);&amp;#xA;    preview.controls = true;&amp;#xA;    preview.src = url;&amp;#xA;    document.body.appendChild(preview);&amp;#xA;&amp;#xA;    reader = new FileReader();&amp;#xA;    reader.readAsDataURL(e.data); &amp;#xA;    reader.onloadend = function() {&amp;#xA;      base64data = reader.result;&amp;#xA;      //console.log(&quot;Inside FileReader:&quot; &amp;#x2B; base64data);&amp;#xA;    }&amp;#xA;  };&amp;#xA;  recorder.start();&amp;#xA;  };&amp;#xA;&amp;#xA;recordButton.innerText = &quot;Recording... press to stop&quot;;&amp;#xA;&amp;#xA;navigator.mediaDevices.getUserMedia({audio: true}).then(handleSuccess);&amp;#xA;&amp;#xA;&amp;#xA;function toggleRecording() {&amp;#xA;  if (recorder &amp;amp;&amp;amp; recorder.state == &quot;recording&quot;) {&amp;#xA;      recorder.stop();&amp;#xA;      gumStream.getAudioTracks()[0].stop();&amp;#xA;      recordButton.innerText = &quot;Saving the recording... pls wait!&quot;&amp;#xA;  }&amp;#xA;}&amp;#xA;&amp;#xA;// https://stackoverflow.com/a/951057&amp;#xA;function sleep(ms) {&amp;#xA;  return new Promise(resolve =&gt; setTimeout(resolve, ms));&amp;#xA;}&amp;#xA;&amp;#xA;var data = new Promise(resolve=&gt;{&amp;#xA;//recordButton.addEventListener(&quot;click&quot;, toggleRecording);&amp;#xA;recordButton.onclick = ()=&gt;{&amp;#xA;toggleRecording()&amp;#xA;&amp;#xA;sleep(2000).then(() =&gt; {&amp;#xA;  // wait 2000ms for the data to be available...&amp;#xA;  // ideally this should use something like await...&amp;#xA;  //console.log(&quot;Inside data:&quot; &amp;#x2B; base64data)&amp;#xA;  resolve(base64data.toString())&amp;#xA;&amp;#xA;});&amp;#xA;&amp;#xA;}&amp;#xA;});&amp;#xA;      &amp;#xA;&lt;/script&gt;&#xA;"""&#xA;&#xA;def get_audio() :&#xA;  display(HTML(AUDIO_HTML))&#xA;  data = eval_js("data")&#xA;  binary = b64decode(data.split(',')[1])&#xA;  &#xA;  process = (ffmpeg&#xA;    .input('pipe:0')&#xA;    .output('pipe:1', format='wav')&#xA;    .run_async(pipe_stdin=True, pipe_stdout=True, pipe_stderr=True, quiet=True, overwrite_output=True)&#xA;  )&#xA;  output, err = process.communicate(input=binary)&#xA;  &#xA;  riff_chunk_size = len(output) - 8&#xA;  # Break up the chunk size into four bytes, held in b.&#xA;  q = riff_chunk_size&#xA;  b = []&#xA;  for i in range(4) :&#xA;      q, r = divmod(q, 256)&#xA;      b.append(r)&#xA;&#xA;  # Replace bytes 4:8 in proc.stdout with the actual size of the RIFF chunk.&#xA;  riff = output[:4] + bytes(b) + output[8 :]&#xA;&#xA;  sr, audio = wav_read(io.BytesIO(riff))&#xA;&#xA;  return audio, sr&#xA;&#xA;audio, sr = get_audio()&#xA;

    &#xA;

    def recordingTranscribe(audio):&#xA;  data16 = np.frombuffer(audio)&#xA;  return model.stt(data16)&#xA;

    &#xA;

    recordingTranscribe(audio)&#xA;

    &#xA;

  • Can't initialize "h264_mediacodec" for hw accelerated decoding, FFMPEG, Android

    27 mars 2024, par Ramil Galin

    I am trying to create hw accelerated decoding on Android through JNI and following this example but, unfortunately, avcodec_get_hw_config returns nullptr.

    &#xA;

    I have also tried using avcodec_find_decoder_by_name("h264_mediacodec"), also returns nullptr.

    &#xA;

    I built ffmpeg (version 4.4) using this script with the flags :

    &#xA;

    --enable-jni \&#xA;--enable-mediacodec \&#xA;--enable-decoder=h264_mediacodec \&#xA;--enable-hwaccel=h264_mediacodec \&#xA;

    &#xA;

    When configuring build I saw in logs WARNING: Option --enable-hwaccel=h264_mediacodec did not match anything, which is actually strange. FFMPEG 4.4 should support hw accelerated decoding using mediacodec.

    &#xA;

    Edit : (providing minimal reproducible example)

    &#xA;

    In the JNI method I init input context of decoder and init decoder :

    &#xA;

        void Decoder::initInputContext(&#xA;        const std::string&amp; source,&#xA;        AVDictionary* options&#xA;    ) { // open input, and allocate format context&#xA;        if (&#xA;            avformat_open_input(&#xA;                &amp;m_inputFormatContext,&#xA;                source.c_str(),&#xA;                NULL,&#xA;                options ? &amp;options : nullptr&#xA;            ) &lt; 0&#xA;        ) {&#xA;            throw FFmpegException(&#xA;                fmt::format("Decoder: Could not open source {}", source)&#xA;            );&#xA;        }&#xA; &#xA;        // retrieve stream information&#xA;        if (avformat_find_stream_info(m_inputFormatContext, NULL) &lt; 0) {&#xA;            throw FFmpegException(&#xA;                "Decoder: Could not find stream information"&#xA;            );&#xA;        }&#xA;&#xA;        // get audio and video streams&#xA;        for (size_t i = 0; i &lt; m_inputFormatContext->nb_streams; i&#x2B;&#x2B;) {&#xA;            AVStream* inStream = m_inputFormatContext->streams[i];&#xA;            AVCodecParameters* inCodecpar = inStream->codecpar;&#xA;            if (&#xA;                inCodecpar->codec_type != AVMEDIA_TYPE_AUDIO &amp;&amp;&#xA;                inCodecpar->codec_type != AVMEDIA_TYPE_VIDEO&#xA;            ) {&#xA;                continue;&#xA;            }&#xA;&#xA;            if (inCodecpar->codec_type == AVMEDIA_TYPE_VIDEO) {&#xA;                m_videoStreamIdx = i;&#xA;                m_videoStream = inStream;&#xA;&#xA;                m_codecParams.videoCodecId = m_videoStream->codecpar->codec_id;&#xA;                m_codecParams.fps = static_cast<int>(av_q2d(m_videoStream->r_frame_rate) &#x2B; 0.5);&#xA;                m_codecParams.clockrate = m_videoStream->time_base.den;&#xA;&#xA;                spdlog::debug(&#xA;                    "Decoder: fps: {}, clockrate: {}",&#xA;                    m_codecParams.fps,&#xA;                    m_codecParams.clockrate&#xA;                )&#xA;                ;&#xA;            }&#xA;&#xA;            if (inCodecpar->codec_type == AVMEDIA_TYPE_AUDIO) {&#xA;                m_audioStreamIdx = i;&#xA;                m_audioStream = inStream;&#xA;&#xA;                m_codecParams.audioCodecId = m_audioStream->codecpar->codec_id;&#xA;                m_codecParams.audioSamplerate = m_audioStream->codecpar->sample_rate;&#xA;                m_codecParams.audioChannels = m_audioStream->codecpar->channels;&#xA;                m_codecParams.audioProfile = m_audioStream->codecpar->profile;&#xA;&#xA;                spdlog::debug(&#xA;                    "Decoder: audio samplerate: {}, audio channels: {}, x: {}",&#xA;                    m_codecParams.audioSamplerate,&#xA;                    m_codecParams.audioChannels,&#xA;                    m_audioStream->codecpar->channels&#xA;                )&#xA;                ;&#xA;            }&#xA;        }&#xA;    }&#xA;&#xA;    void Decoder::initDecoder() {&#xA;        AVCodecParameters* videoStreamCodecParams = m_videoStream->codecpar;&#xA;&#xA;        m_swsContext = sws_getContext(&#xA;                videoStreamCodecParams->width, videoStreamCodecParams->height, m_pixFormat,&#xA;                videoStreamCodecParams->width, videoStreamCodecParams->height, m_targetPixFormat,&#xA;                SWS_BICUBIC, nullptr, nullptr, nullptr);&#xA;&#xA;        // find best video stream info and decoder&#xA;        int ret = av_find_best_stream(m_inputFormatContext, AVMEDIA_TYPE_VIDEO, -1, -1, &amp;m_decoder, 0);&#xA;        if (ret &lt; 0) {&#xA;            throw FFmpegException(&#xA;                    "Decoder: Cannot find a video stream in the input file"&#xA;            );&#xA;        }&#xA;&#xA;        if (!m_decoder) {&#xA;            throw FFmpegException(&#xA;                    "Decoder: Can&#x27;t find decoder"&#xA;            );&#xA;        }&#xA;&#xA;        // search for supported HW decoder configuration&#xA;        for (size_t i = 0;; i&#x2B;&#x2B;) {&#xA;            const AVCodecHWConfig* config = avcodec_get_hw_config(m_decoder, i);&#xA;            if (!config) {&#xA;                spdlog::error(&#xA;                    "Decoder {} does not support device type {}. "&#xA;                    "Will use SW decoder...",&#xA;                    m_decoder->name,&#xA;                    av_hwdevice_get_type_name(m_deviceType)&#xA;                );&#xA;                break;&#xA;            }&#xA;&#xA;            if (&#xA;                config->methods &amp; AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX &amp;&amp;&#xA;                config->device_type == m_deviceType&#xA;            ) {&#xA;                // set up pixel format for HW decoder&#xA;                g_hwPixFmt = config->pix_fmt;&#xA;                m_hwDecoderSupported = true;&#xA;                break;&#xA;            }&#xA;        }&#xA;    }&#xA;</int>

    &#xA;

    And I have AVHWDeviceType m_deviceType{AV_HWDEVICE_TYPE_MEDIACODEC};

    &#xA;

    avcodec_get_hw_config returns nullptr.

    &#xA;

    Any help is appreciated.

    &#xA;