Recherche avancée

Médias (0)

Mot : - Tags -/flash

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

Autres articles (65)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Qu’est ce qu’un éditorial

    21 juin 2013, par

    Ecrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
    Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
    Vous pouvez personnaliser le formulaire de création d’un éditorial.
    Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...)

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (14041)

  • 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;

  • Zlib vs. XZ on 2SF

    21 juillet 2012, par Multimedia Mike — General, psf, saltygme, xz, zlib

    I recently released my Game Music Appreciation website. It allows users to play an enormous range of video game music directly in their browsers. To do this, the site has to host the music. And since I’m a compression bore, I have to know how small I can practically make these music files. I already published the results of my effort to see if XZ could beat RAR (RAR won, but only slightly, and I still went with XZ for the project) on the corpus of Super Nintendo chiptune sets. Next is the corpus of Nintendo DS chiptunes.

    Repacking Nintendo DS 2SF
    The prevailing chiptune format for storing Nintendo DS songs is the .2sf format. This is a subtype of the Portable Sound Format (PSF). The designers had the foresight to build compression directly into the format. Much of payload data in a PSF file is compressed with zlib. Since I already incorporated Embedded XZ into the player project, I decided to try repacking the PSF payload data from zlib -> xz.

    In an effort to not corrupt standards too much, I changed the ’PSF’ file signature (seen in the first 3 bytes of a file) to ’psf’.

    Results
    There are about 900 Nintendo DS games currently represented in my website’s archive. Total size of the original PSF archive, payloads packed with zlib : 2.992 GB. Total size of the same archive with payloads packed as xz : 2.059 GB.

    Using xz vs. zlib saved me nearly a gigabyte of storage. That extra storage doesn’t really impact my hosting plan very much (I have 1/2 TB, which is why I’m so nonchalant about hosting the massive MPlayer Samples Archive). However, smaller individual files translates to a better user experience since the files are faster to download.

    Here is a pretty picture to illustrate the space savings :



    The blue occasionally appears to dip below the orange but the data indicates that xz is always more efficient than zlib. Here’s the raw data (comes in vanilla CSV flavor too).

    Interface Impact
    So the good news for the end user is that the songs are faster to load up front. The downside is that there can be a noticeable delay when changing tracks. Even though all songs are packaged into one file for download, and the entire file is downloaded before playback begins, each song is individually compressed. Thus, changing tracks triggers another decompression operation. I’m toying the possibility of some sort of background process that decompresses song (n+1) while playing song (n) in order to help compensate for this.

    I don’t like the idea of decompressing everything up front because A) it would take even longer to start playing ; and B) it would take a huge amount of memory.

    Corner Case
    There was at least one case in which I found zlib to be better than xz. It looks like zlib’s minimum block size is smaller than xz’s. I think I discovered xz to be unable to compress a few bytes to a block any smaller than about 60-64 bytes while zlib got it down into the teens. However, in those cases, it was more efficient to just leave the data uncompressed anyway.