Recherche avancée

Médias (1)

Mot : - Tags -/stallman

Autres articles (69)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Submit bugs and patches

    13 avril 2011

    Unfortunately a software is never perfect.
    If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
    If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
    You may also (...)

Sur d’autres sites (12285)

  • android crop square video android compress to upload like instagram

    27 février 2018, par Mehdi Shojaeian

    I had an android application which like instagram& now I want to crop selected video in square and compress it.
    I tested ffmpeg with FFmpegAndroid by this command :

    {"-y", "-ss", "" + (startTime / 1000), "-t", "" + ((endTime - startTime) / 1000), "-i", srcFilePath, "-vcodec", "libx264", "-crf", "35", dstFilePath}

    The problem is ffmpeg run too mush slowly about 15 minute for just 30 sec video.

    I also test silicompressorr but it just resize in standard video size and not compress final video.

    How instagram cut, crop and scale down video files too fast ?

    please help me !!!

    Edit
    Ffmpef log for above is :

    D/BHUVNESH: Progress command : ffmpeg ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers
    02-27 20:29:36.402 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   built with gcc 4.8 (GCC)
    02-27 20:29:36.402 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=
    02-27 20:29:36.402 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libavutil      55. 17.103 / 55. 17.103
    02-27 20:29:36.402 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libavcodec     57. 24.102 / 57. 24.102
    02-27 20:29:36.402 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libavformat    57. 25.100 / 57. 25.100
    02-27 20:29:36.403 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libavdevice    57.  0.101 / 57.  0.101
    02-27 20:29:36.403 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libavfilter     6. 31.100 /  6. 31.100
    02-27 20:29:36.403 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libswscale      4.  0.100 /  4.  0.100
    02-27 20:29:36.403 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libswresample   2.  0.101 /  2.  0.101
    02-27 20:29:36.403 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   libpostproc    54.  0.100 / 54.  0.100
    02-27 20:29:37.526 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/9016-4EF8/movie/compress_video_new14.mp4':
    02-27 20:29:37.527 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   Metadata:
    02-27 20:29:37.527 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     major_brand     : isom
    02-27 20:29:37.527 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     minor_version   : 512
    02-27 20:29:37.527 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     compatible_brands: isomiso2avc1mp41
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     encoder         : Lavf57.25.100
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   Duration: 00:00:20.01, start: 0.000000, bitrate: 48020 kb/s
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m), 3840x2160, 47857 kb/s, 28.58 fps, 30 tbr, 90k tbn, 180k tbc (default)
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Metadata:
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       rotate          : 90
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       handler_name    : VideoHandler
    02-27 20:29:37.528 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Side data:
    02-27 20:29:37.529 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       displaymatrix: rotation of -90.00 degrees
    02-27 20:29:37.529 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 155 kb/s (default)
    02-27 20:29:37.529 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Metadata:
    02-27 20:29:37.529 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       handler_name    : SoundHandler
    02-27 20:29:37.541 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg [swscaler @ 0xf47ef000] deprecated pixel format used, make sure you did set range correctly
    02-27 20:29:37.594 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg [swscaler @ 0xf47e4000] deprecated pixel format used, make sure you did set range correctly
    02-27 20:29:37.594 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg No pixel format specified, yuvj420p for H.264 encoding chosen.
    02-27 20:29:37.594 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg Use -pix_fmt yuv420p for compatibility with outdated media players.
    02-27 20:29:37.594 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg [libx264 @ 0xf506d400] using cpu capabilities: none!
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg [libx264 @ 0xf506d400] profile High, level 3.1
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg [libx264 @ 0xf506d400] 264 - core 148 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg Output #0, mp4, to '/storage/emulated/0/Movies/compress_video_new21.mp4':
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   Metadata:
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     major_brand     : isom
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     minor_version   : 512
    02-27 20:29:37.674 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     compatible_brands: isomiso2avc1mp41
    02-27 20:29:37.675 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     encoder         : Lavf57.25.100
    02-27 20:29:37.675 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuvj420p(pc), 1280x720, q=-1--1, 30 fps, 15360 tbn, 30 tbc (default)
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Metadata:
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       handler_name    : VideoHandler
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       encoder         : Lavc57.24.102 libx264
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Side data:
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       unknown side data type 10 (24 bytes)
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, 155 kb/s (default)
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg     Metadata:
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg       handler_name    : SoundHandler
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg Stream mapping:
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg   Stream #0:1 -> #0:1 (copy)
    02-27 20:29:37.676 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg Press [q] to stop, [?] for help
    02-27 20:29:38.359 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=    1 fps=0.0 q=0.0 size=       0kB time=00:00:00.16 bitrate=   2.3kbits/s speed=0.247x    
    02-27 20:29:39.053 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=    4 fps=2.9 q=0.0 size=       0kB time=00:00:00.27 bitrate=   1.4kbits/s speed=0.197x    
    02-27 20:29:39.752 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=    7 fps=3.4 q=0.0 size=       0kB time=00:00:00.35 bitrate=   1.1kbits/s speed=0.173x    
    02-27 20:29:40.466 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   10 fps=3.6 q=0.0 size=       0kB time=00:00:00.46 bitrate=   0.8kbits/s speed=0.167x    
    02-27 20:29:40.990 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   12 fps=3.6 q=0.0 size=       0kB time=00:00:00.52 bitrate=   0.7kbits/s speed=0.159x    
    02-27 20:29:41.672 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   15 fps=3.8 q=0.0 size=       0kB time=00:00:00.63 bitrate=   0.6kbits/s speed=0.16x    
    02-27 20:29:42.408 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   18 fps=3.8 q=0.0 size=       0kB time=00:00:00.72 bitrate=   0.5kbits/s speed=0.153x    
    02-27 20:29:42.917 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   20 fps=3.8 q=0.0 size=       0kB time=00:00:00.80 bitrate=   0.5kbits/s speed=0.154x    
    02-27 20:29:43.660 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   23 fps=3.8 q=0.0 size=       0kB time=00:00:00.89 bitrate=   0.4kbits/s speed=0.149x    
    02-27 20:29:44.392 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   26 fps=3.9 q=0.0 size=       0kB time=00:00:00.99 bitrate=   0.4kbits/s speed=0.149x    
    02-27 20:29:44.904 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   28 fps=3.9 q=0.0 size=       0kB time=00:00:01.06 bitrate=   0.4kbits/s speed=0.147x    
    02-27 20:29:45.467 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   30 fps=3.9 q=0.0 size=       0kB time=00:00:01.12 bitrate=   0.3kbits/s speed=0.145x    
    02-27 20:29:46.014 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   32 fps=3.8 q=0.0 size=       0kB time=00:00:01.19 bitrate=   0.3kbits/s speed=0.143x    
    02-27 20:29:46.533 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   34 fps=3.8 q=0.0 size=       0kB time=00:00:01.25 bitrate=   0.3kbits/s speed=0.142x    
    02-27 20:29:47.094 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   36 fps=3.8 q=0.0 size=       0kB time=00:00:01.33 bitrate=   0.3kbits/s speed=0.142x    
    02-27 20:29:47.681 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   38 fps=3.8 q=0.0 size=       0kB time=00:00:01.40 bitrate=   0.3kbits/s speed=0.14x    
    02-27 20:29:48.191 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   40 fps=3.8 q=0.0 size=       0kB time=00:00:01.48 bitrate=   0.3kbits/s speed=0.142x    
    02-27 20:29:48.752 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   42 fps=3.8 q=0.0 size=       0kB time=00:00:01.57 bitrate=   0.2kbits/s speed=0.142x    
    02-27 20:29:49.531 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   45 fps=3.8 q=0.0 size=       0kB time=00:00:01.68 bitrate=   0.2kbits/s dup=1 drop=0 speed=0.142x    
    02-27 20:29:51.327 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   46 fps=3.4 q=0.0 size=       0kB time=00:00:01.74 bitrate=   0.2kbits/s dup=1 drop=0 speed=0.128x    
    02-27 20:29:52.108 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   49 fps=3.4 q=0.0 size=       0kB time=00:00:01.83 bitrate=   0.2kbits/s dup=2 drop=0 speed=0.127x    
    02-27 20:29:52.755 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   51 fps=3.4 q=29.0 size=      70kB time=00:00:01.89 bitrate= 301.9kbits/s dup=3 drop=0 speed=0.126x    
    02-27 20:29:53.826 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   52 fps=3.2 q=29.0 size=      93kB time=00:00:01.93 bitrate= 391.3kbits/s dup=3 drop=0 speed=0.12x    
    02-27 20:29:54.884 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   54 fps=3.1 q=29.0 size=     117kB time=00:00:01.97 bitrate= 482.4kbits/s dup=4 drop=0 speed=0.115x    
    02-27 20:29:55.448 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   55 fps=3.1 q=29.0 size=     121kB time=00:00:02.04 bitrate= 484.1kbits/s dup=4 drop=0 speed=0.115x    
    02-27 20:29:55.643 12094-12116/videoeditor.bhuvnesh.com.ffmpegvideoeditor I/MediaPlayer: message received msg=6, ext1=0, ext2=0
    02-27 20:29:56.328 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   57 fps=3.1 q=29.0 size=     146kB time=00:00:02.08 bitrate= 571.8kbits/s dup=5 drop=0 speed=0.112x    
    02-27 20:29:57.838 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   58 fps=2.9 q=29.0 size=     165kB time=00:00:02.12 bitrate= 633.4kbits/s dup=5 drop=0 speed=0.106x    
    02-27 20:29:58.733 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   60 fps=2.9 q=29.0 size=     189kB time=00:00:02.19 bitrate= 707.6kbits/s dup=6 drop=0 speed=0.104x    
    02-27 20:29:59.497 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   61 fps=2.8 q=29.0 size=     194kB time=00:00:02.23 bitrate= 712.0kbits/s dup=6 drop=0 speed=0.102x    
    02-27 20:30:00.706 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   63 fps=2.7 q=29.0 size=     220kB time=00:00:02.29 bitrate= 782.9kbits/s dup=7 drop=0 speed=0.0999x    
    02-27 20:30:02.546 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   64 fps=2.6 q=29.0 size=     240kB time=00:00:02.34 bitrate= 840.0kbits/s dup=7 drop=0 speed=0.0942x    
    02-27 20:30:03.278 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   66 fps=2.6 q=29.0 size=     265kB time=00:00:02.38 bitrate= 908.4kbits/s dup=8 drop=0 speed=0.0932x    
    02-27 20:30:03.877 12094-12094/videoeditor.bhuvnesh.com.ffmpegvideoeditor D/BHUVNESH: Progress command : ffmpeg frame=   67 fps=2.6 q=29.0 size=     270kB time=00:00:02.44 bitrate= 902.0kbits/s dup=8 drop=0 speed=0.0936x
  • The 11th Hour RoQ Variation

    12 avril 2012, par Multimedia Mike — Game Hacking, dreamroq, Reverse Engineering, roq, Vector Quantization

    I have been looking at the RoQ file format almost as long as I have been doing practical multimedia hacking. However, I have never figured out how the RoQ format works on The 11th Hour, which was the game for which the RoQ format was initially developed. When I procured the game years ago, I remember finding what appeared to be RoQ files and shoving them through the open source decoders but not getting the right images out.

    I decided to dust off that old copy of The 11th Hour and have another go at it.



    Baseline
    The game consists of 4 CD-ROMs. Each disc has a media/ directory that has a series of files bearing the extension .gjd, likely the initials of one Graeme J. Devine. These are resource files which are merely headerless concatenations of other files. Thus, at first glance, one file might appear to be a single RoQ file. So that’s the source of some of the difficulty : Sending an apparent RoQ .gjd file through a RoQ player will often cause the program to complain when it encounters the header of another RoQ file.

    I have uploaded some samples to the usual place.

    However, even the frames that a player can decode (before encountering a file boundary within the resource file) look wrong.

    Investigating Codebooks Using dreamroq
    I wrote dreamroq last year– an independent RoQ playback library targeted towards embedded systems. I aimed it at a gjd file and quickly hit a codebook error.

    RoQ is a vector quantizer video codec that maintains a codebook of 256 2×2 pixel vectors. In the Quake III and later RoQ files, these are transported using a YUV 4:2:0 colorspace– 4 Y samples, a U sample, and a V sample to represent 4 pixels. This totals 6 bytes per vector. A RoQ codebook chunk contains a field that indicates the number of 2×2 vectors as well as the number of 4×4 vectors. The latter vectors are each comprised of 4 2×2 vectors.

    Thus, the total size of a codebook chunk ought to be (# of 2×2 vectors) * 6 + (# of 4×4 vectors) * 4.

    However, this is not the case with The 11th Hour RoQ files.

    Longer Codebooks And Mystery Colorspace
    Juggling the numbers for a few of the codebook chunks, I empirically determined that the 2×2 vectors are represented by 10 bytes instead of 6. Now I need to determine what exactly these 10 bytes represent.

    I should note that I suspect that everything else about these files lines up with successive generations of the format. For example if a file has 640×320 resolution, that amounts to 40×20 macroblocks. dreamroq iterates through 40×20 8×8 blocks and precisely exhausts the VQ bitstream. So that all looks valid. I’m just puzzled on the codebook format.

    Here is an example codebook dump :

    ID 0x1002, len = 0x0000014C, args = 0x1C0D
      0 : 00 00 00 00 00 00 00 00 80 80
      1 : 08 07 00 00 1F 5B 00 00 7E 81
      2 : 00 00 15 0F 00 00 40 3B 7F 84
      3 : 00 00 00 00 3A 5F 18 13 7E 84
      4 : 00 00 00 00 3B 63 1B 17 7E 85
      5 : 18 13 00 00 3C 63 00 00 7E 88
      6 : 00 00 00 00 00 00 59 3B 7F 81
      7 : 00 00 56 23 00 00 61 2B 80 80
      8 : 00 00 2F 13 00 00 79 63 81 83
      9 : 00 00 00 00 5E 3F AC 9B 7E 81
      10 : 1B 17 00 00 B6 EF 77 AB 7E 85
      11 : 2E 43 00 00 C1 F7 75 AF 7D 88
      12 : 6A AB 28 5F B6 B3 8C B3 80 8A
      13 : 86 BF 0A 03 D5 FF 3A 5F 7C 8C
      14 : 00 00 9E 6B AB 97 F5 EF 7F 80
      15 : 86 73 C8 CB B6 B7 B7 B7 85 8B
      16 : 31 17 84 6B E7 EF FF FF 7E 81
      17 : 79 AF 3B 5F FC FF E2 FF 7D 87
      18 : DC FF AE EF B3 B3 B8 B3 85 8B
      19 : EF FF F5 FF BA B7 B6 B7 88 8B
      20 : F8 FF F7 FF B3 B7 B7 B7 88 8B
      21 : FB FF FB FF B8 B3 B4 B3 85 88
      22 : F7 FF F7 FF B7 B7 B9 B7 87 8B
      23 : FD FF FE FF B9 B7 BB B7 85 8A
      24 : E4 FF B7 EF FF FF FF FF 7F 83
      25 : FF FF AC EB FF FF FC FF 7F 83
      26 : CC C7 F7 FF FF FF FF FF 7F 81
      27 : FF FF FE FF FF FF FF FF 80 80
    

    Note that 0x14C (the chunk size) = 332, 0x1C and 0x0D (the chunk arguments — count of 2×2 and 4×4 vectors, respectively) are 28 and 13. 28 * 10 + 13 * 4 = 332, so the numbers check out.

    Do you see any patterns in the codebook ? Here are some things I tried :

    • Treating the last 2 bytes as U & V and treating the first 4 as the 4 Y samples :


    • Treating the last 2 bytes as U & V and treating the first 8 as 4 16-bit little-endian Y samples :


    • Disregarding the final 2 bytes and treating the first 8 bytes as 4 RGB565 pixels (both little- and big-endian, respectively, shown here) :


    • Based on the type of data I’m seeing in these movies (which appears to be intended as overlays), I figured that some of these bits might indicate transparency ; here is 15-bit big-endian RGB which disregards the top bit of each pixel :


    These images are taken from the uploaded sample bdpuz.gjd, apparently a component of the puzzle represented in this screenshot.

    Unseen Types
    It has long been rumored that early RoQ files could contain JPEG images. I finally found one such specimen. One of the files bundled early in the uploaded fhpuz.gjd sample contains a JPEG frame. It’s a standard JFIF file and can easily be decoded after separating the bytes from the resource using ‘dd’. JPEGs serve as intraframes in the coding scheme, with successive RoQ frames moving objects on top.

    However, a new chunk type showed up as well, one identified by 0×1030. I have never encountered this type. Where could I possibly find data about this ? Fortunately, iD Games recently posted all of their open sourced games at Github. Reading through the code for their official RoQ decoder, I see that this is called a RoQ_PACKET. The name and the code behind it are both supremely unhelpful. The code is basically a no-op. The payloads of the various RoQ_PACKETs from one sample are observed to be either 8784, 14752, or 14760 bytes in length. It’s very likely that this serves the same purpose as the JPEG intraframes.

    Other Tidbits
    I read through the readme.txt on the first game disc and found this nugget :

            g)      Animations displayed normally or in SPOOKY MODE
    

    SPOOKY MODE is blue-tinted grayscale with color cursors, puzzle
    and game pieces. It is the preferred display setting of the
    developers at Trilobyte. Just for fun, try out the SPOOKY
    MODE.

    The MobyGames screenshot page has a number of screenshots labeled as being captured in spooky mode. Color tricks ?

    Meanwhile, another twist arose as I kept tweaking dreamroq to deal with more RoQ weirdness : After modifying my dreamroq code to handle these 10-byte vectors, it eventually chokes on another codebook. These codebooks happen to have 6-byte vectors again ! Fortunately, I was already working on a scheme to automatically detect which codebook is in play (plugging the numbers into a formula and seeing which vector size checks out).

  • MP4 videos created with AVMutableComposition and AVAssetExportSession work in Quicktime, but appear corrupted in all other video tools

    20 mai 2020, par James Porter

    I'm trying to edit segments of multiple movies together into one clip using Swift, AVFoundation, and AVKit on macOS. The following Swift code is a good example of what I'm trying to do :

    



    import AVFoundation
