Recherche avancée

Médias (1)

Mot : - Tags -/punk

Autres articles (37)

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 mars 2010, par

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation ; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs ; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3) ; le plugin champs extras v2 nécessité par inscription3 (...)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (4561)

  • Failed encoding Carrierwave-video FFMPEG

    12 septembre 2018, par Cole Phiper

    I’m using Carrierwave-video and Carrierwave-ffmpegthumbnailer. The problem I am having, is the transcoder is now refusing to work & I can’t locate the origin of the error. I tried removing some of the custom settings, but nothing seems to work. How can I fix the transcoder to allow video uploads ?

    story_video_uploader.rb

    require 'mime/types'
    class StoryVideoUploader < CarrierWave::Uploader::Base

     # Include RMagick or MiniMagick support:
     # include CarrierWave::RMagick
     include CarrierWave::MiniMagick
     include CarrierWave::Video
     include CarrierWave::Video::Thumbnailer
     # include CarrierWave::FFMPEG

     # Choose what kind of storage to use for this uploader:
     storage :postgresql_lo
     # storage :fog

     # Override the directory where uploaded files will be stored.
     # This is a sensible default for uploaders that are meant to be mounted:

     version :thumb do
       process thumbnail: [{ format: 'png', quality: 10, size: 200, strip: false, logger: Rails.logger }]
       def full_filename(for_file)
         png_name(for_file, version_name)
       end
       process :apply_png_content_type
     end

     version :mp4 do
       process encode_video: [:mp4, resolution: '1024x1366', preserve_aspect_ratio: :width, watermark: { path: File.join(Rails.root, 'app/assets/images/', 'logo_94x70_WHITE.png'),  position: :bottom_right, pixles_from_edge: 10  }]
     end


     def png_name(for_file, version_name)
       %Q{#{version_name}_#{for_file.chomp(File.extname(for_file))}.png}
     end

     def store_dir
       "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
     end

     def extension_white_list
       [/png\Z/, /jpe?g\Z/, /gif\Z/, /mp4\Z/, /mov\Z/, /ogg\Z/, /webm\Z/, /avi\Z/, /3gp\Z/, /mkv\Z/]
     end

     def apply_png_content_type(*)
       file.instance_variable_set(:@content_type, 'image/png')
     end
    end

    Rails Console and Error output

    irb(main):020:0> >> story.story_video = File.open("/home/cole/Downloads/Video_Of_People_Walking.mp4")
    Running....ffmpegthumbnailer -i "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/thumb/Video_Of_People_Walking.mp4" -o "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/thumb/tmpfile.png" -c png -q 10 -s 200
    Success!
    I, [2018-09-11T18:17:58.675474 #2522]  INFO -- : Running transcoding...
    ["/usr/bin/ffmpeg", "-y", "-i", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4", "-vcodec", "libx264", "-acodec", "aac", "-s", "1024x576", "-r", "30", "-strict", "-2", "-map_metadata", "-1", "-vf", "\"movie=/home/cole/Desktop/TestApp/app/assets/images/logo_94x70_WHITE.png [logo]; [in][logo] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]\"", "-aspect", "1.7777777777777777", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/tmpfile.mp4"]

    E, [2018-09-11T18:18:00.233135 #2522] ERROR -- : Failed encoding...
    ["/usr/bin/ffmpeg", "-y", "-i", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4", "-vcodec", "libx264", "-acodec", "aac", "-s", "1024x576", "-r", "30", "-strict", "-2", "-map_metadata", "-1", "-vf", "\"movie=/home/cole/Desktop/TestApp/app/assets/images/logo_94x70_WHITE.png [logo]; [in][logo] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]\"", "-aspect", "1.7777777777777777", "/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/tmpfile.mp4"]

    ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
     configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
     libavutil      55. 78.100 / 55. 78.100
     libavcodec     57.107.100 / 57.107.100
     libavformat    57. 83.100 / 57. 83.100
     libavdevice    57. 10.100 / 57. 10.100
     libavfilter     6.107.100 /  6.107.100
     libavresample   3.  7.  0 /  3.  7.  0
     libswscale      4.  8.100 /  4.  8.100
     libswresample   2.  9.100 /  2.  9.100
     libpostproc    54.  7.100 / 54.  7.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: mp42mp41isomavc1
       creation_time   : 2017-03-09T02:02:54.000000Z
     Duration: 00:00:19.19, start: 0.000000, bitrate: 3454 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3451 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
       Metadata:
         creation_time   : 2017-03-09T02:02:54.000000Z
         handler_name    : L-SMASH Video Handler
         encoder         : AVC Coding
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    [AVFilterGraph @ 0x56309b654840] No such filter: '"movie'
    Error reinitializing filters!
    Failed to inject frame into filter network: Invalid argument
    Error while processing the decoded data for stream #0:0
    Conversion failed!

    Errors: encoded file is invalid.

    FFMPEG::Error: Failed encoding.Errors: encoded file is invalid. Full output: ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
     configuration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
     libavutil      55. 78.100 / 55. 78.100
     libavcodec     57.107.100 / 57.107.100
     libavformat    57. 83.100 / 57. 83.100
     libavdevice    57. 10.100 / 57. 10.100
     libavfilter     6.107.100 /  6.107.100
     libavresample   3.  7.  0 /  3.  7.  0
     libswscale      4.  8.100 /  4.  8.100
     libswresample   2.  9.100 /  2.  9.100
     libpostproc    54.  7.100 / 54.  7.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/cole/Desktop/TestApp/tmp/1536704274-2522-0003-3784/mp4/Video_Of_People_Walking.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: mp42mp41isomavc1
       creation_time   : 2017-03-09T02:02:54.000000Z
     Duration: 00:00:19.19, start: 0.000000, bitrate: 3454 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3451 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
       Metadata:
         creation_time   : 2017-03-09T02:02:54.000000Z
         handler_name    : L-SMASH Video Handler
         encoder         : AVC Coding
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    [AVFilterGraph @ 0x56309b654840] No such filter: '"movie'
    Error reinitializing filters!
    Failed to inject frame into filter network: Invalid argument
    Error while processing the decoded data for stream #0:0
    Conversion failed!

       from (irb):20
    irb(main):021:0>
  • ffmpeg : Convertion to mkv with compatibility with Samsung BluRay

    25 octobre 2018, par Yehor

    I have several videos (FullHD resolution) which I want to convert to mkv format and play on my Samsung BluRay Player (model BD-J5900).
    Based on User Manual (http://media.datatail.com/docs/manual/252846_en.pdf , page 6) it supports mkv playing if codecs are :

    • Video : H.264 BP/MP/HP
    • Audio : MP3

    Thus, based on https://ffmpeg.org/ffmpeg.html the command to convert it into proper format is :

    ffmpeg -i input.avi -f matroska -vcodec libx264 -acodec mp3 output.mkv

    It converts, but file is not playable on player. It say "Video format is not supported".

    After checking info here : https://trac.ffmpeg.org/wiki/Encode/H.264 - I thought it may require some compatibility and change the command to :

    ffmpeg -i input.avi -f matroska -vcodec libx264 -profile:v baseline -level 3.0 -acodec mp3 output.mkv

    But it also didn’t help - player demonstrates the same error.

    How to fix that ?
    Thanks !

    Updated :
    Also tested following options

    ffmpeg -i input.file -f matroska -vcodec libx264 -preset veryslow -x264-params bluray_compat=1 -acodec mp3 output.mkv
    ffmpeg -i input.file -f matroska -vcodec libx264 -preset veryslow -profile:v high -level 4.2 -x264-params bluray_compat=1 -acodec mp3 output.mkv
    ffmpeg -i input.file -f matroska -vcodec libx264 -preset veryslow -profile:v baseline -level 3.0 -x264-params bluray_compat=1 -acodec mp3 output.mkv
    ffmpeg -i input.file -vcodec libx264 -vf format=yuv420p -preset veryslow -acodec mp3 output.mkv

    Also not supported.

    Updated :
    Console output for command without profile flag :

    ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7.3.0 (GCC)
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
     libavutil      56. 14.100 / 56. 14.100
     libavcodec     58. 18.100 / 58. 18.100
     libavformat    58. 12.100 / 58. 12.100
     libavdevice    58.  3.100 / 58.  3.100
     libavfilter     7. 16.100 /  7. 16.100
     libswscale      5.  1.100 /  5.  1.100
     libswresample   3.  1.100 /  3.  1.100
     libpostproc    55.  1.100 / 55.  1.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0000019abc2aa4c0] sample aspect ratio already set to 1:1, ignoring 'pasp' atom (65536:65536)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\Yehor\Desktop\video_conversion\input\VID_20180620_165336103.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: isommp42
       creation_time   : 2018-06-20T22:55:12.000000Z
       com.android.version: 7.0
     Duration: 00:01:34.19, start: 0.000000, bitrate: 17178 kb/s
       Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m), 1920x1080, 17016 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 30 tbr, 90k tbn, 180k tbc (default)
       Metadata:
         rotate          : 90
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : VideoHandle
       Side data:
         displaymatrix: rotation of -90.00 degrees
       Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
       Metadata:
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : SoundHandle
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
     Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    [libx264 @ 0000019abc348e00] using SAR=1/1time=-577014:32:22.77 bitrate=  -0.0kbits/s speed=N/A
    [libx264 @ 0000019abc348e00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 0000019abc348e00] profile High, level 4.0
    [libx264 @ 0000019abc348e00] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - 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=12 lookahead_threads=2 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
    Output #0, matroska, to 'C:\Users\Yehor\Desktop\video_conversion\output\VID_20180620_165336103.mkv':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: isommp42
       com.android.version: 7.0
       encoder         : Lavf58.12.100
       Stream #0:0(eng): Video: h264 (libx264) (H264 / 0x34363248), yuvj420p(pc), 1080x1920 [SAR 1:1 DAR 9:16], q=-1--1, 30 fps, 1k tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc58.18.100 libx264
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : VideoHandle
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
         displaymatrix: rotation of -0.00 degrees
       Stream #0:1(eng): Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp (default)
       Metadata:
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : SoundHandle
         encoder         : Lavc58.18.100 libmp3lame
    frame= 2823 fps= 15 q=-1.0 Lsize=   80210kB time=00:01:34.10 bitrate=6982.7kbits/s speed=0.492x
    video:78692kB audio:1469kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.061441%
    [libx264 @ 0000019abc348e00] frame I:14    Avg QP:21.43  size:187644
    [libx264 @ 0000019abc348e00] frame P:728   Avg QP:23.93  size: 68336
    [libx264 @ 0000019abc348e00] frame B:2081  Avg QP:27.79  size: 13553
    [libx264 @ 0000019abc348e00] consecutive B-frames:  1.3%  0.6%  2.0% 96.1%
    [libx264 @ 0000019abc348e00] mb I  I16..4:  5.7% 71.5% 22.7%
    [libx264 @ 0000019abc348e00] mb P  I16..4:  2.0%  8.8%  0.9%  P16..4: 46.2% 20.0% 12.2%  0.0%  0.0%    skip:10.1%
    [libx264 @ 0000019abc348e00] mb B  I16..4:  0.2%  0.9%  0.1%  B16..8: 45.3%  4.9%  1.0%  direct: 2.8%  skip:44.9%  L0:45.7% L1:47.3% BI: 7.0%
    [libx264 @ 0000019abc348e00] 8x8 transform intra:75.1% inter:69.7%
    [libx264 @ 0000019abc348e00] coded y,uvDC,uvAC intra: 56.8% 70.0% 15.9% inter: 18.3% 19.2% 2.4%
    [libx264 @ 0000019abc348e00] i16 v,h,dc,p: 18% 33% 15% 34%
    [libx264 @ 0000019abc348e00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 20% 24%  5%  8%  8%  8%  5%  5%
    [libx264 @ 0000019abc348e00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 22% 19% 13%  6%  9%  9%  9%  7%  5%
    [libx264 @ 0000019abc348e00] i8c dc,h,v,p: 53% 23% 17%  7%
    [libx264 @ 0000019abc348e00] Weighted P-Frames: Y:15.7% UV:2.6%
    [libx264 @ 0000019abc348e00] ref P L0: 49.7% 11.2% 25.9% 11.3%  1.9%
    [libx264 @ 0000019abc348e00] ref B L0: 88.2%  9.2%  2.6%
    [libx264 @ 0000019abc348e00] ref B L1: 96.2%  3.8%
    [libx264 @ 0000019abc348e00] kb/s:6843.33

    Console output for command with profile flag :

    ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7.3.0 (GCC)
     configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
     libavutil      56. 14.100 / 56. 14.100
     libavcodec     58. 18.100 / 58. 18.100
     libavformat    58. 12.100 / 58. 12.100
     libavdevice    58.  3.100 / 58.  3.100
     libavfilter     7. 16.100 /  7. 16.100
     libswscale      5.  1.100 /  5.  1.100
     libswresample   3.  1.100 /  3.  1.100
     libpostproc    55.  1.100 / 55.  1.100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0000018124b5b080] sample aspect ratio already set to 1:1, ignoring 'pasp' atom (65536:65536)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'C:\Users\Yehor\Desktop\video_conversion\input\VID_20180620_165336103.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: isommp42
       creation_time   : 2018-06-20T22:55:12.000000Z
       com.android.version: 7.0
     Duration: 00:01:34.19, start: 0.000000, bitrate: 17178 kb/s
       Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, smpte170m), 1920x1080, 17016 kb/s, SAR 1:1 DAR 16:9, 29.97 fps, 30 tbr, 90k tbn, 180k tbc (default)
       Metadata:
         rotate          : 90
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : VideoHandle
       Side data:
         displaymatrix: rotation of -90.00 degrees
       Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
       Metadata:
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : SoundHandle
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
     Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
    Press [q] to stop, [?] for help
    [libx264 @ 0000018124bf9100] using SAR=1/1time=-577014:32:22.77 bitrate=  -0.0kbits/s speed=N/A
    [libx264 @ 0000018124bf9100] frame MB size (68x120) > level limit (1620)
    [libx264 @ 0000018124bf9100] DPB size (1 frames, 8160 mbs) > level limit (0 frames, 8100 mbs)
    [libx264 @ 0000018124bf9100] MB rate (244800) > level limit (40500)
    [libx264 @ 0000018124bf9100] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
    [libx264 @ 0000018124bf9100] profile Constrained Baseline, level 3.0
    [libx264 @ 0000018124bf9100] 264 - core 155 r2901 7d0ff22 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=1:0:0 analyse=0x1:0x131 me=umh subme=10 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=24 chroma_me=1 trellis=2 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 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=25 scenecut=40 intra_refresh=0 rc_lookahead=60 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
    Output #0, matroska, to 'C:\Users\Yehor\Desktop\video_conversion\output\VID_20180620_165336103.mkv':
     Metadata:
       major_brand     : mp42
       minor_version   : 0
       compatible_brands: isommp42
       com.android.version: 7.0
       encoder         : Lavf58.12.100
       Stream #0:0(eng): Video: h264 (libx264) (H264 / 0x34363248), yuvj420p(pc), 1080x1920 [SAR 1:1 DAR 9:16], q=-1--1, 30 fps, 1k tbn, 30 tbc (default)
       Metadata:
         encoder         : Lavc58.18.100 libx264
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : VideoHandle
       Side data:
         cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
         displaymatrix: rotation of -0.00 degrees
       Stream #0:1(eng): Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp (default)
       Metadata:
         creation_time   : 2018-06-20T22:55:12.000000Z
         handler_name    : SoundHandle
         encoder         : Lavc58.18.100 libmp3lame
    frame= 2823 fps= 11 q=-1.0 Lsize=  106243kB time=00:01:34.16 bitrate=9242.5kbits/s speed=0.358x
    video:104723kB audio:1469kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.047877%
    [libx264 @ 0000018124bf9100] frame I:14    Avg QP:24.31  size:181656
    [libx264 @ 0000018124bf9100] frame P:2809  Avg QP:27.29  size: 37271
    [libx264 @ 0000018124bf9100] mb I  I16..4: 24.0%  0.0% 76.0%
    [libx264 @ 0000018124bf9100] mb P  I16..4:  2.7%  0.0%  2.0%  P16..4: 45.5% 15.6%  4.7%  0.4%  0.1%    skip:28.9%
    [libx264 @ 0000018124bf9100] coded y,uvDC,uvAC intra: 40.3% 61.3% 13.8% inter: 21.0% 20.2% 3.7%
    [libx264 @ 0000018124bf9100] i16 v,h,dc,p: 22% 30% 23% 26%
    [libx264 @ 0000018124bf9100] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 15% 12%  9% 12% 12% 12%  9%  7%
    [libx264 @ 0000018124bf9100] i8c dc,h,v,p: 52% 22% 18%  8%
    [libx264 @ 0000018124bf9100] kb/s:9107.11
  • FFmpeg avcodec_decode_video2 decode RTSP H264 HD-video packet to video picture with error

    29 mai 2018, par Nguyen Ba Thi

    I used FFmpeg library version 4.0 to have simple C++ program, in witch is a thread to receive RTSP H264 video data from IP-camera and display it in program window.

    Code of this thread is follow :

    DWORD WINAPI GrabbProcess(LPVOID lpParam)
    // Grabbing thread
    {
     DWORD i;
     int ret = 0, nPacket=0;
     FILE *pktFile;
     // Open video file
     pFormatCtx = avformat_alloc_context();
     if(avformat_open_input(&pFormatCtx, nameVideoStream, NULL, NULL)!=0)
         fGrabb=-1; // Couldn't open file
     else
     // Retrieve stream information
     if(avformat_find_stream_info(pFormatCtx, NULL)<0)
         fGrabb=-2; // Couldn't find stream information
     else
     {
         // Find the first video stream
         videoStream=-1;
         for(i=0; inb_streams; i++)
           if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
           {
             videoStream=i;
             break;
           }
         if(videoStream==-1)
             fGrabb=-3; // Didn't find a video stream
         else
         {
             // Get a pointer to the codec context for the video stream
             pCodecCtxOrig=pFormatCtx->streams[videoStream]->codec;
             // Find the decoder for the video stream
             pCodec=avcodec_find_decoder(pCodecCtxOrig->codec_id);
             if(pCodec==NULL)
                 fGrabb=-4; // Codec not found
             else
             {
                 // Copy context
                 pCodecCtx = avcodec_alloc_context3(pCodec);
                 if(avcodec_copy_context(pCodecCtx, pCodecCtxOrig) != 0)
                     fGrabb=-5; // Error copying codec context
                 else
                 {
                     // Open codec
                     if(avcodec_open2(pCodecCtx, pCodec, NULL)<0)
                         fGrabb=-6; // Could not open codec
                     else
                     // Allocate video frame for input
                     pFrame=av_frame_alloc();
                     // Determine required buffer size and allocate buffer
                     numBytes=avpicture_get_size(pCodecCtx->pix_fmt, pCodecCtx->width,
                         pCodecCtx->height);
                     buffer=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
                     // Assign appropriate parts of buffer to image planes in pFrame
                     // Note that pFrame is an AVFrame, but AVFrame is a superset
                     // of AVPicture
                     avpicture_fill((AVPicture *)pFrame, buffer, pCodecCtx->pix_fmt,
                         pCodecCtx->width, pCodecCtx->height);

                     // Allocate video frame for display
                     pFrameRGB=av_frame_alloc();
                     // Determine required buffer size and allocate buffer
                     numBytes=avpicture_get_size(AV_PIX_FMT_RGB24, pCodecCtx->width,
                         pCodecCtx->height);
                     bufferRGB=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
                     // Assign appropriate parts of buffer to image planes in pFrameRGB
                     // Note that pFrameRGB is an AVFrame, but AVFrame is a superset
                     // of AVPicture
                     avpicture_fill((AVPicture *)pFrameRGB, bufferRGB, AV_PIX_FMT_RGB24,
                         pCodecCtx->width, pCodecCtx->height);
                     // initialize SWS context for software scaling to FMT_RGB24
                     sws_ctx_to_RGB = sws_getContext(pCodecCtx->width,
                         pCodecCtx->height,
                         pCodecCtx->pix_fmt,
                         pCodecCtx->width,
                         pCodecCtx->height,
                         AV_PIX_FMT_RGB24,
                         SWS_BILINEAR,
                         NULL,
                         NULL,
                         NULL);

                     // Allocate video frame (grayscale YUV420P) for processing
                     pFrameYUV=av_frame_alloc();
                     // Determine required buffer size and allocate buffer
                     numBytes=avpicture_get_size(AV_PIX_FMT_YUV420P, pCodecCtx->width,
                         pCodecCtx->height);
                     bufferYUV=(uint8_t *)av_malloc(numBytes*sizeof(uint8_t));
                     // Assign appropriate parts of buffer to image planes in pFrameYUV
                     // Note that pFrameYUV is an AVFrame, but AVFrame is a superset
                     // of AVPicture
                     avpicture_fill((AVPicture *)pFrameYUV, bufferYUV, AV_PIX_FMT_YUV420P,
                         pCodecCtx->width, pCodecCtx->height);
                     // initialize SWS context for software scaling to FMT_YUV420P
                     sws_ctx_to_YUV = sws_getContext(pCodecCtx->width,
                         pCodecCtx->height,
                         pCodecCtx->pix_fmt,
                         pCodecCtx->width,
                         pCodecCtx->height,
                         AV_PIX_FMT_YUV420P,
                         SWS_BILINEAR,
                         NULL,
                         NULL,
                         NULL);
                   RealBsqHdr.biWidth = pCodecCtx->width;
                   RealBsqHdr.biHeight = -pCodecCtx->height;
                 }
             }
         }
     }
     while ((fGrabb==1)||(fGrabb==100))
     {
         // Grabb a frame
         if (av_read_frame(pFormatCtx, &packet) >= 0)
         {
           // Is this a packet from the video stream?
           if(packet.stream_index==videoStream)
           {
               // Decode video frame
               int len = avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet);
               nPacket++;
               // Did we get a video frame?
               if(frameFinished)
               {
                   // Convert the image from its native format to YUV
                   sws_scale(sws_ctx_to_YUV, (uint8_t const * const *)pFrame->data,
                       pFrame->linesize, 0, pCodecCtx->height,
                       pFrameYUV->data, pFrameYUV->linesize);
                   // Convert the image from its native format to RGB
                   sws_scale(sws_ctx_to_RGB, (uint8_t const * const *)pFrame->data,
                       pFrame->linesize, 0, pCodecCtx->height,
                       pFrameRGB->data, pFrameRGB->linesize);
                   HDC hdc=GetDC(hWndM);
                   SetDIBitsToDevice(hdc, 0, 0, pCodecCtx->width, pCodecCtx->height,
                       0, 0, 0, pCodecCtx->height,pFrameRGB->data[0], (LPBITMAPINFO)&RealBsqHdr, DIB_RGB_COLORS);
                   ReleaseDC(hWndM,hdc);
                   av_frame_unref(pFrame);
               }
           }
           // Free the packet that was allocated by av_read_frame
           av_free_packet(&packet);
         }
      }
      // Free the org frame
     av_frame_free(&pFrame);
     // Free the RGB frame
     av_frame_free(&pFrameRGB);
     // Free the YUV frame
     av_frame_free(&pFrameYUV);

     // Close the codec
     avcodec_close(pCodecCtx);
     avcodec_close(pCodecCtxOrig);

     // Close the video file
     avformat_close_input(&pFormatCtx);
     avformat_free_context(pFormatCtx);

     if (fGrabb==1)
         sprintf(tmpstr,"Grabbing Completed %d frames", nCntTotal);
     else if (fGrabb==2)
         sprintf(tmpstr,"User break on %d frames", nCntTotal);
     else if (fGrabb==3)
         sprintf(tmpstr,"Can't Grabb at frame %d", nCntTotal);
     else if (fGrabb==-1)
         sprintf(tmpstr,"Couldn't open file");
     else if (fGrabb==-2)
         sprintf(tmpstr,"Couldn't find stream information");
     else if (fGrabb==-3)
         sprintf(tmpstr,"Didn't find a video stream");
     else if (fGrabb==-4)
         sprintf(tmpstr,"Codec not found");
     else if (fGrabb==-5)
         sprintf(tmpstr,"Error copying codec context");
     else if (fGrabb==-6)
         sprintf(tmpstr,"Could not open codec");
     i=(UINT) fGrabb;
     fGrabb=0;
     SetWindowText(hWndM,tmpstr);
     ExitThread(i);
     return 0;
    }
    // End Grabbing thread  

    When program receive RTSP H264 video data with resolution 704x576 then decoded video pictures are OK. When receive RTSP H264 HD-video data with resolution 1280x720 it look like that first video picture is decoded OK and then video pictures are decoded but always with some error.

    Please help me to fix this problem !

    Here is problems brief :
    I have an IP camera model HI3518E_50H10L_S39 (product of China).
    Camera can provide H264 video stream both at resolution 704x576 (with RTSP URI "rtsp ://192.168.1.18:554/user=admin_password=tlJwpbo6_channel=1_stream=1.sdp ?real_stream") or 1280x720 (with RTSP URI "rtsp ://192.168.1.18:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp ?real_stream").
    Using FFplay utility I can access and display them with good picture quality.
    For testing of grabbing from this camera, I have a simple (above mentioned) program in VC-2005. In "Grabbing thread" program use FFmpeg library version 4.0 for opening camera RTSP stream, retrieve stream information, find the first video stream... and prepare some variables.
    Center of this thread is loop : Grab a frame (function av_read_frame) - Decode it if it’s video (function avcodec_decode_video2) - Convert to RGB format (function sws_scale) - Display to program window (GDI function SetDIBitsToDevice).
    When proram run with camera RTSP stream at resolution 704x576, I have good video picture. Here is a sample :
    704x576 sample
    When program run with camera RTSP stream at resolution 1280x720, first video picture is good :
    First good at res.1280x720
    but then not good :
    not good at res.1280x720
    Its seem to be my FFmpeg function call to avcodec_decode_video2 can’t fully decode certain packet for some reasons.