Recherche avancée

Médias (1)

Mot : - Tags -/ticket

Autres articles (74)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

Sur d’autres sites (8446)

  • ffmpeg seek calculating wrong byte range ?

    12 mars 2020, par user4455

    I’m running into an issue while trying to extract thumbnails from a movie file at a specific timestamp. Generally I’ve had no issues with this, but I’ve come across a set of movie files that are getting an error about the byte range requested (416 Requested Range Not Satisfiable).

    The odd thing is that the server is correctly returning the content length in the partial content request, yet when it requests the movie file it requests a length that exceeds that.

    This is a bit over my head, so I’m not sure what could be happening here. Any insight would be great.

    The Command :

    /usr/bin/ffmpeg -y -ss 1400 -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4' -qscale:v 2 -f image2 -vframes 1 -filter:v 'scale=192:108' -loglevel debug /data/www/storage/test.jpg 2>&1

    The Error :

    [https @ 0x22e1e00] header='HTTP/1.1 416 Requested Range Not Satisfiable'
    [https @ 0x22e1e00] http_code=416
    [https @ 0x22e1e00] HTTP error 416 Requested Range Not Satisfiable

    Source File Size :

    1776706045 bytes

    Source Content Duration :

    2897.624271

    Partial Content Request :

    [https @ 0x22e1e00] header='HTTP/1.1 206 Partial Content'
    [https @ 0x22e1e00] http_code=206
    [https @ 0x22e1e00] header='x-amz-id-2: 4J1pgHExIUA0GxIxSBmGJjrRqliHbsIjXeuGzVfTlaaoVXbyZI5FQNma8fGaifcovkXfxJev5yU='
    [https @ 0x22e1e00] header='x-amz-request-id: 78B3BDBB0356EF40'
    [https @ 0x22e1e00] header='Date: Wed, 16 Dec 2015 23:51:29 GMT'
    [https @ 0x22e1e00] header='x-amz-meta-content-length: 2898'
    [https @ 0x22e1e00] header='x-amz-meta-cb-modifiedtime: Tue, 15 Dec 2015 17:59:51 GMT'
    [https @ 0x22e1e00] header='Last-Modified: Wed, 16 Dec 2015 23:44:59 GMT'
    [https @ 0x22e1e00] header='ETag: "6341a8022630667a8070a83575e542e7-27"'
    [https @ 0x22e1e00] header='Accept-Ranges: bytes'
    [https @ 0x22e1e00] header='Content-Range: bytes 0-1776706044/1776706045'
    [https @ 0x22e1e00] header='Content-Type: video/mp4'
    [https @ 0x22e1e00] header='Content-Length: 1776706045'
    [https @ 0x22e1e00] header='Server: AmazonS3'
    [https @ 0x22e1e00] header='Connection: close'

    FFmpeg Request :

    request: GET /my-bucket/mymoviefile.mp4 HTTP/1.1
    User-Agent: Lavf/56.25.101
    Accept: */*
    Range: bytes=1781732960-
    Connection: close
    Host: s3-us-west-2.amazonaws.com
    Icy-MetaData: 1

    Entire Log :

    # /usr/bin/ffmpeg -y -ss 1400 -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4' -qscale:v 2 -f image2 -vframes 1 -filter:v 'scale=192:108' -loglevel debug /data/www/storage/test.jpg 2>&1
    ffmpeg version 2.6.4 Copyright (c) 2000-2015 the FFmpeg developers
     built with gcc 4.9.2 (Debian 4.9.2-10)
     configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
     libavutil      54. 20.100 / 54. 20.100
     libavcodec     56. 26.100 / 56. 26.100
     libavformat    56. 25.101 / 56. 25.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 11.102 /  5. 11.102
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  1.100 /  1.  1.100
     libpostproc    53.  3.100 / 53.  3.100
    Splitting the commandline.
    Reading option '-y' ... matched as option 'y' (overwrite output files) with argument '1'.
    Reading option '-ss' ... matched as option 'ss' (set the start time offset) with argument '1400'.
    Reading option '-i' ... matched as input file with argument 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4'.
    Reading option '-qscale:v' ... matched as option 'qscale' (use fixed quality scale (VBR)) with argument '2'.
    Reading option '-f' ... matched as option 'f' (force format) with argument 'image2'.
    Reading option '-vframes' ... matched as option 'vframes' (set the number of video frames to output) with argument '1'.
    Reading option '-filter:v' ... matched as option 'filter' (set stream filtergraph) with argument 'scale=192:108'.
    Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument 'debug'.
    Reading option '/data/www/storage/test.jpg' ... matched as output file.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option y (overwrite output files) with argument 1.
    Applying option loglevel (set logging level) with argument debug.
    Successfully parsed a group of options.
    Parsing a group of options: input file https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4.
    Applying option ss (set the start time offset) with argument 1400.
    Successfully parsed a group of options.
    Opening an input file: https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4.
    [https @ 0x22e1e00] request: GET /my-bucket/mymoviefile.mp4 HTTP/1.1
    User-Agent: Lavf/56.25.101
    Accept: */*
    Range: bytes=0-
    Connection: close
    Host: s3-us-west-2.amazonaws.com
    Icy-MetaData: 1


    [https @ 0x22e1e00] header='HTTP/1.1 206 Partial Content'
    [https @ 0x22e1e00] http_code=206
    [https @ 0x22e1e00] header='x-amz-id-2: 4J1pgHExIUA0GxIxSBmGJjrRqliHbsIjXeuGzVfTlaaoVXbyZI5FQNma8fGaifcovkXfxJev5yU='
    [https @ 0x22e1e00] header='x-amz-request-id: 78B3BDBB0356EF40'
    [https @ 0x22e1e00] header='Date: Wed, 16 Dec 2015 23:51:29 GMT'
    [https @ 0x22e1e00] header='x-amz-meta-content-length: 2898'
    [https @ 0x22e1e00] header='x-amz-meta-cb-modifiedtime: Tue, 15 Dec 2015 17:59:51 GMT'
    [https @ 0x22e1e00] header='Last-Modified: Wed, 16 Dec 2015 23:44:59 GMT'
    [https @ 0x22e1e00] header='ETag: "6341a8022630667a8070a83575e542e7-27"'
    [https @ 0x22e1e00] header='Accept-Ranges: bytes'
    [https @ 0x22e1e00] header='Content-Range: bytes 0-1776706044/1776706045'
    [https @ 0x22e1e00] header='Content-Type: video/mp4'
    [https @ 0x22e1e00] header='Content-Length: 1776706045'
    [https @ 0x22e1e00] header='Server: AmazonS3'
    [https @ 0x22e1e00] header='Connection: close'
    [https @ 0x22e1e00] header=''
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] ISO: File Type Major Brand: mp42
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] Before avformat_find_stream_info() pos: 1647960 bytes read:1652200 seeks:0
    [h264 @ 0x22e92c0] no picture
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] All info found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] After avformat_find_stream_info() pos: 1862326 bytes read:1878504 seeks:0 frames:16
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 1
       compatible_brands: isommp41avc1
       creation_time   : 2015-11-18 02:34:41
     Duration: 00:48:17.70, start: 0.000000, bitrate: 4905 kb/s
       Stream #0:0(und), 15, 1/2997: Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, left), 1920x1080 (1920x1088) [SAR 1:1 DAR 16:9], 1001/60000, 9994 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 59.94 tbc (default)
       Metadata:
         creation_time   : 2015-11-18 02:34:41
         handler_name    : ?Apple Video Media Handler
       Stream #0:1(und), 1, 1/48000: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)
       Metadata:
         creation_time   : 2015-11-18 02:34:41
         handler_name    : ?Apple Sound Media Handler
    Successfully opened the file.
    Parsing a group of options: output file /data/www/storage/test.jpg.
    Applying option qscale:v (use fixed quality scale (VBR)) with argument 2.
    Applying option f (force format) with argument image2.
    Applying option vframes (set the number of video frames to output) with argument 1.
    Applying option filter:v (set stream filtergraph) with argument scale=192:108.
    Successfully parsed a group of options.
    Opening an output file: /data/www/storage/test.jpg.
    Successfully opened the file.
    detected 2 logical cores
    [Parsed_scale_0 @ 0x22cd4c0] Setting 'w' to value '192'
    [Parsed_scale_0 @ 0x22cd4c0] Setting 'h' to value '108'
    [Parsed_scale_0 @ 0x22cd4c0] Setting 'flags' to value '0x4'
    [Parsed_scale_0 @ 0x22cd4c0] w:192 h:108 flags:'0x4' interl:0
    [graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'video_size' to value '1920x1080'
    [graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'pix_fmt' to value '0'
    [graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'time_base' to value '1/2997'
    [graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'pixel_aspect' to value '1/1'
    [graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'sws_param' to value 'flags=2'
    [graph 0 input from stream 0:0 @ 0x22ccfe0] Setting 'frame_rate' to value '2997/100'
    [graph 0 input from stream 0:0 @ 0x22ccfe0] w:1920 h:1080 pixfmt:yuv420p tb:1/2997 fr:2997/100 sar:1/1 sws_param:flags=2
    [format @ 0x2798640] compat: called with args=[yuvj420p|yuvj422p|yuvj444p]
    [format @ 0x2798640] Setting 'pix_fmts' to value 'yuvj420p|yuvj422p|yuvj444p'
    [AVFilterGraph @ 0x22cda60] query_formats: 5 queried, 4 merged, 0 already done, 0 delayed
    [Parsed_scale_0 @ 0x22cd4c0] picking yuvj420p out of 3 ref:yuv420p alpha:0
    [swscaler @ 0x22c3c80] deprecated pixel format used, make sure you did set range correctly
    [Parsed_scale_0 @ 0x22cd4c0] w:1920 h:1080 fmt:yuv420p sar:1/1 -> w:192 h:108 fmt:yuvj420p sar:1/1 flags:0x4
    [mjpeg @ 0x2854e20] intra_quant_bias = 96 inter_quant_bias = 0
    [mjpeg @ 0x28716c0] intra_quant_bias = 96 inter_quant_bias = 0
    [mjpeg @ 0x2795320] intra_quant_bias = 96 inter_quant_bias = 0
    Output #0, image2, to '/data/www/storage/test.jpg':
     Metadata:
       major_brand     : mp42
       minor_version   : 1
       compatible_brands: isommp41avc1
       encoder         : Lavf56.25.101
       Stream #0:0(und), 0, 100/2997: Video: mjpeg, yuvj420p(pc, left), 192x108 [SAR 1:1 DAR 16:9], 100/2997, q=2-31, 200 kb/s, 29.97 fps, 29.97 tbn, 29.97 tbc (default)
       Metadata:
         creation_time   : 2015-11-18 02:34:41
         handler_name    : ?Apple Video Media Handler
         encoder         : Lavc56.26.100 mjpeg
    Stream mapping:
     Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
    Press [q] to stop, [?] for help
    [https @ 0x22e1e00] request: GET /my-bucket/mymoviefile.mp4 HTTP/1.1
    User-Agent: Lavf/56.25.101
    Accept: */*
    Range: bytes=1781732960-
    Connection: close
    Host: s3-us-west-2.amazonaws.com
    Icy-MetaData: 1


    [https @ 0x22e1e00] header='HTTP/1.1 416 Requested Range Not Satisfiable'
    [https @ 0x22e1e00] http_code=416
    [https @ 0x22e1e00] HTTP error 416 Requested Range Not Satisfiable
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x22e1740] stream 0, offset 0x6a331660: partial file
    https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4: Invalid data found when processing input
    [output stream 0:0 @ 0x22d7500] EOF on sink link output stream 0:0:default.
    No more output streams to write to, finishing.
    frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A
    video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
    Input file #0 (https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4):
     Input stream #0:0 (video): 0 packets read (0 bytes); 0 frames decoded;
     Input stream #0:1 (audio): 0 packets read (0 bytes);
     Total: 0 packets (0 bytes) demuxed
    Output file #0 (/data/www/storage/test.jpg):
     Output stream #0:0 (video): 0 frames encoded; 0 packets muxed (0 bytes);
     Total: 0 packets (0 bytes) muxed
    Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
    0 frames successfully decoded, 0 decoding errors
    [AVIOContext @ 0x27ab100] Statistics: 1878504 bytes read, 0 seeks

    FFprobe Result :

    # /usr/bin/ffprobe -show_format -show_streams -i 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4'
    ffprobe version 2.6.4 Copyright (c) 2007-2015 the FFmpeg developers
     built with gcc 4.9.2 (Debian 4.9.2-10)
     configuration: --prefix=/usr --extra-cflags='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security ' --extra-ldflags='-Wl,-z,relro' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/usr/lib/x86_64-linux-gnu --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-libpulse --disable-mips32r2 --disable-mipsdspr1 --disable-mipsdspr2 --enable-libvidstab --enable-libzvbi --enable-avresample --disable-htmlpages --disable-podpages --enable-libutvideo --enable-libfdk-aac --enable-libx265 --enable-libiec61883 --enable-vaapi --enable-libdc1394 --disable-altivec --shlibdir=/usr/lib/x86_64-linux-gnu
     libavutil      54. 20.100 / 54. 20.100
     libavcodec     56. 26.100 / 56. 26.100
     libavformat    56. 25.101 / 56. 25.101
     libavdevice    56.  4.100 / 56.  4.100
     libavfilter     5. 11.102 /  5. 11.102
     libavresample   2.  1.  0 /  2.  1.  0
     libswscale      3.  1.101 /  3.  1.101
     libswresample   1.  1.100 /  1.  1.100
     libpostproc    53.  3.100 / 53.  3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4':
     Metadata:
       major_brand     : mp42
       minor_version   : 1
       compatible_brands: isommp41avc1
       creation_time   : 2015-11-18 02:34:41
     Duration: 00:48:17.70, start: 0.000000, bitrate: 4905 kb/s
       Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv), 1920x1080 [SAR 1:1 DAR 16:9], 9994 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 59.94 tbc (default)
       Metadata:
         creation_time   : 2015-11-18 02:34:41
         handler_name    : ?Apple Video Media Handler
       Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)
       Metadata:
         creation_time   : 2015-11-18 02:34:41
         handler_name    : ?Apple Sound Media Handler
    [STREAM]
    index=0
    codec_name=h264
    codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
    profile=High
    codec_type=video
    codec_time_base=1001/60000
    codec_tag_string=avc1
    codec_tag=0x31637661
    width=1920
    height=1080
    has_b_frames=1
    sample_aspect_ratio=1:1
    display_aspect_ratio=16:9
    pix_fmt=yuv420p
    level=40
    color_range=tv
    color_space=unknown
    color_transfer=unknown
    color_primaries=unknown
    chroma_location=left
    timecode=N/A
    refs=3
    is_avc=1
    nal_length_size=4
    id=N/A
    r_frame_rate=2997/100
    avg_frame_rate=2997/100
    time_base=1/2997
    start_pts=0
    start_time=0.000000
    duration_ts=8684300
    duration=2897.664331
    bit_rate=9994429
    max_bit_rate=N/A
    bits_per_raw_sample=8
    nb_frames=86843
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSITION:default=1
    DISPOSITION:dub=0
    DISPOSITION:original=0
    DISPOSITION:comment=0
    DISPOSITION:lyrics=0
    DISPOSITION:karaoke=0
    DISPOSITION:forced=0
    DISPOSITION:hearing_impaired=0
    DISPOSITION:visual_impaired=0
    DISPOSITION:clean_effects=0
    DISPOSITION:attached_pic=0
    TAG:creation_time=2015-11-18 02:34:41
    TAG:language=und
    TAG:handler_name=Apple Video Media Handler
    [/STREAM]
    [STREAM]
    index=1
    codec_name=aac
    codec_long_name=AAC (Advanced Audio Coding)
    profile=LC
    codec_type=audio
    codec_time_base=1/48000
    codec_tag_string=mp4a
    codec_tag=0x6134706d
    sample_fmt=fltp
    sample_rate=48000
    channels=2
    channel_layout=stereo
    bits_per_sample=0
    id=N/A
    r_frame_rate=0/0
    avg_frame_rate=0/0
    time_base=1/48000
    start_pts=0
    start_time=0.000000
    duration_ts=139085965
    duration=2897.624271
    bit_rate=192002
    max_bit_rate=N/A
    bits_per_raw_sample=N/A
    nb_frames=135828
    nb_read_frames=N/A
    nb_read_packets=N/A
    DISPOSITION:default=1
    DISPOSITION:dub=0
    DISPOSITION:original=0
    DISPOSITION:comment=0
    DISPOSITION:lyrics=0
    DISPOSITION:karaoke=0
    DISPOSITION:forced=0
    DISPOSITION:hearing_impaired=0
    DISPOSITION:visual_impaired=0
    DISPOSITION:clean_effects=0
    DISPOSITION:attached_pic=0
    TAG:creation_time=2015-11-18 02:34:41
    TAG:language=und
    TAG:handler_name=Apple Sound Media Handler
    [/STREAM]
    [FORMAT]
    filename=https://s3-us-west-2.amazonaws.com/my-bucket/mymoviefile.mp4
    nb_streams=2
    nb_programs=0
    format_name=mov,mp4,m4a,3gp,3g2,mj2
    format_long_name=QuickTime / MOV
    start_time=0.000000
    duration=2897.695000
    size=1776706045
    bit_rate=4905156
    probe_score=100
    TAG:major_brand=mp42
    TAG:minor_version=1
    TAG:compatible_brands=isommp41avc1
    TAG:creation_time=2015-11-18 02:34:41
    [/FORMAT]
  • ffmpeg - Take Frame Accurate Screenshot

    20 septembre 2019, par mike

    trying to find a way to take frame accurate screenshots with ffmpeg WITHOUT re-encoding the video.

    When I use :

    ffmpeg -ss -i input -vframes 1 -q:v 2 output.jpg

    with -ss being hh:mm:ss.ms, not matter how I specify the milliseconds, it is never frame accurate with this command. it seems to be landing on the nearest keyframe (which is not accurate enough for my application).

    So, my question is :

    Without re-encoding the video (ergo specifying -ss flag AFTER the input) is there any way to pull frame accurate screenshots via ffmpeg ?

    If not, is there another solution on Windows that would allow that via command line ?

    Thanks !


    ffmpeg log report part 1 :

    ffmpeg started on 2018-01-22 at 02:52:59
    Report written to "ffmpeg-20180122-025259.log"
    Command line:
    "D:\\ffmpeg-3.4.1-win64-static\\bin\\ffmpeg.exe" -ss 1:31:25.9885 -i "V:\\Test\\BDMV\\STREAM\\00000.m2ts" -vframes 1 -q:v 2 -report output.jpg
    ffmpeg version N-89674-g57d0c24132 Copyright (c) 2000-2018 the FFmpeg developers
     built with gcc 7.2.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-amf --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --enable-dxva2 --enable-avisynth --enable-libmfx
     libavutil      56.  7.100 / 56.  7.100
     libavcodec     58.  9.100 / 58.  9.100
     libavformat    58.  3.100 / 58.  3.100
     libavdevice    58.  0.100 / 58.  0.100
     libavfilter     7.  8.100 /  7.  8.100
     libswscale      5.  0.101 /  5.  0.101
     libswresample   3.  0.101 /  3.  0.101
     libpostproc    55.  0.100 / 55.  0.100
    Splitting the commandline.
    Reading option '-ss' ... matched as option 'ss' (set the start time offset) with argument '1:31:25.9885'.
    Reading option '-i' ... matched as input url with argument 'V:\Test\BDMV\STREAM\00000.m2ts'.
    Reading option '-vframes' ... matched as option 'vframes' (set the number of video frames to output) with argument '1'.
    Reading option '-q:v' ... matched as option 'q' (use fixed quality scale (VBR)) with argument '2'.
    Reading option '-report' ... matched as option 'report' (generate a report) with argument '1'.
    Reading option 'output.jpg' ... matched as output url.
    Finished splitting the commandline.
    Parsing a group of options: global .
    Applying option report (generate a report) with argument 1.
    Successfully parsed a group of options.
    Parsing a group of options: input url V:\Test\BDMV\STREAM\00000.m2ts.
    Applying option ss (set the start time offset) with argument 1:31:25.9885.
    Successfully parsed a group of options.
    Opening an input file: V:\Test\BDMV\STREAM\00000.m2ts.
    [NULL @ 000001e53135a680] Opening 'V:\Test\BDMV\STREAM\00000.m2ts' for reading
    [file @ 000001e53135b740] Setting default whitelist 'file,crypto'
    [mpegts @ 000001e53135a680] Format mpegts probed with size=2048 and score=50
    [mpegts @ 000001e53135a680] stream=0 stream_type=1b pid=1011 prog_reg_desc=HDMV
    [mpegts @ 000001e53135a680] stream=1 stream_type=86 pid=1100 prog_reg_desc=HDMV
    [mpegts @ 000001e53135a680] stream=2 stream_type=90 pid=1200 prog_reg_desc=HDMV
    [mpegts @ 000001e53135a680] Before avformat_find_stream_info() pos: 0 bytes read:32768 seeks:0 nb_streams:3
    [mpegts @ 000001e53135a680] parser not found for codec hdmv_pgs_subtitle, packets or times may be invalid.
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 9, nal_ref_idc: 0
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 7, nal_ref_idc: 3
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 8, nal_ref_idc: 3
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 6, nal_ref_idc: 0
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 6, nal_ref_idc: 0
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 5, nal_ref_idc: 3
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 5, nal_ref_idc: 3
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 5, nal_ref_idc: 3
    [AVBSFContext @ 000001e5313b4380] nal_unit_type: 5, nal_ref_idc: 3
    [h264 @ 000001e53135c940] nal_unit_type: 9, nal_ref_idc: 0
    [h264 @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [h264 @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [h264 @ 000001e53135c940] nal_unit_type: 6, nal_ref_idc: 0
    [h264 @ 000001e53135c940] nal_unit_type: 6, nal_ref_idc: 0
    [h264 @ 000001e53135c940] nal_unit_type: 5, nal_ref_idc: 3
    [h264 @ 000001e53135c940] nal_unit_type: 5, nal_ref_idc: 3
    [h264 @ 000001e53135c940] nal_unit_type: 5, nal_ref_idc: 3
    [h264 @ 000001e53135c940] nal_unit_type: 5, nal_ref_idc: 3
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] Format yuv420p chosen by get_format().
    [h264 @ 000001e53135c940] Reinit context to 1920x1088, pix_fmt: yuv420p
    [h264 @ 000001e53135c940] no picture
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [h264 @ 000001e53135c940] ct_type:0 pic_struct:0
    [mpegts @ 000001e53135a680] max_analyze_duration 7000000 reached at 7008000 microseconds st:1
    [mpegts @ 000001e53135a680] rfps: 23.916667 0.014415
    [mpegts @ 000001e53135a680] rfps: 23.916667 0.014415
    [mpegts @ 000001e53135a680] rfps: 24.000000 0.002352
    [mpegts @ 000001e53135a680] rfps: 24.000000 0.007275
    [mpegts @ 000001e53135a680] rfps: 48.000000 0.009407
    [mpegts @ 000001e53135a680] rfps: 48.000000 0.013337
    [mpegts @ 000001e53135a680] rfps: 23.976024 0.000000
    [mpegts @ 000001e53135a680] rfps: 23.976024 0.000000
    [mpegts @ 000001e53135a680] rfps: 47.952048 0.000000
    [mpegts @ 000001e53135a680] rfps: 47.952048 0.000000
    [mpegts @ 000001e53135a680] start time for stream 2 is not set in estimate_timings_from_pts
    [mpegts @ 000001e53135a680] Could not find codec parameters for stream 2 (Subtitle: hdmv_pgs_subtitle (pgssub) ([144][0][0][0] / 0x0090)): unspecified size
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    [mpegts @ 000001e53135a680] After avformat_find_stream_info() pos: 0 bytes read:2494608 seeks:2 frames:828
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] nal_unit_type: 7, nal_ref_idc: 3
    [NULL @ 000001e53135c940] nal_unit_type: 8, nal_ref_idc: 3
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    [NULL @ 000001e53135c940] ct_type:0 pic_struct:0
    Input #0, mpegts, from 'V:\Test\BDMV\STREAM\00000.m2ts':
     Duration: 01:39:08.15, start: 600.000000, bitrate: 25263 kb/s
     Program 1
       Stream #0:0[0x1011], 169, 1/90000: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
       Stream #0:1[0x1100], 659, 1/90000: Audio: dts (DTS-HD MA) ([134][0][0][0] / 0x0086), 48000 Hz, stereo, s16p
       Stream #0:2[0x1200], 0, 1/90000: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
    Successfully opened the file.
  • Why does ffmpeg report different durations ?

    18 mai 2012, par kenitech

    Source videos : http://www.artworknotavailable.com/tmp/ffmpegtest

    Quicktime Pro 7.7.1 Inspector (Win 7) reports the following for the file 2398.mov

    4.19MB
    H.264
    Movie FPS : 23.98
    Data Rate : 2.35 mbits/Sec
    Duration 14:97

    ffmpeg reports the following (see full ffmpeg version info at bottom of post)

    ffmpeg -i 2398.mov

    Seems stream 1 codec frame rate differs from container frame rate : 47952.00 (47952/1) -> >23.98 (2997/125)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2398.mov' :
    Metadata :
    major_brand : qt

    minor_version : 537199360
    compatible_brands : qt
    Duration : 00:00:15.97, start : 0.-963005, bitrate : 2210 kb/s
    Stream #0.0(eng) : Audio : aac, 48000 Hz, stereo, s16, 152 kb/s
    Stream #0.1(eng) : Video : h264, yuv420p, 848x480, 2060 kb/s, 23.98 fps, 23.98 tbr, 23976 tbn, 47952 tbc

    One second longer than what Quicktime reports.

    As an experiment I exported this file from Quicktime Pro using the following settings :

    Frame Rate : Current
    Key Frames : Every 24 frames
    Frame Reordering On
    Quality : High
    Encoding Best
    Data Rate : Automatic
    Optimized for Download
    Output file : qtime-export-2398.mov

    Quicktime Inspector reports :

    5.62 MB
    H.264
    Movie FPS : 23.98
    Data Rate : 3.15 mbits/Sec
    Duration 14:97

    ffmpeg now reports :

    ffmpeg -i qtime-export-2398.mov

    Seems stream 1 codec frame rate differs from container frame rate : 1200.00 (1200/1) -> 23.98 (24000/1001)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'qtime-export-2398.mov' :
    Metadata :
    major_brand : qt
    minor_version : 537199360
    compatible_brands : qt
    Duration : 00:00:14.96, start : 0.000000, bitrate : 3153 kb/s
    Stream #0.0(eng) : Audio : pcm_s16le, 44100 Hz, 2 channels, s16, 1411 kb/s
    Stream #0.1(eng) : Video : h264, yuv420p, 678x384, 1738 kb/s, 23.98 fps, 23.98 tbr, 600 tbn, 1200 tbc

    ffmpeg's report on duration went from 15.97 to 14.96 (I can live with .1)

    Is this duration calculated from the bitrate ?

    I need to accurately report the duration of uploaded videos as well as convert them to FLV. Can somebody tell me what is going on here and how I might get around this ?

    ffmpeg info below. I've tried this on 2 completely different installs/versions of ffmpeg. Same result.

    FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers
    built on Jan 29 2012 23:55:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-51)
    configuration : —prefix=/usr —libdir=/usr/lib64 —shlibdir=/usr/lib64 —mandir=/usr/share/man —incdir=/usr/include —disable-avisynth —extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' —enable-avfilter —enable-avfilter-lavf —enable-libdirac —enable-libfaac —enable-libfaad —enable-libfaadbin —enable-libgsm —enable-libmp3lame —enable-libopencore-amrnb —enable-libopencore-amrwb —enable-libx264 —enable-gpl —enable-nonfree —enable-postproc —enable-pthreads —enable-shared —enable-swscale —enable-vdpau —enable-version3 —enable-x11grab
    libavutil 50.15. 1 / 50.15. 1
    libavcodec 52.72. 2 / 52.72. 2
    libavformat 52.64. 2 / 52.64. 2
    libavdevice 52. 2. 0 / 52. 2. 0
    libavfilter 1.19. 0 / 1.19. 0
    libswscale 0.11. 0 / 0.11. 0
    libpostproc 51. 2. 0 / 51. 2. 0
    FFmpeg 0.6.5
    libavutil 50.15. 1 / 50.15. 1
    libavcodec 52.72. 2 / 52.72. 2
    libavformat 52.64. 2 / 52.64. 2
    libavdevice 52. 2. 0 / 52. 2. 0
    libavfilter 1.19. 0 / 1.19. 0
    libswscale 0.11. 0 / 0.11. 0
    libpostproc 51. 2. 0 / 51. 2. 0