import AVKit

let source1 = AVAsset(url: URL(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")!)
let source2 = AVAsset(url: URL(string: "http://techslides.com/demos/sample-videos/small.mp4")!)

let comp = AVMutableComposition()

comp.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
comp.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)

func cmtime(_ i: Double) -> CMTime {
    return CMTime(seconds: i, preferredTimescale: 600)
}

func insertSecond(into: AVMutableComposition, from: AVAsset, start: CMTime, at: CMTime) throws {
    let videoTrack = into.tracks(withMediaType: .video).first!
    let audioTrack = into.tracks(withMediaType: .audio).first!
    try videoTrack.insertTimeRange(
        CMTimeRange(start: start , duration: cmtime(1.0)),
        of: from.tracks(withMediaType: .video).first!,
        at: at
    )
    try audioTrack.insertTimeRange(
        CMTimeRange(start: start, duration: cmtime(1.0)),
        of: from.tracks(withMediaType: .audio).first!,
        at: at
    )
}

try insertSecond(into: comp, from: source1, start: cmtime(3.0), at: cmtime(0.0))
try insertSecond(into: comp, from: source2, start: cmtime(2.0), at: cmtime(1.0))
try insertSecond(into: comp, from: source1, start: cmtime(100.0), at: cmtime(2.0))
try insertSecond(into: comp, from: source2, start: cmtime(3.0), at: cmtime(3.0))
try insertSecond(into: comp, from: source1, start: cmtime(350.0), at: cmtime(4.0))


if let sess = AVAssetExportSession(asset: comp, presetName: "AVAssetExportPresetHighestQuality") {
    sess.outputURL = URL(fileURLWithPath: "/tmp/output.mp4")
    sess.outputFileType = .mp4
    sess.exportAsynchronously {
        print("done")
        print(sess.error ?? "success")
    }
}


    



    Running this code does produce an output.mp4 file successfully, and that file can be played in Quicktime with no problems. You should be able to paste the above code into a Playground to reproduce the video (the source videos are all publicly available sample videos hosted on the web). I've also uploaded it to S3 here, so you can download and analyze it without having to run the code yourself.

    



    However, attempting to open or process it with any other video software results in errors.

    



    VLC will attempt to play the file, but has a very difficult time with it. The video freezes a lot, desyncs with the audio, includes frames that Quicktime doesn't show at all, and skips some sections entirely.

    



    Firefox will also attempt to play with file, but clearly can't decode it properly and has glitchy video output. Chrome freezes after the first second of playback.

    



    I tried diagnosing further using ffprobe and ffmpeg.

    



    Running ffprobe -show_frames output.mp4 1>/dev/null shows :

    



    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe841801800] DTS -24000 < 24000 out of order
