Recherche avancée

Médias (0)

Mot : - Tags -/alertes

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

Autres articles (3)

  • Other interesting software

    13 avril 2011, par

    We don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
    The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
    We don’t know them, we didn’t try them, but you can take a peek.
    Videopress
    Website : http://videopress.com/
    License : GNU/GPL v2
    Source code : (...)

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

  • D’autres logiciels intéressants

    12 avril 2011, par

    On ne revendique pas d’être les seuls à faire ce que l’on fait ... et on ne revendique surtout pas d’être les meilleurs non plus ... Ce que l’on fait, on essaie juste de le faire bien, et de mieux en mieux...
    La liste suivante correspond à des logiciels qui tendent peu ou prou à faire comme MediaSPIP ou que MediaSPIP tente peu ou prou à faire pareil, peu importe ...
    On ne les connais pas, on ne les a pas essayé, mais vous pouvez peut être y jeter un coup d’oeil.
    Videopress
    Site Internet : (...)

Sur d’autres sites (1852)

  • avformat/hls : Be more picky on extensions

    16 janvier, par Michael Niedermayer
    avformat/hls : Be more picky on extensions
    

    This blocks disallowed extensions from probing
    It also requires all available segments to have matching extensions to the format
    mpegts is treated independent of the extension

    It is recommended to set the whitelists correctly
    instead of depending on extensions, but this should help a bit,
    and this is easier to backport

    Fixes : CVE-2023-6602 II. HLS Force TTY Demuxer
    Fixes : CVE-2023-6602 IV. HLS XBIN Demuxer DoS Amplification

    The other parts of CVE-2023-6602 have been fixed by prior commits

    Found-by : Harvey Phillips of Amazon Element55 (element55)
    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] doc/demuxers.texi
    • [DH] libavformat/hls.c
  • Ffmpeg - Reading header information takes too long

    13 mars 2023, par Md Yeamin

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

    &#xA;

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

    &#xA;

    Here is detailed log about the issue.

    &#xA;

    Log :

    &#xA;

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

    &#xA;

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

    &#xA;

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

    &#xA;

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

    &#xA;

    Ffmpeg version : 5.1.

    &#xA;

  • Error initializing FFmpegKit : "TypeError : Cannot read property 'getLogLevel' of null" in React Native

    9 janvier, par Md Monirozzaman khan

    I'm developing a React Native application where I need to process videos using the ffmpeg-kit-react-native library. However, I'm encountering an issue during the initialization of FFmpegKitConfig. The error message is :

    &#xA;

    ERROR  Error initializing FFmpegKit: [TypeError: Cannot read property &#x27;getLogLevel&#x27; of null]&#xA;

    &#xA;

    Here is my App.js code

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    import React, { useState, useEffect } from &#x27;react&#x27;;&#xA;import { StyleSheet, Text, View, TouchableOpacity, Alert, Dimensions, ScrollView, LayoutAnimation, UIManager, Platform } from &#x27;react-native&#x27;;&#xA;import * as ImagePicker from &#x27;expo-image-picker&#x27;;&#xA;import * as FileSystem from &#x27;expo-file-system&#x27;;&#xA;import { Video } from &#x27;expo-av&#x27;;&#xA;import { MaterialIcons } from &#x27;@expo/vector-icons&#x27;;&#xA;import { FFmpegKit, FFmpegKitConfig, ReturnCode } from &#x27;ffmpeg-kit-react-native&#x27;;&#xA;&#xA;const windowWidth = Dimensions.get(&#x27;window&#x27;).width;&#xA;&#xA;if (Platform.OS === &#x27;android&#x27;) {&#xA;  UIManager.setLayoutAnimationEnabledExperimental &amp;&amp; UIManager.setLayoutAnimationEnabledExperimental(true);&#xA;}&#xA;&#xA;export default function App() {&#xA;  const [videoFiles, setVideoFiles] = useState([]);&#xA;  const [isGridView, setIsGridView] = useState(false);&#xA;  const [isConverting, setIsConverting] = useState(false);&#xA;&#xA;  useEffect(() => {&#xA;    FFmpegKitConfig.init()&#xA;      .then(() => {&#xA;        console.log(&#x27;FFmpegKit initialized&#x27;);&#xA;      })&#xA;      .catch((error) => {&#xA;        console.error(&#x27;Error initializing FFmpegKit:&#x27;, error);&#xA;      });&#xA;  }, []);&#xA;&#xA;  const pickVideo = async () => {&#xA;    const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();&#xA;    if (status !== &#x27;granted&#x27;) {&#xA;      alert(&#x27;Sorry, we need media library permissions to make this work!&#x27;);&#xA;      return;&#xA;    }&#xA;&#xA;    let result = await ImagePicker.launchImageLibraryAsync({&#xA;      mediaTypes: ImagePicker.MediaTypeOptions.Videos,&#xA;      allowsMultipleSelection: true,&#xA;    });&#xA;&#xA;    if (!result.canceled &amp;&amp; result.assets.length > 0) {&#xA;      const newFiles = result.assets.filter(&#xA;        (newFile) => !videoFiles.some((existingFile) => existingFile.uri === newFile.uri)&#xA;      );&#xA;&#xA;      if (newFiles.length &lt; result.assets.length) {&#xA;        Alert.alert(&#x27;Duplicate Files&#x27;, &#x27;Some files were already added.&#x27;);&#xA;      }&#xA;&#xA;      LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;      setVideoFiles([...videoFiles, ...newFiles]);&#xA;    }&#xA;  };&#xA;&#xA;  const convertVideos = async () => {&#xA;    setIsConverting(true);&#xA;    const outputDir = `${FileSystem.documentDirectory}Output`;&#xA;&#xA;    const dirInfo = await FileSystem.getInfoAsync(outputDir);&#xA;    if (!dirInfo.exists) {&#xA;      await FileSystem.makeDirectoryAsync(outputDir, { intermediates: true });&#xA;    }&#xA;&#xA;    for (const video of videoFiles) {&#xA;      const { uri } = video;&#xA;      const filename = uri.split(&#x27;/&#x27;).pop();&#xA;      const outputFilePath = `${outputDir}/${filename.split(&#x27;.&#x27;).slice(0, -1).join(&#x27;.&#x27;)}_modified.mp4`;&#xA;&#xA;      const ffmpegCommand = `-y -i "${uri}" -af "atempo=1.02, bass=g=4:f=80:w=3, treble=g=4:f=3200:w=3, firequalizer=gain_entry=&#x27;entry(0,0);entry(62,2);entry(125,1.5);entry(250,1);entry(500,1);entry(1000,1);entry(2000,1.5);entry(4000,2.5);entry(8000,3);entry(16000,4)&#x27;, compand=attacks=0.05:decays=0.25:points=-80/-80-50/-15-30/-10-10/-2:soft-knee=4:gain=2, deesser, highpass=f=35, lowpass=f=17000, loudnorm=I=-16:LRA=11:TP=-1.5, volume=3.9dB" -c:v copy -c:a aac -b:a 224k -ar 48000 -threads 0 "${outputFilePath}"`;&#xA;&#xA;      try {&#xA;        const session = await FFmpegKit.execute(ffmpegCommand);&#xA;        const returnCode = await session.getReturnCode();&#xA;&#xA;        if (ReturnCode.isSuccess(returnCode)) {&#xA;          console.log(`Video converted: ${outputFilePath}`);&#xA;        } else if (ReturnCode.isCancel(returnCode)) {&#xA;          console.log(&#x27;Conversion cancelled&#x27;);&#xA;        } else {&#xA;          console.error(`FFmpeg process failed: ${session.getFailStackTrace()}`);&#xA;        }&#xA;      } catch (error) {&#xA;        console.error(`Error converting video: ${error.message}`);&#xA;      }&#xA;    }&#xA;&#xA;    setIsConverting(false);&#xA;    Alert.alert(&#x27;Conversion Complete&#x27;, &#x27;All videos have been converted.&#x27;);&#xA;  };&#xA;&#xA;  const deleteVideo = (uri) => {&#xA;    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;    setVideoFiles(videoFiles.filter((video) => video.uri !== uri));&#xA;  };&#xA;&#xA;  const clearAllVideos = () => {&#xA;    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;    setVideoFiles([]);&#xA;  };&#xA;&#xA;  const toggleLayout = () => {&#xA;    LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);&#xA;    setIsGridView(!isGridView);&#xA;  };&#xA;&#xA;  return (&#xA;    <view style="{styles.container}">&#xA;      <text style="{styles.header}">Video Converter App</text>&#xA;      <touchableopacity style="{styles.addButton}">&#xA;        <text style="{styles.addButtonText}">Select or Browse Videos</text>&#xA;      </touchableopacity>&#xA;      <view style="{styles.headerContainer}">&#xA;        <text style="{styles.videoCount}">Total Videos: {videoFiles.length}</text>&#xA;        {videoFiles.length > 0 &amp;&amp; (&#xA;          &lt;>&#xA;            <touchableopacity style="{styles.clearButtonContainer}">&#xA;              <materialicons size="{24}" color="red" style="{styles.clearIcon}"></materialicons>&#xA;              <text style="{styles.clearAllText}">Clear All</text>&#xA;            </touchableopacity>&#xA;            <touchableopacity style="{styles.toggleLayoutButton}">&#xA;              <materialicons size="{24}" color="#fff"></materialicons>&#xA;            </touchableopacity>&#xA;          >&#xA;        )}&#xA;      </view>&#xA;      {isGridView ? (&#xA;        <scrollview contentcontainerstyle="{styles.gridContainer}">&#xA;          {videoFiles.map((item, index) => (&#xA;            <view key="{index}" style="{styles.videoItemGrid}">&#xA;              &#xA;              <touchableopacity>> deleteVideo(item.uri)} style={styles.deleteButtonGrid}>&#xA;                <materialicons size="{24}" color="red"></materialicons>&#xA;              </touchableopacity>&#xA;            </view>&#xA;          ))}&#xA;        </scrollview>&#xA;      ) : (&#xA;        <view style="{styles.list}">&#xA;          {videoFiles.map((item, index) => (&#xA;            <view key="{index}" style="{styles.videoItem}">&#xA;              &#xA;              <text style="{styles.fileName}">{decodeURI(item.fileName || item.uri.split(&#x27;/&#x27;).pop() || &#x27;Unknown File&#x27;)}</text>&#xA;              <touchableopacity>> deleteVideo(item.uri)} style={styles.deleteButton}>&#xA;                <materialicons size="{24}" color="red"></materialicons>&#xA;              </touchableopacity>&#xA;            </view>&#xA;          ))}&#xA;        </view>&#xA;      )}&#xA;      {videoFiles.length > 0 &amp;&amp; (&#xA;        <touchableopacity style="{styles.convertButton}" disabled="{isConverting}">&#xA;          <text style="{styles.convertButtonText}">{isConverting ? &#x27;Converting...&#x27; : &#x27;Convert&#x27;}</text>&#xA;        </touchableopacity>&#xA;      )}&#xA;    </view>&#xA;  );&#xA;}&#xA;&#xA;const styles = StyleSheet.create({&#xA;  container: {&#xA;    flex: 1,&#xA;    backgroundColor: &#x27;#fff&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    padding: 10,&#xA;  },&#xA;  header: {&#xA;    fontSize: 24,&#xA;    fontWeight: &#x27;bold&#x27;,&#xA;    marginBottom: 5,&#xA;  },&#xA;  addButton: {&#xA;    backgroundColor: &#x27;#007BFF&#x27;,&#xA;    padding: 15,&#xA;    borderRadius: 10,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    marginBottom: 5,&#xA;    width: &#x27;100%&#x27;,&#xA;    elevation: 2,&#xA;    shadowColor: &#x27;#000&#x27;,&#xA;    shadowOffset: { width: 0, height: 5 },&#xA;    shadowOpacity: 0.8,&#xA;    shadowRadius: 2,&#xA;  },&#xA;  addButtonText: {&#xA;    color: &#x27;#fff&#x27;,&#xA;    fontSize: 18,&#xA;    fontWeight: &#x27;bold&#x27;,&#xA;  },&#xA;  headerContainer: {&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    justifyContent: &#x27;space-between&#x27;,&#xA;    width: &#x27;100%&#x27;,&#xA;    marginBottom: 10,&#xA;  },&#xA;  videoCount: {&#xA;    fontSize: 18,&#xA;  },&#xA;  clearButtonContainer: {&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    marginRight: 10,&#xA;  },&#xA;  clearIcon: {&#xA;    marginRight: 5,&#xA;  },&#xA;  clearAllText: {&#xA;    fontSize: 16,&#xA;    color: &#x27;red&#x27;,&#xA;    textDecorationLine: &#x27;underline&#x27;,&#xA;  },&#xA;  toggleLayoutButton: {&#xA;    backgroundColor: &#x27;#007BFF&#x27;,&#xA;    padding: 1,&#xA;    borderRadius: 8,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    justifyContent: &#x27;center&#x27;,&#xA;  },&#xA;  list: {&#xA;    flex: 1,&#xA;    width: &#x27;100%&#x27;,&#xA;  },&#xA;  videoItem: {&#xA;    padding: 5,&#xA;    borderBottomColor: &#x27;#ccc&#x27;,&#xA;    borderBottomWidth: 0.7,&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;  },&#xA;  videoItemGrid: {&#xA;    flexDirection: &#x27;column&#x27;,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    margin: 4,&#xA;    borderWidth: 1,&#xA;    borderColor: &#x27;#ccc&#x27;,&#xA;    borderRadius: 8,&#xA;    padding: 2,&#xA;    position: &#x27;relative&#x27;,&#xA;  },&#xA;  thumbnail: {&#xA;    width: 70,&#xA;    height: 70,&#xA;    marginRight: 10,&#xA;  },&#xA;  thumbnailGrid: {&#xA;    width: 80,&#xA;    height: 80,&#xA;    marginBottom: 0,&#xA;  },&#xA;  fileName: {&#xA;    fontSize: 16,&#xA;    marginLeft: 10,&#xA;    flex: 1,&#xA;  },&#xA;  deleteButton: {&#xA;    marginLeft: 60,&#xA;    width: 20,&#xA;    height: 20,&#xA;  },&#xA;  deleteButtonGrid: {&#xA;    position: &#x27;absolute&#x27;,&#xA;    bottom: 5,&#xA;    right: 5,&#xA;  },&#xA;  convertButton: {&#xA;    backgroundColor: &#x27;#007BFF&#x27;,&#xA;    padding: 15,&#xA;    borderRadius: 10,&#xA;    alignItems: &#x27;center&#x27;,&#xA;    marginTop: 20,&#xA;    width: &#x27;100%&#x27;,&#xA;  },&#xA;  convertButtonText: {&#xA;    color: &#x27;#fff&#x27;,&#xA;    fontSize: 18,&#xA;    fontWeight: &#x27;bold&#x27;,&#xA;  },&#xA;  gridContainer: {&#xA;    flexDirection: &#x27;row&#x27;,&#xA;    flexWrap: &#x27;wrap&#x27;,&#xA;    justifyContent: &#x27;flex-start&#x27;,&#xA;    paddingVertical: 5,&#xA;    paddingHorizontal: 5,&#xA;    width: &#x27;100%&#x27;,&#xA;  },&#xA;});

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;

    App.json

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    {&#xA;  "expo": {&#xA;    "name": "VidoeConvert",&#xA;    "slug": "VidoeConvert",&#xA;    "version": "1.0.0",&#xA;    "orientation": "portrait",&#xA;    "icon": "./assets/icon.png",&#xA;    "userInterfaceStyle": "light",&#xA;    "splash": {&#xA;      "image": "./assets/splash.png",&#xA;      "resizeMode": "contain",&#xA;      "backgroundColor": "#ffffff"&#xA;    },&#xA;    "ios": {&#xA;      "supportsTablet": true&#xA;    },&#xA;    "android": {&#xA;      "adaptiveIcon": {&#xA;        "foregroundImage": "./assets/adaptive-icon.png",&#xA;        "backgroundColor": "#ffffff"&#xA;      },&#xA;      "package": "com.anonymous.VidoeConvert"&#xA;    },&#xA;    "web": {&#xA;      "favicon": "./assets/favicon.png"&#xA;    },&#xA;    "plugins": [&#xA;      "@config-plugins/ffmpeg-kit-react-native",&#xA;      "expo-build-properties"&#xA;    ]&#xA;  }&#xA;}

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;

    Package.json

    &#xA;

    &#xD;&#xA;
    &#xD;&#xA;
    {&#xA;  "name": "vidoeconvert",&#xA;  "version": "1.0.0",&#xA;  "main": "expo/AppEntry.js",&#xA;  "scripts": {&#xA;    "start": "expo start",&#xA;    "android": "expo run:android",&#xA;    "ios": "expo run:ios",&#xA;    "web": "expo start --web"&#xA;  },&#xA;  "dependencies": {&#xA;    "@config-plugins/ffmpeg-kit-react-native": "^8.0.0",&#xA;    "@expo/metro-runtime": "~3.2.1",&#xA;    "expo": "~51.0.17",&#xA;    "expo-asset": "~10.0.10",&#xA;    "expo-av": "^14.0.6",&#xA;    "expo-document-picker": "~12.0.2",&#xA;    "expo-file-system": "~17.0.1",&#xA;    "expo-image-picker": "~15.0.7",&#xA;    "expo-media-library": "~16.0.4",&#xA;    "expo-status-bar": "~1.12.1",&#xA;    "ffmpeg-kit-react-native": "^6.0.2",&#xA;    "react": "18.2.0",&#xA;    "react-dom": "18.2.0",&#xA;    "react-native": "^0.74.3",&#xA;    "react-native-document-picker": "^9.3.0",&#xA;    "react-native-ffmpeg": "^0.5.2",&#xA;    "react-native-vector-icons": "^10.1.0",&#xA;    "react-native-web": "~0.19.10",&#xA;    "expo-build-properties": "~0.12.3"&#xA;  },&#xA;  "devDependencies": {&#xA;    "@babel/core": "^7.20.0"&#xA;  },&#xA;  "private": true&#xA;}

    &#xD;&#xA;

    &#xD;&#xA;

    &#xD;&#xA;&#xA;

    Has anyone encountered a similar issue or can point me in the right direction to resolve this error ? Any help would be greatly appreciated !

    &#xA;

    How to remove the error ?

    &#xA;

    any configruation required for this project ?

    &#xA;