Recherche avancée

Médias (0)

Mot : - Tags -/organisation

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

Autres articles (111)

  • 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

  • Soumettre bugs et patchs

    10 avril 2011

    Un logiciel n’est malheureusement jamais parfait...
    Si vous pensez avoir mis la main sur un bug, reportez le dans notre système de tickets en prenant bien soin de nous remonter certaines informations pertinentes : le type de navigateur et sa version exacte avec lequel vous avez l’anomalie ; une explication la plus précise possible du problème rencontré ; si possibles les étapes pour reproduire le problème ; un lien vers le site / la page en question ;
    Si vous pensez avoir résolu vous même le bug (...)

  • Possibilité de déploiement en ferme

    12 avril 2011, par

    MediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
    Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...)

Sur d’autres sites (10168)

  • Anomalie #3763 : Rendre cohérent et simplifier l’appel à sa propre page d’auteur

    29 mars 2016, par realet RealET

    Pareil pour moi !

    J’en parlais déjà ici : http://thread.gmane.org/gmane.comp.web.spip.cvs/22072/focus=65350

  • Resize the video

    8 juin 2016, par Android dev

    I have a requirement for video size before upload on the server and would like to resize the video to make sure it will not go the threshold.

    So far I ended up with this command :

    ffmpeg -y -i E:\test3.mp4 -s 640*480 -r 15 -aspect 3:4 -ab 12288 -vcodec mpeg4 -b 2097152 E:\debug_video.mp4

    The issues with this command :
    - is it changes aspect ratio of the video
    - it works too slow (30 seconds for 12 seconds 24mb video on Nexus 5)

    The best solution so far for the first issue is to check the video resolution first and only than run the ffmpeg.

    Do you know how to do that with help of ffmpeg as two separate commands or as a single one ? Do you know how to make it faster ? Thank you in advance

    UPDATE
    The console output is below. Please let me know if you would like to get console output for onProgress callback

    adb -s 07f0f4ac01897da5 logcat "ffmpeg:*" "*:S"
    06-08 17:43:29.589 20835 20835 D ffmpeg  : FFmpeg:onProgress: ffmpeg version n3.
    0.1 Copyright (c) 2000-2016 the FFmpeg developers
    06-08 17:43:29.589 20835 20835 D ffmpeg  : FFmpeg:onProgress:   built with gcc 4
    .8 (GCC)
    06-08 17:43:29.592 20835 20835 D ffmpeg  : FFmpeg:onProgress:   configuration: -
    -target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchai
    n-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime
    -cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/s
    ysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enab
    le-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disabl
    e-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable
    -ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-sha
    red --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/includ
    e -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-a
    ll' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android
    /lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxf
    lags=
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libavutil      5
    5. 17.103 / 55. 17.103
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libavcodec     5
    7. 24.102 / 57. 24.102
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libavformat    5
    7. 25.100 / 57. 25.100
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libavdevice    5
    7.  0.101 / 57.  0.101
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libavfilter
    6. 31.100 /  6. 31.100
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libswscale
    4.  0.100 /  4.  0.100
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libswresample
    2.  0.101 /  2.  0.101
    06-08 17:43:29.600 20835 20835 D ffmpeg  : FFmpeg:onProgress:   libpostproc    5
    4.  0.100 / 54.  0.100
    06-08 17:43:29.885 20835 20835 D ffmpeg  : FFmpeg:onProgress: Input #0, mov,mp4,
    m4a,3gp,3g2,mj2, from '/storage/emulated/0/Pictures/test2.mp4':
    06-08 17:43:29.885 20835 20835 D ffmpeg  : FFmpeg:onProgress:   Metadata:
    06-08 17:43:29.885 20835 20835 D ffmpeg  : FFmpeg:onProgress:     major_brand
     : mp42
    06-08 17:43:29.885 20835 20835 D ffmpeg  : FFmpeg:onProgress:     minor_version
     : 0
    06-08 17:43:29.885 20835 20835 D ffmpeg  : FFmpeg:onProgress:     compatible_bra
    nds: isommp42
    06-08 17:43:29.886 20835 20835 D ffmpeg  : FFmpeg:onProgress:     creation_time
     : 2016-06-02 09:20:58
    06-08 17:43:29.886 20835 20835 D ffmpeg  : FFmpeg:onProgress:     com.android.ve
    rsion: 6.0.1
    06-08 17:43:29.886 20835 20835 D ffmpeg  : FFmpeg:onProgress:   Duration: 00:00:
    12.03, start: 0.000000, bitrate: 17234 kb/s
    06-08 17:43:29.886 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Stream #0:0(en
    g): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080, 16902 kb/s,
    SAR 1:1 DAR 16:9, 29.81 fps, 29.85 tbr, 90k tbn, 180k tbc (default)
    06-08 17:43:29.886 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Metadata:
    06-08 17:43:29.890 20835 20835 D ffmpeg  : FFmpeg:onProgress:       rotate
       : 90
    06-08 17:43:29.890 20835 20835 D ffmpeg  : FFmpeg:onProgress:       creation_tim
    e   : 2016-06-02 09:20:58
    06-08 17:43:29.891 20835 20835 D ffmpeg  : FFmpeg:onProgress:       handler_name
       : VideoHandle
    06-08 17:43:29.891 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Side data:
    06-08 17:43:29.891 20835 20835 D ffmpeg  : FFmpeg:onProgress:       displaymatri
    x: rotation of -90.00 degrees
    06-08 17:43:29.892 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Stream #0:1(en
    g): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)

    06-08 17:43:29.892 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Metadata:
    06-08 17:43:29.893 20835 20835 D ffmpeg  : FFmpeg:onProgress:       creation_tim
    e   : 2016-06-02 09:20:58
    06-08 17:43:29.893 20835 20835 D ffmpeg  : FFmpeg:onProgress:       handler_name
       : SoundHandle
    06-08 17:43:29.893 20835 20835 D ffmpeg  : FFmpeg:onProgress: Please use -b:a or
    -b:v, -b is ambiguous
    06-08 17:43:29.894 20835 20835 D ffmpeg  : FFmpeg:onProgress: Codec AVOption pre
    set (Set the encoding preset (cf. x264 --fullhelp)) specified for output file #0
    (/storage/emulated/0/Pictures/scaled_video.mp4) has not been used for any strea
    m. The most likely reason is either wrong type (e.g. a video option with no vide
    o streams) or that it is a private option of some encoder which was not actually
    used for any stream.
    06-08 17:43:29.939 20835 20835 D ffmpeg  : FFmpeg:onProgress: [mpeg4 @ 0xb5c4440
    0] Invalid pixel aspect ratio 5121/5120, limit is 255/255 reducing
    06-08 17:43:29.996 20835 20835 D ffmpeg  : FFmpeg:onProgress: Output #0, mp4, to
    '/storage/emulated/0/Pictures/scaled_video.mp4':
    06-08 17:43:29.998 20835 20835 D ffmpeg  : FFmpeg:onProgress:   Metadata:
    06-08 17:43:29.999 20835 20835 D ffmpeg  : FFmpeg:onProgress:     major_brand
     : mp42
    06-08 17:43:30.000 20835 20835 D ffmpeg  : FFmpeg:onProgress:     minor_version
     : 0
    06-08 17:43:30.000 20835 20835 D ffmpeg  : FFmpeg:onProgress:     compatible_bra
    nds: isommp42
    06-08 17:43:30.001 20835 20835 D ffmpeg  : FFmpeg:onProgress:     com.android.ve
    rsion: 6.0.1
    06-08 17:43:30.002 20835 20835 D ffmpeg  : FFmpeg:onProgress:     encoder
     : Lavf57.25.100
    06-08 17:43:30.003 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Stream #0:0(en
    g): Video: mpeg4 ( [0][0][0] / 0x0020), yuv420p, 640x1138 [SAR 1:1 DAR 320:569],
    q=2-31, 2097 kb/s, SAR 5121:5120 DAR 9:16, 15 fps, 15360 tbn, 15 tbc (default)
    06-08 17:43:30.004 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Metadata:
    06-08 17:43:30.005 20835 20835 D ffmpeg  : FFmpeg:onProgress:       handler_name
       : VideoHandle
    06-08 17:43:30.006 20835 20835 D ffmpeg  : FFmpeg:onProgress:       creation_tim
    e   : 2016-06-02 09:20:58
    06-08 17:43:30.007 20835 20835 D ffmpeg  : FFmpeg:onProgress:       encoder
       : Lavc57.24.102 mpeg4
    06-08 17:43:30.008 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Side data:
    06-08 17:43:30.008 20835 20835 D ffmpeg  : FFmpeg:onProgress:       unknown side
    data type 10 (24 bytes)
    06-08 17:43:30.008 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Stream #0:1(en
    g): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, mono, fltp, 12 kb/s (def
    ault)
    06-08 17:43:30.008 20835 20835 D ffmpeg  : FFmpeg:onProgress:     Metadata:
    06-08 17:43:30.008 20835 20835 D ffmpeg  : FFmpeg:onProgress:       creation_tim
    e   : 2016-06-02 09:20:58
    06-08 17:43:30.008 20835 20835 D ffmpeg  : FFmpeg:onProgress:       handler_name
       : SoundHandle
    06-08 17:43:30.009 20835 20835 D ffmpeg  : FFmpeg:onProgress:       encoder
       : Lavc57.24.102 aac
    06-08 17:43:30.009 20835 20835 D ffmpeg  : FFmpeg:onProgress: Stream mapping:
    06-08 17:43:30.009 20835 20835 D ffmpeg  : FFmpeg:onProgress:   Stream #0:0 -> #
    0:0 (h264 (native) -> mpeg4 (native))
    06-08 17:43:30.009 20835 20835 D ffmpeg  : FFmpeg:onProgress:   Stream #0:1 -> #
    0:1 (aac (native) -> aac (native))
    06-08 17:43:30.010 20835 20835 D ffmpeg  : FFmpeg:onProgress: Press [q] to stop,
    [?] for help
    06-08 17:43:30.730 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=    2 fps=0.
    0 q=2.0 size=     129kB time=00:00:01.00 bitrate=1056.4kbits/s speed=1.66x
    06-08 17:43:31.350 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=    5 fps=4.
    0 q=2.0 size=     314kB time=00:00:01.00 bitrate=2566.0kbits/s dup=0 drop=1 spee
    d=0.809x
    06-08 17:43:31.842 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=    8 fps=4.
    6 q=7.5 size=     404kB time=00:00:01.00 bitrate=3302.5kbits/s dup=0 drop=4 spee
    d=0.573x
    06-08 17:43:32.367 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   10 fps=4.
    4 q=8.7 size=     431kB time=00:00:01.00 bitrate=3523.1kbits/s dup=0 drop=6 spee
    d=0.441x
    06-08 17:43:32.873 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   13 fps=4.
    7 q=9.0 size=     518kB time=00:00:01.00 bitrate=4230.9kbits/s dup=0 drop=9 spee
    d=0.361x
    06-08 17:43:33.392 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   15 fps=4.
    5 q=11.6 size=     536kB time=00:00:01.00 bitrate=4381.7kbits/s dup=0 drop=11 sp
    eed=0.303x
    06-08 17:43:34.011 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   17 fps=4.
    3 q=11.7 size=     558kB time=00:00:02.00 bitrate=2279.7kbits/s dup=0 drop=13 sp
    eed=0.512x
    06-08 17:43:34.621 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   20 fps=4.
    4 q=12.5 size=     598kB time=00:00:02.00 bitrate=2444.5kbits/s dup=0 drop=16 sp
    eed=0.443x
    06-08 17:43:35.207 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   23 fps=4.
    5 q=11.3 size=     630kB time=00:00:02.00 bitrate=2574.3kbits/s dup=0 drop=19 sp
    eed=0.394x
    06-08 17:43:35.726 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   26 fps=4.
    6 q=10.1 size=     689kB time=00:00:02.00 bitrate=2815.3kbits/s dup=0 drop=22 sp
    eed=0.357x
    06-08 17:43:36.252 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   28 fps=4.
    6 q=9.6 size=     707kB time=00:00:02.00 bitrate=2888.7kbits/s dup=0 drop=24 spe
    ed=0.327x
    06-08 17:43:36.749 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   31 fps=4.
    7 q=9.5 size=     726kB time=00:00:02.06 bitrate=2879.6kbits/s dup=0 drop=27 spe
    ed=0.311x
    06-08 17:43:37.341 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   33 fps=4.
    6 q=9.3 size=     767kB time=00:00:03.00 bitrate=2089.4kbits/s dup=0 drop=29 spe
    ed=0.417x
    06-08 17:43:37.872 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   35 fps=4.
    5 q=9.4 size=     791kB time=00:00:03.00 bitrate=2154.3kbits/s dup=0 drop=31 spe
    ed=0.386x
    06-08 17:43:38.447 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   38 fps=4.
    6 q=9.2 size=     854kB time=00:00:03.00 bitrate=2324.7kbits/s dup=0 drop=34 spe
    ed=0.361x
    06-08 17:43:39.005 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   41 fps=4.
    6 q=8.2 size=     883kB time=00:00:03.00 bitrate=2404.7kbits/s dup=0 drop=36 spe
    ed=0.338x
    06-08 17:43:39.507 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   43 fps=4.
    6 q=9.0 size=     918kB time=00:00:03.00 bitrate=2499.3kbits/s dup=0 drop=38 spe
    ed=0.32x
    06-08 17:43:40.065 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   46 fps=4.
    6 q=9.6 size=     948kB time=00:00:03.06 bitrate=2531.5kbits/s dup=0 drop=41 spe
    ed=0.307x
    06-08 17:43:40.602 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   48 fps=4.
    6 q=9.3 size=     990kB time=00:00:04.01 bitrate=2021.2kbits/s dup=0 drop=43 spe
    ed=0.381x
    06-08 17:43:41.189 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   51 fps=4.
    6 q=7.3 size=    1025kB time=00:00:04.01 bitrate=2094.5kbits/s dup=0 drop=46 spe
    ed=0.361x
    06-08 17:43:41.744 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   54 fps=4.
    6 q=6.9 size=    1064kB time=00:00:04.01 bitrate=2173.0kbits/s dup=0 drop=49 spe
    ed=0.345x
    06-08 17:43:42.288 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   56 fps=4.
    6 q=6.1 size=    1082kB time=00:00:04.01 bitrate=2209.5kbits/s dup=0 drop=51 spe
    ed=0.329x
    06-08 17:43:42.872 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   59 fps=4.
    6 q=4.5 size=    1107kB time=00:00:04.01 bitrate=2260.3kbits/s dup=0 drop=54 spe
    ed=0.314x
    06-08 17:43:43.292 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   61 fps=4.
    6 q=3.2 size=    1152kB time=00:00:04.26 bitrate=2212.2kbits/s dup=0 drop=56 spe
    ed=0.321x
    06-08 17:43:43.986 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   64 fps=4.
    6 q=3.9 size=    1178kB time=00:00:05.01 bitrate=1924.7kbits/s dup=0 drop=59 spe
    ed=0.361x
    06-08 17:43:44.518 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   66 fps=4.
    6 q=3.6 size=    1196kB time=00:00:05.01 bitrate=1953.9kbits/s dup=0 drop=61 spe
    ed=0.347x
    06-08 17:43:45.104 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   69 fps=4.
    6 q=3.4 size=    1232kB time=00:00:05.01 bitrate=2013.0kbits/s dup=0 drop=64 spe
    ed=0.334x
    06-08 17:43:45.687 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   72 fps=4.
    6 q=4.9 size=    1263kB time=00:00:05.01 bitrate=2063.4kbits/s dup=0 drop=67 spe
    ed=0.321x
    06-08 17:43:46.262 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   75 fps=4.
    6 q=3.5 size=    1307kB time=00:00:05.01 bitrate=2135.1kbits/s dup=0 drop=70 spe
    ed=0.31x
    06-08 17:43:46.840 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   77 fps=4.
    6 q=3.1 size=    1334kB time=00:00:06.01 bitrate=1816.5kbits/s dup=0 drop=72 spe
    ed=0.359x
    06-08 17:43:47.354 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   80 fps=4.
    6 q=3.5 size=    1380kB time=00:00:06.01 bitrate=1878.6kbits/s dup=0 drop=75 spe
    ed=0.349x
    06-08 17:43:47.826 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   82 fps=4.
    6 q=3.6 size=    1412kB time=00:00:06.01 bitrate=1923.2kbits/s dup=0 drop=77 spe
    ed=0.339x
    06-08 17:43:48.346 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   85 fps=4.
    7 q=3.5 size=    1476kB time=00:00:06.01 bitrate=2009.8kbits/s dup=0 drop=80 spe
    ed=0.33x
    06-08 17:43:48.911 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   88 fps=4.
    7 q=3.5 size=    1524kB time=00:00:06.01 bitrate=2074.7kbits/s dup=0 drop=83 spe
    ed=0.32x
    06-08 17:43:49.496 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   91 fps=4.
    7 q=3.8 size=    1556kB time=00:00:06.06 bitrate=2101.5kbits/s dup=0 drop=86 spe
    ed=0.313x
    06-08 17:43:50.100 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   93 fps=4.
    7 q=4.1 size=    1616kB time=00:00:07.01 bitrate=1886.0kbits/s dup=0 drop=88 spe
    ed=0.352x
    06-08 17:43:50.598 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   95 fps=4.
    6 q=4.3 size=    1652kB time=00:00:07.01 bitrate=1928.4kbits/s dup=0 drop=90 spe
    ed=0.342x
    06-08 17:43:51.182 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=   98 fps=4.
    7 q=4.7 size=    1728kB time=00:00:07.01 bitrate=2017.1kbits/s dup=0 drop=93 spe
    ed=0.333x
    06-08 17:43:51.693 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  100 fps=4.
    6 q=4.6 size=    1763kB time=00:00:07.01 bitrate=2057.5kbits/s dup=0 drop=95 spe
    ed=0.325x
    06-08 17:43:52.272 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  103 fps=4.
    6 q=4.6 size=    1812kB time=00:00:07.01 bitrate=2115.1kbits/s dup=0 drop=98 spe
    ed=0.317x
    06-08 17:43:52.839 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  106 fps=4.
    7 q=4.2 size=    1845kB time=00:00:07.06 bitrate=2138.7kbits/s dup=0 drop=101 sp
    eed=0.311x
    06-08 17:43:53.383 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  108 fps=4.
    6 q=4.1 size=    1886kB time=00:00:08.02 bitrate=1925.7kbits/s dup=0 drop=103 sp
    eed=0.344x
    06-08 17:43:53.966 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  111 fps=4.
    7 q=3.5 size=    1940kB time=00:00:08.02 bitrate=1981.0kbits/s dup=0 drop=106 sp
    eed=0.336x
    06-08 17:43:54.472 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  113 fps=4.
    6 q=3.1 size=    1968kB time=00:00:08.02 bitrate=2010.1kbits/s dup=0 drop=108 sp
    eed=0.329x
    06-08 17:43:55.129 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  116 fps=4.
    6 q=3.3 size=    2016kB time=00:00:08.02 bitrate=2058.5kbits/s dup=0 drop=111 sp
    eed=0.321x
    06-08 17:43:55.624 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  119 fps=4.
    7 q=3.2 size=    2052kB time=00:00:08.02 bitrate=2096.0kbits/s dup=0 drop=114 sp
    eed=0.314x
    06-08 17:43:56.082 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  121 fps=4.
    6 q=2.7 size=    2119kB time=00:00:08.06 bitrate=2152.0kbits/s dup=0 drop=116 sp
    eed=0.309x
    06-08 17:43:56.729 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  124 fps=4.
    7 q=4.0 size=    2172kB time=00:00:09.02 bitrate=1971.5kbits/s dup=0 drop=119 sp
    eed=0.339x
    06-08 17:43:57.292 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  127 fps=4.
    7 q=3.5 size=    2210kB time=00:00:09.02 bitrate=2006.0kbits/s dup=0 drop=122 sp
    eed=0.332x
    06-08 17:43:57.793 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  129 fps=4.
    7 q=3.3 size=    2234kB time=00:00:09.02 bitrate=2028.1kbits/s dup=0 drop=124 sp
    eed=0.326x
    06-08 17:43:58.431 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  132 fps=4.
    7 q=3.3 size=    2275kB time=00:00:09.02 bitrate=2065.6kbits/s dup=0 drop=127 sp
    eed=0.319x
    06-08 17:43:58.986 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  135 fps=4.
    7 q=3.4 size=    2344kB time=00:00:09.02 bitrate=2127.5kbits/s dup=0 drop=130 sp
    eed=0.313x
    06-08 17:43:59.374 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  136 fps=4.
    6 q=3.2 size=    2356kB time=00:00:09.10 bitrate=2119.0kbits/s dup=0 drop=131 sp
    eed=0.31x
    06-08 17:43:59.986 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  139 fps=4.
    6 q=2.9 size=    2392kB time=00:00:10.02 bitrate=1954.2kbits/s dup=0 drop=133 sp
    eed=0.335x
    06-08 17:44:00.582 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  142 fps=4.
    7 q=2.8 size=    2428kB time=00:00:10.02 bitrate=1983.5kbits/s dup=0 drop=136 sp
    eed=0.329x
    06-08 17:44:01.158 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  145 fps=4.
    7 q=3.0 size=    2516kB time=00:00:10.02 bitrate=2055.4kbits/s dup=0 drop=139 sp
    eed=0.323x
    06-08 17:44:01.691 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  148 fps=4.
    7 q=4.6 size=    2583kB time=00:00:10.02 bitrate=2110.7kbits/s dup=0 drop=142 sp
    eed=0.317x
    06-08 17:44:02.168 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  150 fps=4.
    7 q=4.8 size=    2626kB time=00:00:10.02 bitrate=2145.1kbits/s dup=0 drop=144 sp
    eed=0.312x
    06-08 17:44:02.587 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  152 fps=4.
    7 q=5.0 size=    2668kB time=00:00:10.32 bitrate=2117.0kbits/s dup=0 drop=146 sp
    eed=0.317x
    06-08 17:44:03.209 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  154 fps=4.
    6 q=5.0 size=    2709kB time=00:00:11.02 bitrate=2012.4kbits/s dup=0 drop=148 sp
    eed=0.333x
    06-08 17:44:03.815 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  157 fps=4.
    7 q=3.7 size=    2770kB time=00:00:11.02 bitrate=2057.2kbits/s dup=0 drop=151 sp
    eed=0.327x
    06-08 17:44:04.402 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  160 fps=4.
    7 q=3.3 size=    2800kB time=00:00:11.02 bitrate=2079.7kbits/s dup=0 drop=154 sp
    eed=0.321x
    06-08 17:44:04.965 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  163 fps=4.
    7 q=3.0 size=    2835kB time=00:00:11.02 bitrate=2105.7kbits/s dup=0 drop=157 sp
    eed=0.316x
    06-08 17:44:05.505 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  166 fps=4.
    7 q=3.1 size=    2880kB time=00:00:11.06 bitrate=2131.8kbits/s dup=0 drop=160 sp
    eed=0.313x
    06-08 17:44:06.094 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  169 fps=4.
    7 q=3.3 size=    2880kB time=00:00:11.26 bitrate=2093.9kbits/s dup=0 drop=163 sp
    eed=0.313x
    06-08 17:44:06.603 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  171 fps=4.
    7 q=3.8 size=    2880kB time=00:00:11.40 bitrate=2069.5kbits/s dup=0 drop=165 sp
    eed=0.312x
    06-08 17:44:07.192 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  174 fps=4.
    7 q=3.6 size=    2880kB time=00:00:11.60 bitrate=2033.8kbits/s dup=0 drop=168 sp
    eed=0.313x
    06-08 17:44:07.772 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  177 fps=4.
    7 q=3.3 size=    2880kB time=00:00:11.80 bitrate=1999.3kbits/s dup=0 drop=171 sp
    eed=0.313x
    06-08 17:44:08.287 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  180 fps=4.
    7 q=3.2 size=    2880kB time=00:00:12.00 bitrate=1966.0kbits/s dup=0 drop=174 sp
    eed=0.314x
    06-08 17:44:08.900 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  182 fps=4.
    7 q=3.5 size=    3118kB time=00:00:12.13 bitrate=2105.2kbits/s dup=0 drop=176 sp
    eed=0.313x
    06-08 17:44:08.915 20835 20835 D ffmpeg  : FFmpeg:onProgress: frame=  182 fps=4.
    7 q=3.5 Lsize=    3205kB time=00:00:12.13 bitrate=2163.7kbits/s dup=0 drop=176 s
    peed=0.312x
    06-08 17:44:08.915 20835 20835 D ffmpeg  : FFmpeg:onProgress: video:3177kB audio
    :21kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.19565
    3%
    06-08 17:44:08.946 20835 20835 D ffmpeg  : FFmpeg:onProgress: [aac @ 0xb5c44c00]
    Qavg: 137.182
    06-08 17:44:08.963 20835 20835 D ffmpeg  : FFmpeg:onSuccess: ffmpeg version n3.0
    .1 Copyright (c) 2000-2016 the FFmpeg developers
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   built with gcc 4.8 (GCC)
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   configuration: --target-os=linux --
    cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-l
    inux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroo
    t=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic
    --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --ena
    ble-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-f
    fserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-f
    fprobe --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/ho
    me/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=
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libavutil      55. 17.103 / 55. 17.
    103
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libavcodec     57. 24.102 / 57. 24.
    102
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libavformat    57. 25.100 / 57. 25.
    100
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libavdevice    57.  0.101 / 57.  0.
    101
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libavfilter     6. 31.100 /  6. 31.
    100
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libswscale      4.  0.100 /  4.  0.
    100
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libswresample   2.  0.101 /  2.  0.
    101
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   libpostproc    54.  0.100 / 54.  0.
    100
    06-08 17:44:08.963 20835 20835 D ffmpeg  : Input #0, mov,mp4,m4a,3gp,3g2,mj2, fr
    om '/storage/emulated/0/Pictures/test2.mp4':
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   Metadata:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     major_brand     : mp42
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     minor_version   : 0
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     compatible_brands: isommp42
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     creation_time   : 2016-06-02 09:2
    0:58
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     com.android.version: 6.0.1
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   Duration: 00:00:12.03, start: 0.000
    000, bitrate: 17234 kb/s
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Stream #0:0(eng): Video: h264 (Ba
    seline) (avc1 / 0x31637661), yuv420p, 1920x1080, 16902 kb/s, SAR 1:1 DAR 16:9, 2
    9.81 fps, 29.85 tbr, 90k tbn, 180k tbc (default)
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Metadata:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       rotate          : 90
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       creation_time   : 2016-06-02 09
    :20:58
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       handler_name    : VideoHandle
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Side data:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       displaymatrix: rotation of -90.
    00 degrees
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Stream #0:1(eng): Audio: aac (LC)
    (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 96 kb/s (default)
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Metadata:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       creation_time   : 2016-06-02 09
    :20:58
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       handler_name    : SoundHandle
    06-08 17:44:08.963 20835 20835 D ffmpeg  : Please use -b:a or -b:v, -b is ambigu
    ous
    06-08 17:44:08.963 20835 20835 D ffmpeg  : Codec AVOption preset (Set the encodi
    ng preset (cf. x264 --fullhelp)) specified for output file #0 (/storage/emulated
    /0/Pictures/scaled_video.mp4) has not been used for any stream. The most likely
    reason is either wrong type (e.g. a video option with no video streams) or that
    it is a private option of some encoder which was not actually used for any strea
    m.
    06-08 17:44:08.963 20835 20835 D ffmpeg  : [mpeg4 @ 0xb5c44400] Invalid pixel as
    pect ratio 5121/5120, limit is 255/255 reducing
    06-08 17:44:08.963 20835 20835 D ffmpeg  : Output #0, mp4, to '/storage/emulated
    /0/Pictures/scaled_video.mp4':
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   Metadata:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     major_brand     : mp42
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     minor_version   : 0
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     compatible_brands: isommp42
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     com.android.version: 6.0.1
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     encoder         : Lavf57.25.100
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Stream #0:0(eng): Video: mpeg4 (
    [0][0][0] / 0x0020), yuv420p, 640x1138 [SAR 1:1 DAR 320:569], q=2-31, 2097 kb/s,
    SAR 5121:5120 DAR 9:16, 15 fps, 15360 tbn, 15 tbc (default)
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Metadata:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       handler_name    : VideoHandle
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       creation_time   : 2016-06-02 09
    :20:58
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       encoder         : Lavc57.24.102
    mpeg4
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Side data:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       unknown side data type 10 (24 b
    ytes)
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Stream #0:1(eng): Audio: aac (LC)
    ([64][0][0][0] / 0x0040), 48000 Hz, mono, fltp, 12 kb/s (default)
    06-08 17:44:08.963 20835 20835 D ffmpeg  :     Metadata:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       creation_time   : 2016-06-02 09
    :20:58
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       handler_name    : SoundHandle
    06-08 17:44:08.963 20835 20835 D ffmpeg  :       encoder         : Lavc57.24.102
    aac
    06-08 17:44:08.963 20835 20835 D ffmpeg  : Stream mapping:
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   Stream #0:0 -> #0:0 (h264 (native)
    -> mpeg4 (native))
    06-08 17:44:08.963 20835 20835 D ffmpeg  :   Stream #0:1 -> #0:1 (aac (native) -
    > aac (native))
    06-08 17:44:08.963 20835 20835 D ffmpeg  : Press [q] to stop, [?] for help
    06-08 17:44:08.963 20835 20835 D ffmpeg  : frame=    2 fps=0.0 q=2.0 size=     1
    29kB time=00:00:01.00 bitrate=1056.4kbits/s speed=1.66x
    06-08 17:44:08.963 20835 20835 D ffmpeg  : frame=    5 fps=4.0 q=2.0 size=     3
    14kB time=00:00:01.00 bitrate=2566.0kbits/s dup=0 drop=1 speed=0.809x
    06-08 17:44:08.963 20835 20835 D ffmpeg  : frame=    8
    06-08 17:44:08.963 20835 20835 D ffmpeg  : FFmpeg:onFinish:
  • Translating Return To Ringworld

    17 août 2016, par Multimedia Mike — Game Hacking

    As indicated in my previous post, the Translator has expressed interest in applying his hobby towards another DOS adventure game from the mid 1990s : Return to Ringworld (henceforth R2RW) by Tsunami Media. This represents significantly more work than the previous outing, Phantasmagoria.


    Return to Ringworld Title Screen
    Return to Ringworld Title Screen

    I have been largely successful thus far in crafting translation tools. I have pushed the fruits of these labors to a Github repository named improved-spoon (named using Github’s random name generator because I wanted something more interesting than ‘game-hacking-tools’).

    Further, I have recorded everything I have learned about the game’s resource format (named RLB) at the XentaxWiki.

    New Challenges
    The previous project mostly involved scribbling subtitle text on an endless series of video files by leveraging a separate software library which took care of rendering fonts. In contrast, R2RW has at least 30k words of English text contained in various blocks which require translation. Further, the game encodes its own fonts (9 of them) which stubbornly refuse to be useful for rendering text in nearly any other language.

    Thus, the immediate 2 challenges are :

    1. Translating volumes of text to Spanish
    2. Expanding the fonts to represent Spanish characters

    Normally, “figuring out the file format data structures involved” is on the list as well. Thankfully, understanding the formats is not a huge challenge since the folks at the ScummVM project already did all the heavy lifting of reverse engineering the file formats.

    The Pitch
    Here was the plan :

    • Create a tool that can dump out the interesting data from the game’s master resource file.
    • Create a tool that can perform the elaborate file copy described in the previous post. The new file should be bit for bit compatible with the original file.
    • Modify the rewriting tool to repack some modified strings into the new resource file.
    • Unpack the fonts and figure out a way to add new characters.
    • Repack the new fonts into the resource file.
    • Repack message strings with Spanish characters.

    Showing The Work : Modifying Strings
    First, I created the tool to unpack blocks of message string resources. I elected to dump the strings to disk as JSON data since it’s easy to write and read JSON using Python, and it’s quick to check if any mistakes have crept in.

    The next step is to find a string to focus on. So I started the game and looked for the first string I could trigger :


    Return to Ringworld: Original text

    This shows up in the JSON string dump as :

      
        "Spanish" : " !0205Your quarters on the Lance of Truth are spartan, in accord with your mercenary lifestyle.",
        "English" : " !0205Your quarters on the Lance of Truth are spartan, in accord with your mercenary lifestyle."
      ,
    

    As you can see, many of the strings are encoded with an ID key as part of the string which should probably be left unmodified. I changed the Spanish string :

      
        "Spanish" : " !0205Hey, is this thing on ?",
        "English" : " !0205Your quarters on the Lance of Truth are spartan, in accord with your mercenary lifestyle."
      ,
    

    And then I wrote the repacking tool to substitute this message block for the original one. Look ! The engine liked it !


    Return to Ringworld: Modified text

    Little steps, little steps.

    Showing The Work : Modifying Fonts
    The next little step is to find a place to put the new characters. First, a problem definition : The immediate goal is to translate the game into Spanish. The current fonts encoded in the game resource only support 128 characters, corresponding to 7-bit ASCII. In order to properly express Spanish, 16 new characters are required : á, é, í, ó, ú, ü, ñ (each in upper and lower case for a total of 14 characters) as well as the inverted punctuation symbols : ¿, ¡.

    Again, ScummVM already documents (via code) the font coding format. So I quickly determined that each of the 9 fonts is comprised of 128 individual bitmaps with either 1 or 2 bits per pixel. I wrote a tool to unpack each character into an individual portable grey map (PGM) image. These can be edited with graphics editors or with text editors since they are just text files.

    Where to put the 16 new Spanish characters ? ASCII characters 1-31 are non-printable, so my first theory was that these characters would be empty and could be repurposed. However, after dumping and inspecting, I learned that they represent the same set of characters as seen in DOS Code Page 437. So that’s a no-go (so I assumed ; I didn’t check if any existing strings leveraged those characters).

    My next plan was hope that I could extend the font beyond index 127 and use positions 128-143. This worked superbly. This is the new example string :

      
        "Spanish" : " !0205¿Ves esto ? ¡La puntuacion se hace girar !",
        "English" : " !0205Your quarters on the Lance of Truth are spartan, in accord with your mercenary lifestyle."
      ,
    

    Fortunately, JSON understands UTF-8 and after mapping the 16 necessary characters down to the numeric range of 128-143, I repacked the new fonts and the new string :


    Return to Ringworld: Espanol
    Translation : “See this ? The punctuation is rotated !”

    Another victory. Notice that there are no diacritics in this string. None are required for this translation (according to Google Translate). But adding the diacritics to the 14 characters isn’t my department. My tool does help by prepopulating [aeiounAEIOUN] into the right positions to make editing easier for the Translator. But the tool does make the effort to rotate the punctuation since that is easy to automate.

    Next Steps and Residual Weirdness
    There is another method for storing ASCII text inside the R2RW resource called strip resources. These store conversation scripts. There are plenty of fields in the data structures that I don’t fully understand. So, following the lessons I learned from my previous translation outing, I was determined to modify as little as possible. This means copying over most of the original data structures intact, but changing the field representing the relative offset that points to the corresponding string. This works well since the strings are invariably stored NULL-terminated in a concatenated manner.

    I wanted to document for the record that the format that R2RW uses has some weirdness in they way it handles residual bytes in a resource. The variant of the resource format that R2RW uses requires every block to be aligned on a 16-byte boundary. If there is space between the logical end of the resource and the start of the next resource, there are random bytes in that space. This leads me to believe that these bytes were originally recorded from stale/uninitialized memory. This frustrates me because when I write the initial file copy tool which unpacks and repacks each block, I want the new file to be identical to the original. However, these apparent nonsense bytes at the end thwart that effort.

    But leaving those bytes as 0 produces an acceptable resource file.

    Text On Static Images
    There is one last resource type we are working on translating. There are various bits of text that are rendered as images. For example, from the intro :


    Return to Ringworld: Static text

    It’s possible to locate and extract the exact image that is overlaid on this scene, though without the colors :


    Original static text

    The palettes are stored in a separate resource type. So it seems the challenge is to figure out the palette in use for these frames and render a transparent image that uses the same palette, then repack the new text-image into the new resource file.