[h264 @ 0x7fe843022800] reference count overflow
[h264 @ 0x7fe843022800] decode_slice_header error
[h264 @ 0x7fe843022800] no frame!
[h264 @ 0x7fe843022800] deblocking_filter_idc 6 out of range
[h264 @ 0x7fe843022800] decode_slice_header error
[h264 @ 0x7fe843022800] no frame!
[h264 @ 0x7fe843022800] deblocking_filter_idc 6 out of range
[h264 @ 0x7fe843022800] decode_slice_header error
[h264 @ 0x7fe843022800] no frame!
[h264 @ 0x7fe843022800] top block unavailable for requested intra mode -1
[h264 @ 0x7fe843022800] error while decoding MB 5 0, bytestream 947
[h264 @ 0x7fe843022800] concealing 3600 DC, 3600 AC, 3600 MV errors in P frame
[h264 @ 0x7fe843022800] mmco: unref short failure
[h264 @ 0x7fe843022800] cabac_init_idc 4 overflow
[h264 @ 0x7fe843022800] decode_slice_header error
[h264 @ 0x7fe843022800] no frame!
[h264 @ 0x7fe843022800] deblocking filter parameters -43 0 out of range
[h264 @ 0x7fe843022800] decode_slice_header error
[h264 @ 0x7fe843022800] no frame!


    



    Attempting to transcode to another format with ffmpeg (ffmpeg -i output.mp4 output.avi) has a lot of warnings and errors :

    



    [avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 73, current: 71; changing to 74. This may result in incorrect timestamps in the output file.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fe1f4802800] DTS -24000 < 24000 out of order
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 74, current: 72; changing to 75. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 75, current: 73; changing to 76. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 76, current: 74; changing to 77. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 77, current: 75; changing to 78. This may result in incorrect timestamps in the output file.
[h264 @ 0x7fe1f4849600] reference count overflow
[h264 @ 0x7fe1f4849600] decode_slice_header error
[h264 @ 0x7fe1f4849600] no frame!
Error while decoding stream #0:1: Invalid data found when processing input
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 145, current: 143; changing to 146. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 146, current: 144; changing to 147. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 147, current: 145; changing to 148. This may result in incorrect timestamps in the output file.
[h264 @ 0x7fe1f483d800] deblocking_filter_idc 6 out of range
[h264 @ 0x7fe1f483d800] decode_slice_header error
[h264 @ 0x7fe1f483d800] no frame!
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 148, current: 146; changing to 149. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 149, current: 147; changing to 150. This may result in incorrect timestamps in the output file.
[h264 @ 0x7fe1f4849600] deblocking_filter_idc 6 out of range
[h264 @ 0x7fe1f4849600] decode_slice_header error
[h264 @ 0x7fe1f4849600] no frame!
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 150, current: 148; changing to 151. This may result in incorrect timestamps in the output file.
Error while decoding stream #0:1: Invalid data found when processing input
    Last message repeated 1 times
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 151, current: 149; changing to 152. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 152, current: 150; changing to 153. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 153, current: 151; changing to 154. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 154, current: 152; changing to 155. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 155, current: 153; changing to 156. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 156, current: 154; changing to 157. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 157, current: 155; changing to 158. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 158, current: 156; changing to 159. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 159, current: 157; changing to 160. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 160, current: 158; changing to 161. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 161, current: 159; changing to 162. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 162, current: 160; changing to 163. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 163, current: 161; changing to 164. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 164, current: 162; changing to 165. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 165, current: 163; changing to 166. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 166, current: 164; changing to 167. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 167, current: 165; changing to 168. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 168, current: 166; changing to 169. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 169, current: 167; changing to 170. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 170, current: 168; changing to 171. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 171, current: 169; changing to 172. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 172, current: 170; changing to 173. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 173, current: 171; changing to 174. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 174, current: 172; changing to 175. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 175, current: 173; changing to 176. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 176, current: 174; changing to 177. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 177, current: 175; changing to 178. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 178, current: 176; changing to 179. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 179, current: 177; changing to 180. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 180, current: 178; changing to 181. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 181, current: 179; changing to 182. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 182, current: 180; changing to 183. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 183, current: 181; changing to 184. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 184, current: 182; changing to 185. This may result in incorrect timestamps in the output file.
[h264 @ 0x7fe1f483d800] top block unavailable for requested intra mode -1
[h264 @ 0x7fe1f483d800] error while decoding MB 5 0, bytestream 947
[h264 @ 0x7fe1f483d800] concealing 3600 DC, 3600 AC, 3600 MV errors in P frame
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 185, current: 183; changing to 186. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 186, current: 184; changing to 187. This may result in incorrect timestamps in the output file.
[h264 @ 0x7fe1f4849600] mmco: unref short failure
[h264 @ 0x7fe1f4849600] cabac_init_idc 4 overflow
[h264 @ 0x7fe1f4849600] decode_slice_header error
[h264 @ 0x7fe1f4849600] no frame!
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 187, current: 185; changing to 188. This may result in incorrect timestamps in the output file.
[h264 @ 0x7fe1f485fa00] deblocking filter parameters -43 0 out of range
[h264 @ 0x7fe1f485fa00] decode_slice_header error
[h264 @ 0x7fe1f485fa00] no frame!
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 188, current: 186; changing to 189. This may result in incorrect timestamps in the output file.
Error while decoding stream #0:1: Invalid data found when processing input
    Last message repeated 1 times
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 189, current: 187; changing to 190. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 190, current: 188; changing to 191. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 191, current: 189; changing to 192. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 192, current: 190; changing to 193. This may result in incorrect timestamps in the output file.
[avi @ 0x7fe1f5804e00] Non-monotonous DTS in output stream 0:1; previous: 193, current: 191; changing to 194. This may result in incorrect timestamps in the output file.


    



    The code above is just one example, I've seen similar problems with varying degrees of severity in lots of variations on this code. I've tried many things, including :

    



      

    • using local file URLs rather than HTTPS urls
    • 


    • using .mov rather than .mp4 files
    • 


    • using AVMovie and AVMutableMovie (and various setting tweaks, e.g. setting AVURLAssetPreferPreciseDurationAndTimingKey to true) rather than AVMutableComposition
    • 


    • tweaking settings (presets, etc.) on the AVAssetExportSession
    • 


    • constructing CMTime objects in different ways
    • 


    



    but to no avail—I can't seem to get AVFoundation to produce a video file that other tools can process.

    



    Any help is appreciated, even just any thoughts on what's unusual about the encoding of the output file, which you can download here if you can't or don't want to run the above Swift code to reproduce it yourself.