Recherche avancée

Médias (16)

Mot : - Tags -/mp3

Autres articles (96)

  • Les sons

    15 mai 2013, par
  • Contribute to a better visual interface

    13 avril 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

  • Multilang : améliorer l’interface pour les blocs multilingues

    18 février 2011, par

    Multilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
    Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.

Sur d’autres sites (5341)

  • FFMPEG av_interleaved_write_frame() : Operation not permitted

    20 octobre 2014, par camslaz

    Ok I receiving a ’av_interleaved_write_frame() : Operation not permitted’ error while trying to encode an MOV file. Firstly I need to outline the conditions behind it.

    I am encoding 12 different files of different resolution sizes and format types via a PHP script that runs on cron. Basically it grabs a 250mb HD MOV file and encodes it in 4 different frame sizes as MOV, MP4 and WMV file types.

    Now the script takes over 10mins to run and encode each of the files for the 250mb input file. I am outputting the processing times and as soon as the time on the script hits 10mins FFMPEG crashes and returns "av_interleaved_write_frame() : Operation not permitted" for the current file being encoded and all other remaining files yet to be encoded.

    If the input videos is 150MB the total time the script runs for is under 10mins so it encodes all of the videos fine. Additionally if I run the FFMPEG command on the individual file that it fails on for the 250mb file it encodes the file with no issues.

    From doing to research on the error "av_interleaved_write_frame()" it seems it is related to timestamps of what I understand to be of the input file. But in saying that it doesn’t seem to be the case in my instance because I can encode the file with no problem if I do it individually.

    example ffmpeg command

    ffmpeg -i GVowbt3vsrXL.mov -s 1920x1080 -sameq -vf "unsharp" -y GVowbt3vsrXL_4.wmv

    Error output on the failed file at 10mins. Remember there is no issue with the command if I run it by itself it is only when the script hits 10mins.

    'output' =>
        array (
          0 => 'FFmpeg version SVN-r24545, Copyright (c) 2000-2010 the FFmpeg developers',
          1 => '  built on Aug 20 2010 23:32:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)',
          2 => '  configuration: --enable-shared --enable-gpl --enable-pthreads --enable-nonfree --cpu=opteron --extra-cflags=\'-O3 -march=opteron -mtune=opteron\' --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-avfilter --enable-filter=movie --enable-avfilter-lavf --enable-swscale',
          3 => '  libavutil     50.23. 0 / 50.23. 0',
          4 => '  libavcore      0. 1. 0 /  0. 1. 0',
          5 => '  libavcodec    52.84. 1 / 52.84. 1',
          6 => '  libavformat   52.77. 0 / 52.77. 0',
          7 => '  libavdevice   52. 2. 0 / 52. 2. 0',
          8 => '  libavfilter    1.26. 1 /  1.26. 1',
          9 => '  libswscale     0.11. 0 /  0.11. 0',
          10 => 'Input #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/home/hdfootage/public_html/process/VideoEncode/_tmpfiles/GVowbt3vsrXL/GVowbt3vsrXL.mov\':',
          11 => '  Metadata:',
          12 => '    major_brand     : qt',
          13 => '    minor_version   : 537199360',
          14 => '    compatible_brands: qt',
          15 => '  Duration: 00:00:20.00, start: 0.000000, bitrate: 110802 kb/s',
          16 => '    Stream #0.0(eng): Video: mjpeg, yuvj422p, 1920x1080 [PAR 72:72 DAR 16:9], 109386 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc',
          17 => '    Stream #0.1(eng): Audio: pcm_s16be, 44100 Hz, 2 channels, s16, 1411 kb/s',
          18 => '[buffer @ 0xdcd0e0] w:1920 h:1080 pixfmt:yuvj422p',
          19 => '[unsharp @ 0xe00280] auto-inserting filter \'auto-inserted scaler 0\' between the filter \'src\' and the filter \'Filter 0 unsharp\'',
          20 => '[scale @ 0xe005b0] w:1920 h:1080 fmt:yuvj422p -> w:1920 h:1080 fmt:yuv420p flags:0xa0000004',
          21 => '[unsharp @ 0xe00280] effect:sharpen type:luma msize_x:5 msize_y:5 amount:1.00',
          22 => '[unsharp @ 0xe00280] effect:none type:chroma msize_x:0 msize_y:0 amount:0.00',
          23 => 'Output #0, asf, to \'/home/hdfootage/public_html/process/VideoEncode/_tmpfiles/GVowbt3vsrXL/GVowbt3vsrXL_4.wmv\':',
          24 => '  Metadata:',
          25 => '    WM/EncodingSettings: Lavf52.77.0',
          26 => '    Stream #0.0(eng): Video: msmpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 1k tbn, 25 tbc',
          27 => '    Stream #0.1(eng): Audio: libmp3lame, 44100 Hz, 2 channels, s16, 64 kb/s',
          28 => 'Stream mapping:',
          29 => '  Stream #0.0 -> #0.0',
          30 => '  Stream #0.1 -> #0.1',
          31 => 'Press [q] to stop encoding',
          32 => '[msmpeg4 @ 0xdccb50] warning, clipping 1 dct coefficients to -127..127',

    Then it errors

    frame=   75 fps=  5 q=1.0 size=   12704kB time=2.90 bitrate=3588 6.0kbits av_interleaved_write_frame(): Operation not permitted',
        )

    Has any anybody encountered this sort of problem before ? It seems to be something to do with the timestamps but only because the script is running for a period longer then 10mins. It maybe related to PHP/Apache config but I don’t know if it is FFMPEG or if it is server config I need to be looking at.

  • Cannot play this video when converting format to .mp4

    22 décembre 2015, par user3653474

    I am converting video to .mp4 format, but when i convert video using ffmpeg using the following command :

    exec('D:\wamp\bin\ffmpeg.exe -y -i D:/wamp/www/upload_google_drive/output.flv -c:v libx264 -crf 19 -preset slow -c:a aac -strict experimental -b:a 192k -ac 2 D:/wamp/www/upload_google_drive/w3.mp4 2>&1',$output);

    in some of the devices it does not run. The message which appears is

    Cannot play this video.

    Please help to sort out my issue.

    Output :

        Array ( [0] => ffmpeg version N-77137-gff6dd58 Copyright (c) 2000-2015 the FFmpeg developers [1] => built with gcc 5.2.0 (GCC)
       [2] => configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
       [3] => libavutil 55. 10.100 / 55. 10.100
       [4] => libavcodec 57. 17.100 / 57. 17.100
       [5] => libavformat 57. 19.100 / 57. 19.100
       [6] => libavdevice 57. 0.100 / 57. 0.100
       [7] => libavfilter 6. 20.100 / 6. 20.100
       [8] => libswscale 4. 0.100 / 4. 0.100
       [9] => libswresample 2. 0.101 / 2. 0.101
       [10] => libpostproc 54. 0.100 / 54. 0.100
       [11] => Input #0, flv, from 'D:/wamp/www/upload_google_drive/output.flv':
       [12] => Metadata:
       [13] => major_brand : mp42
       [14] => minor_version : 1
       [15] => compatible_brands: mp42avc1
       [16] => encoder : Lavf57.19.100
       [17] => Duration: 00:01:00.14, start: 0.000000, bitrate: 307 kb/s
       [18] => Stream #0:0: Video: flv1, yuv420p, 480x320, 200 kb/s, 24 fps, 24 tbr, 1k tbn, 1k tbc
       [19] => Stream #0:1: Audio: aac (LC), 44100 Hz, mono, fltp, 62 kb/s
       [20] => [libx264 @ 0000000001c31860] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2

    [21] => [libx264 @ 0000000001c31860] profile Constrained Baseline, level 3.0 [22] => [libx264 @ 0000000001c31860] 264 - core 148 r2638 7599210 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=0 ref=5 deblock=1:0:0 analyse=0x1:0x111 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=crf mbtree=1 crf=19.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    [23] => Output #0, mp4, to 'D:/wamp/www/upload_google_drive/w5.mp4':
    [24] => Metadata:
    [25] => major_brand : mp42
    [26] => minor_version : 1
    [27] => compatible_brands: mp42avc1
    [28] => encoder : Lavf57.19.100
    [29] => Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 480x320, q=-1--1, 24 fps, 12288 tbn, 24 tbc
    [30] => Metadata:
    [31] => encoder : Lavc57.17.100 libx264
    [32] => Stream #0:1: Audio: aac ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 192 kb/s
    [33] => Metadata:
    [34] => encoder : Lavc57.17.100 aac
    [35] => Stream mapping:
    [36] => Stream #0:0 -> #0:0 (flv1 (flv) -> h264 (libx264))
    [37] => Stream #0:1 -> #0:1 (aac (native) -> aac (native))
    [38] => Press [q] to stop, [?] for help
    [39] => frame= 55 fps=0.0 q=23.0 size= 27kB time=00:00:02.22 bitrate= 98.2kbits/s frame= 96 fps= 93 q=24.0 size= 137kB time=00:00:03.92 bitrate= 285.4kbits/s frame= 161 fps=105 q=24.0 size= 317kB time=00:00:06.64 bitrate= 391.6kbits/s frame= 220 fps=108 q=24.0 size= 541kB time=00:00:09.07 bitrate= 487.8kbits/s frame= 274 fps=108 q=24.0 size= 773kB time=00:00:11.35 bitrate= 557.8kbits/s frame= 326 fps=107 q=24.0 size= 1109kB time=00:00:13.53 bitrate= 671.4kbits/s Past duration 0.607994 too large
    [40] => Last message repeated 1 times
    [41] => Past duration 0.615990 too large
    [42] => Past duration 0.607994 too large
    [43] => frame= 382 fps=108 q=24.0 size= 1439kB time=00:00:15.81 bitrate= 745.6kbits/s Past duration 0.615990 too large
    [44] => Past duration 0.607994 too large
    [45] => Past duration 0.623985 too large
    [46] => Past duration 0.615990 too large
    [47] => Past duration 0.607994 too large
    [48] => Past duration 0.623985 too large
    [49] => Past duration 0.615990 too large
    [50] => Past duration 0.631996 too large
    [51] => Past duration 0.623985 too large
    [52] => Past duration 0.615990 too large
    [53] => Past duration 0.631996 too large
    [54] => Past duration 0.623985 too large
    [55] => Past duration 0.639992 too large
    [56] => Past duration 0.631996 too large
    [57] => Past duration 0.623985 too large
    [58] => Past duration 0.639992 too large
    [59] => Past duration 0.631996 too large
    [60] => Past duration 0.647987 too large
    [61] => Past duration 0.639992 too large
    [62] => Past duration 0.631996 too large
    [63] => Past duration 0.647987 too large
    [64] => Past duration 0.639992 too large
    [65] => Past duration 0.655998 too large
    [66] => Past duration 0.647987 too large
    [67] => Past duration 0.639992 too large
    [68] => Past duration 0.655998 too large
    [69] => Past duration 0.647987 too large
    [70] => Past duration 0.663994 too large
    [71] => Past duration 0.655998 too large
    [72] => Past duration 0.647987 too large
    [73] => Past duration 0.663994 too large
    [74] => Past duration 0.655998 too large
    [75] => Past duration 0.671989 too large
    [76] => Past duration 0.663994 too large
    [77] => Past duration 0.655998 too large
    [78] => Past duration 0.671989 too large
    [79] => Past duration 0.663994 too large
    [80] => Past duration 0.679985 too large
    [81] => Past duration 0.671989 too large
    [82] => Past duration 0.663994 too large
    [83] => Past duration 0.679985 too large
    [84] => Past duration 0.671989 too large
    [85] => Past duration 0.687996 too large
    [86] => Past duration 0.679985 too large
    [87] => Past duration 0.671989 too large
    [88] => Past duration 0.687996 too large
    [89] => Past duration 0.679985 too large
    [90] => Past duration 0.695992 too large
    [91] => Past duration 0.687996 too large
    [92] => Past duration 0.679985 too large
    [93] => Past duration 0.695992 too large
    [94] => Past duration 0.687996 too large
    [95] => Past duration 0.703987 too large
    [96] => Past duration 0.695992 too large
    [97] => frame= 436 fps=108 q=24.0 size= 1732kB time=00:00:18.08 bitrate= 784.5kbits/s Past duration 0.687996 too large
    [98] => Past duration 0.703987 too large
    [99] => Past duration 0.695992 too large
    [100] => Past duration 0.711998 too large
    [101] => Past duration 0.703987 too large
    [102] => Past duration 0.695992 too large
    [103] => Past duration 0.711998 too large
    [104] => Past duration 0.703987 too large
    [105] => Past duration 0.719994 too large
    [106] => Past duration 0.711998 too large
    [107] => Past duration 0.703987 too large
    [108] => Past duration 0.719994 too large
    [109] => Past duration 0.711998 too large
    [110] => Past duration 0.727989 too large
    [111] => Past duration 0.719994 too large
    [112] => Past duration 0.711998 too large
    [113] => Past duration 0.727989 too large
    [114] => Past duration 0.719994 too large
    [115] => Past duration 0.735985 too large
    [116] => Past duration 0.727989 too large
    [117] => Past duration 0.719994 too large
    [118] => Past duration 0.735985 too large
    [119] => Past duration 0.727989 too large
    [120] => Past duration 0.743996 too large
    [121] => Past duration 0.735985 too large
    [122] => Past duration 0.727989 too large
    [123] => Past duration 0.743996 too large
    [124] => Past duration 0.735985 too large
    [125] => Past duration 0.751991 too large
    [126] => Past duration 0.743996 too large
    [127] => Past duration 0.735985 too large
    [128] => Past duration 0.751991 too large
    [129] => Past duration 0.743996 too large
    [130] => Past duration 0.759987 too large
    [131] => Past duration 0.751991 too large
    [132] => Past duration 0.743996 too large
    [133] => Past duration 0.759987 too large
    [134] => Past duration 0.751991 too large
    [135] => Past duration 0.767998 too large
    [136] => Past duration 0.759987 too large
    [137] => Past duration 0.751991 too large
    [138] => Past duration 0.767998 too large
    [139] => Past duration 0.759987 too large
    [140] => Past duration 0.775993 too large
    [141] => Past duration 0.767998 too large
    [142] => Past duration 0.759987 too large
    [143] => Past duration 0.775993 too large
    [144] => Past duration 0.767998 too large
    [145] => Past duration 0.783989 too large
    [146] => Past duration 0.775993 too large
    [147] => Past duration 0.767998 too large
    [148] => Past duration 0.783989 too large
    [149] => Past duration 0.775993 too large
    [150] => Past duration 0.792000 too large
    [151] => Past duration 0.783989 too large
    [152] => Past duration 0.775993 too large
    [153] => Past duration 0.792000 too large
    [154] => Past duration 0.783989 too large
    [155] => Past duration 0.799995 too large
    [156] => Past duration 0.792000 too large
    [157] => Past duration 0.783989 too large
    [158] => Past duration 0.799995 too large
    [159] => Past duration 0.792000 too large
    [160] => Past duration 0.807991 too large
    [161] => Past duration 0.799995 too large
    [162] => Past duration 0.792000 too large
    [163] => Past duration 0.807991 too large
    [164] => Past duration 0.799995 too large
    [165] => Past duration 0.815987 too large
    [166] => Past duration 0.807991 too large
    [167] => Past duration 0.799995 too large
    [168] => Past duration 0.815987 too large
    [169] => frame= 508 fps=112 q=24.0 size= 1953kB time=00:00:21.10 bitrate= 758.1kbits/s Past duration 0.807991 too large
    [170] => Past duration 0.823997 too large
    [171] => Past duration 0.815987 too large
    [172] => Past duration 0.807991 too large
    [173] => Past duration 0.823997 too large
    [174] => Past duration 0.815987 too large
    [175] => Past duration 0.831993 too large
    [176] => Past duration 0.823997 too large
    [177] => Past duration 0.815987 too large
    [178] => Past duration 0.831993 too large
    [179] => Past duration 0.823997 too large
    [180] => Past duration 0.839989 too large
    [181] => Past duration 0.831993 too large
    [182] => Past duration 0.823997 too large
    [183] => Past duration 0.839989 too large
    [184] => Past duration 0.831993 too large
    [185] => Past duration 0.848000 too large
    [186] => Past duration 0.839989 too large
    [187] => Past duration 0.831993 too large
    [188] => Past duration 0.848000 too large
    [189] => Past duration 0.839989 too large
    [190] => Past duration 0.855995 too large
    [191] => Past duration 0.848000 too large
    [192] => Past duration 0.839989 too large
    [193] => Past duration 0.855995 too large
    [194] => Past duration 0.848000 too large
    [195] => Past duration 0.863991 too large
    [196] => Past duration 0.855995 too large
    [197] => Past duration 0.848000 too large
    [198] => Past duration 0.863991 too large
    [199] => Past duration 0.855995 too large
    [200] => Past duration 0.871986 too large
    [201] => Past duration 0.863991 too large
    [202] => Past duration 0.855995 too large
    [203] => Past duration 0.871986 too large
    [204] => Past duration 0.863991 too large
    [205] => Past duration 0.879997 too large
    [206] => Past duration 0.871986 too large
    [207] => Past duration 0.863991 too large
    [208] => Past duration 0.879997 too large
    [209] => Past duration 0.871986 too large
    [210] => Past duration 0.887993 too large
    [211] => Past duration 0.879997 too large
    [212] => Past duration 0.871986 too large
    [213] => Past duration 0.887993 too large
    [214] => Past duration 0.879997 too large
    [215] => Past duration 0.895988 too large
    [216] => Past duration 0.887993 too large
    [217] => Past duration 0.879997 too large
    [218] => Past duration 0.895988 too large
    [219] => Past duration 0.887993 too large
    [220] => Past duration 0.903999 too large
    [221] => Past duration 0.895988 too large
    [222] => Past duration 0.887993 too large
    [223] => Past duration 0.903999 too large
    [224] => Past duration 0.895988 too large
    [225] => Past duration 0.911995 too large
    [226] => Past duration 0.903999 too large
    [227] => Past duration 0.895988 too large
    [228] => Past duration 0.911995 too large
    [229] => Past duration 0.903999 too large
    [230] => Past duration 0.919991 too large
    [231] => Past duration 0.911995 too large
    [232] => frame= 571 fps=113 q=24.0 size= 2150kB time=00:00:23.68 bitrate= 743.7kbits/s Past duration 0.903999 too large
    [233] => Past duration 0.919991 too large
    [234] => Past duration 0.911995 too large
    [235] => Past duration 0.927986 too large
    [236] => Past duration 0.919991 too large
    [237] => Past duration 0.911995 too large
    [238] => Past duration 0.927986 too large
    [239] => Past duration 0.919991 too large
    [240] => Past duration 0.935997 too large
    [241] => Past duration 0.927986 too large
    [242] => Past duration 0.919991 too large
    [243] => Past duration 0.935997 too large
    [244] => Past duration 0.927986 too large
    [245] => Past duration 0.943993 too large
    [246] => Past duration 0.935997 too large
    [247] => Past duration 0.927986 too large
    [248] => Past duration 0.943993 too large
    [249] => Past duration 0.935997 too large
    [250] => Past duration 0.951988 too large
    [251] => Past duration 0.943993 too large
    [252] => Past duration 0.935997 too large
    [253] => Past duration 0.951988 too large
    [254] => Past duration 0.943993 too large
    [255] => Past duration 0.959999 too large
    [256] => Past duration 0.951988 too large
    [257] => Past duration 0.943993 too large
    [258] => Past duration 0.959999 too large
    [259] => Past duration 0.951988 too large
    [260] => Past duration 0.967995 too large
    [261] => Past duration 0.959999 too large
    [262] => Past duration 0.951988 too large
    [263] => Past duration 0.967995 too large
    [264] => Past duration 0.959999 too large
    [265] => Past duration 0.975990 too large
    [266] => Past duration 0.967995 too large
    [267] => Past duration 0.959999 too large
    [268] => Past duration 0.975990 too large
    [269] => Past duration 0.967995 too large
    [270] => Past duration 0.983986 too large
    [271] => Past duration 0.975990 too large
    [272] => Past duration 0.967995 too large
    [273] => Past duration 0.983986 too large
    [274] => Past duration 0.975990 too large
    [275] => Past duration 0.991997 too large
    [276] => Past duration 0.983986 too large
    [277] => Past duration 0.975990 too large
    [278] => Past duration 0.991997 too large
    [279] => Past duration 0.983986 too large
    [280] => Past duration 0.999992 too large
    [281] => Past duration 0.991997 too large
    [282] => Past duration 0.983986 too large
    [283] => frame= 622 fps=112 q=24.0 size= 2328kB time=00:00:25.82 bitrate= 738.7kbits/s Past duration 0.999992 too large
    [284] => Past duration 0.991997 too large
    [285] => Past duration 0.999992 too large
    [286] => Past duration 0.991997 too large
    [287] => Past duration 0.999992 too large
    [288] => Last message repeated 1 times
    [289] => frame= 672 fps=111 q=24.0 size= 2585kB time=00:00:27.91 bitrate= 758.8kbits/s frame= 719 fps=110 q=24.0 size= 2829kB time=00:00:29.86 bitrate= 776.0kbits/s frame= 765 fps=109 q=24.0 size= 3063kB time=00:00:31.76 bitrate= 789.8kbits/s frame= 812 fps=108 q=24.0 size= 3282kB time=00:00:33.71 bitrate= 797.5kbits/s frame= 853 fps=106 q=24.0 size= 3472kB time=00:00:35.45 bitrate= 802.2kbits/s frame= 897 fps=105 q=24.0 size= 3713kB time=00:00:37.26 bitrate= 816.1kbits/s frame= 943 fps=104 q=24.0 size= 3960kB time=00:00:39.17 bitrate= 828.0kbits/s frame= 987 fps=103 q=24.0 size= 4205kB time=00:00:41.00 bitrate= 840.1kbits/s frame= 1033 fps=102 q=24.0 size= 4442kB time=00:00:42.91 bitrate= 848.1kbits/s frame= 1074 fps=101 q=24.0 size= 4627kB time=00:00:44.60 bitrate= 849.7kbits/s frame= 1123 fps=101 q=24.0 size= 4861kB time=00:00:46.67 bitrate= 853.3kbits/s frame= 1168 fps=101 q=24.0 size= 5079kB time=00:00:48.52 bitrate= 857.3kbits/s frame= 1216 fps=100 q=24.0 size= 5312kB time=00:00:50.52 bitrate= 861.3kbits/s frame= 1254 fps= 99 q=24.0 size= 5519kB time=00:00:52.10 bitrate= 867.7kbits/s frame= 1302 fps= 99 q=24.0 size= 5751kB time=00:00:54.12 bitrate= 870.5kbits/s frame= 1358 fps= 99 q=24.0 size= 6002kB time=00:00:56.47 bitrate= 870.8kbits/s dup=0 drop=1 frame= 1427 fps=101 q=24.0 size= 6243kB time=00:00:59.35 bitrate= 861.8kbits/s dup=0 drop=1 frame= 1444 fps=100 q=-1.0 Lsize= 6451kB time=00:01:00.16 bitrate= 878.3kbits/s dup=0 drop=1
    [290] => video:5008kB audio:1407kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.550038%
    [291] => [libx264 @ 0000000001c31860] frame I:10 Avg QP:13.67 size: 25967
    [292] => [libx264 @ 0000000001c31860] frame P:1434 Avg QP:18.73 size: 3395
    [293] => [libx264 @ 0000000001c31860] mb I I16..4: 36.0% 0.0% 64.0%
    [294] => [libx264 @ 0000000001c31860] mb P I16..4: 3.6% 0.0% 4.0% P16..4: 21.9% 5.5% 4.2% 0.0% 0.0% skip:60.8%
    [295] => [libx264 @ 0000000001c31860] coded y,uvDC,uvAC intra: 51.3% 62.1% 11.5% inter: 11.4% 14.4% 2.1%
    [296] => [libx264 @ 0000000001c31860] i16 v,h,dc,p: 52% 30% 16% 2%
    [297] => [libx264 @ 0000000001c31860] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 25% 17% 3% 4% 4% 3% 4% 5%
    [298] => [libx264 @ 0000000001c31860] i8c dc,h,v,p: 39% 32% 25% 4%
    [299] => [libx264 @ 0000000001c31860] ref P L0: 82.2% 8.5% 4.8% 2.2% 2.3%
    [300] => [libx264 @ 0000000001c31860] kb/s:681.85 [301] => [aac @ 0000000001c322a0] Qavg: 14325.964 )
  • Android : Pass video path to FFmpeg

    7 janvier 2016, par marian

    I have developed an app that play video from gallery. I would like to add watermark using FFmpeg command in the video selected. But I do not know how to pass the path to the FFmpeg command. I could not find proper tutorials or reference regarding this. My coding are as follows :

    MainActivity.java :

    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.os.PowerManager;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    import android.widget.VideoView;

    import com.netcompss.ffmpeg4android.CommandValidationException;
    import com.netcompss.ffmpeg4android.GeneralUtils;
    import com.netcompss.ffmpeg4android.Prefs;
    import com.netcompss.ffmpeg4android.ProgressCalculator;
    import com.netcompss.loader.LoadJNI;

    public class MainActivity extends Activity {
    public ProgressDialog progressBar;

    String workFolder = null;
    String demoVideoFolder = null;
    String demoVideoPath = null;
    String vkLogPath = null;
    LoadJNI vk;
    private final int STOP_TRANSCODING_MSG = -1;
    private final int FINISHED_TRANSCODING_MSG = 0;
    private boolean commandValidationFailedFlag = false;

    Button button;
    VideoView videoView;
    private static final int PICK_FROM_GALLERY = 1;


    private void runTranscodingUsingLoader() {
       Log.i(Prefs.TAG, "runTranscodingUsingLoader started...");

       PowerManager powerManager = (PowerManager)MainActivity.this.getSystemService(Activity.POWER_SERVICE);
       PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "VK_LOCK");
       Log.d(Prefs.TAG, "Acquire wake lock");
       wakeLock.acquire();



       String[] complexCommand = {"ffmpeg","-y" ,"-i", "/sdcard/videokit/in.mp4","-strict","experimental",
               "-vf", "movie=/sdcard/videokit/watermark.png [watermark];" +
               " [in][watermark] overlay=main_w-overlay_w-10:10 [out]","-s",
               "320x240","-r", "30", "-b", "15496k", "-vcodec", "mpeg4","-ab",
               "48000", "-ac", "2", "-ar", "22050", "/sdcard/videokit/out1.mp4"};
       ///////////////////////////////////////////////////////////////////////


       vk = new LoadJNI();
       try {
           // running complex command with validation
           vk.run(complexCommand, workFolder, getApplicationContext());

           // running without command validation
           //vk.run(complexCommand, workFolder, getApplicationContext(), false);

           // running regular command with validation
           //vk.run(GeneralUtils.utilConvertToComplex(commandStr), workFolder, getApplicationContext());

           Log.i(Prefs.TAG, "vk.run finished.");
           // copying vk.log (internal native log) to the videokit folder
           GeneralUtils.copyFileToFolder(vkLogPath, demoVideoFolder);

       } catch (CommandValidationException e) {
           Log.e(Prefs.TAG, "vk run exeption.", e);
           commandValidationFailedFlag = true;

       } catch (Throwable e) {
           Log.e(Prefs.TAG, "vk run exeption.", e);
       }
       finally {
           if (wakeLock.isHeld()) {
               wakeLock.release();
               Log.i(Prefs.TAG, "Wake lock released");
           }
           else{
               Log.i(Prefs.TAG, "Wake lock is already released, doing nothing");
           }
       }

       // finished Toast
       String rc = null;
       if (commandValidationFailedFlag) {
           rc = "Command Vaidation Failed";
       }
       else {
           rc = GeneralUtils.getReturnCodeFromLog(vkLogPath);
       }
       final String status = rc;
       MainActivity.this.runOnUiThread(new Runnable() {
           public void run() {
               Toast.makeText(MainActivity.this, status, Toast.LENGTH_LONG).show();
               if (status.equals("Transcoding Status: Failed")) {
                   Toast.makeText(MainActivity.this, "Check: " + vkLogPath + " for more information.", Toast.LENGTH_LONG).show();
               }
           }
       });
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       button = (Button) findViewById(R.id.button);

       videoView = (VideoView) findViewById(R.id.videoview);

       button.setOnClickListener(new View.OnClickListener() {

           public void onClick(View v) {
               // TODO Auto-generated method stub
               Intent intent = new Intent();

               intent.setType("video/*");
               intent.setAction(Intent.ACTION_GET_CONTENT);

               startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_GALLERY);
           }
       });

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (resultCode != RESULT_OK) return;

       if (requestCode == PICK_FROM_GALLERY) {
           Uri mVideoURI = data.getData();
           videoView.setVideoURI(mVideoURI);
           videoView.start();
           demoVideoFolder = mVideoURI.getPath();
           demoVideoPath = demoVideoFolder;
           savevideo(mVideoURI);

       }


    }
    private Handler handler = new Handler() {
       @Override
       public void handleMessage(Message msg) {
           Log.i(Prefs.TAG, "Handler got message");
           if (progressBar != null) {
               progressBar.dismiss();

               // stopping the transcoding native
               if (msg.what == STOP_TRANSCODING_MSG) {
                   Log.i(Prefs.TAG, "Got cancel message, calling fexit");
                   vk.fExit(getApplicationContext());


               }
           }
       }
    };

    public void runTranscoding() {
       progressBar = new ProgressDialog(MainActivity.this);
       progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
       progressBar.setTitle("FFmpeg4Android Direct JNI");
       progressBar.setMessage("Press the cancel button to end the operation");
       progressBar.setMax(100);
       progressBar.setProgress(0);

       progressBar.setCancelable(false);
       progressBar.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               handler.sendEmptyMessage(STOP_TRANSCODING_MSG);
           }
       });

       progressBar.show();

       new Thread() {
           public void run() {
               Log.d(Prefs.TAG,"Worker started");
               try {
                   //sleep(5000);
                   runTranscodingUsingLoader();
                   handler.sendEmptyMessage(FINISHED_TRANSCODING_MSG);

               } catch(Exception e) {
                   Log.e("threadmessage",e.getMessage());
               }
           }
       }.start();

       // Progress update thread
       new Thread() {
           ProgressCalculator pc = new ProgressCalculator(vkLogPath);
           public void run() {
               Log.d(Prefs.TAG,"Progress update started");
               int progress = -1;
               try {
                   while (true) {
                       sleep(300);
                       progress = pc.calcProgress();
                       if (progress != 0 && progress < 100) {
                           progressBar.setProgress(progress);
                       }
                       else if (progress == 100) {
                           Log.i(Prefs.TAG, "==== progress is 100, exiting Progress update thread");
                           pc.initCalcParamsForNextInter();
                           break;
                       }
                   }

               } catch(Exception e) {
                   Log.e("threadmessage",e.getMessage());
               }
           }
       }.start();
    }

    public void savevideo (Uri mVideoURI){
       demoVideoFolder = mVideoURI.getPath();
       demoVideoPath = demoVideoFolder;
       Log.i(Prefs.TAG, getString(R.string.app_name) + " version: " + GeneralUtils.getVersionName(getApplicationContext()));

       Button invoke = (Button) findViewById(R.id.button);
       invoke.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {
               Log.i(Prefs.TAG, "run clicked.");
               runTranscoding();
           }
       });

       workFolder = getApplicationContext().getFilesDir() + "/";
       Log.i(Prefs.TAG, "workFolder (license and logs location) path: " + workFolder);
       vkLogPath = workFolder + "vk.log";
       Log.i(Prefs.TAG, "vk log (native log) path: " + vkLogPath);
       GeneralUtils.copyLicenseFromAssetsToSDIfNeeded(this, workFolder);
       GeneralUtils.copyDemoVideoFromAssetsToSDIfNeeded(this, demoVideoFolder);
       int rc = GeneralUtils.isLicenseValid(getApplicationContext(), workFolder);
       Log.i(Prefs.TAG, "License check RC: " + rc);

    }
    }

    ffmpeg command :

    String[] complexCommand = {"ffmpeg","-y" ,"-i",  "/sdcard/videokit/in.mp4","-strict","experimental",
               "-vf", "movie=/sdcard/videokit/watermark.png [watermark];" +
               " [in][watermark] overlay=main_w-overlay_w-10:10 [out]","-s",
               "320x240","-r", "30", "-b", "15496k", "-vcodec", "mpeg4","-ab",
               "48000", "-ac", "2", "-ar", "22050", "/sdcard/videokit/out1.mp4"};

    Tis command is from a sample project. How do i pass the video path to this command ? I do not know how to edit the command to support my requirement. Can someone guide me through this. Any help will be really helpful. Thank you.