Opened 8 years ago

Last modified 8 years ago

#5698 new enhancement

support for Matroska's EditionFlagOrdered

Reported by: dave rice Owned by:
Priority: wish Component: avformat
Version: git-master Keywords: mkv
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

When digitizing videotapes for preservation they usually include color bars, titles, and countdown before the presentation. I'd like to digitize the entire tape to Matroska and then use Ordered Editions to manage two presentations (a default one just referencing the presentation and one referencing the whole tape). In VLC the use of Ordered Chapters works great.

In FFmpeg I would like to support the file with ordered chapters as an input so that it decodes according to the timeline of the ordered chapters. There is a one minute sample here, where the file starts with color bars, black frames, and countdown before the program. The default chapter edition should start the presentation at 36 seconds, but ffmpeg starts from the beginning of the timeline. The Ordered Chapters should create a 10 second long presentation from two in-out points.

I see that in ffmpeg discussions there is concern about using Ordered Editions with Linked Segments as a security issue, but this use is for Ordered Editions within an unLinked Segment.

How to reproduce:

ffmpeg -i https://archive.org/download/SXL01601Ffv1Test/SXL01601_ffv1_test.mkv is_this_about_10_seconds_long.mkv
ffmpeg version N-44953-g0f2654c Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.3.0 (clang-703.0.31)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-ffplay --disable-lzma --enable-vda
  libavutil      55. 28.100 / 55. 28.100
  libavcodec     57. 49.103 / 57. 49.103
  libavformat    57. 41.100 / 57. 41.100
  libavdevice    57.  0.102 / 57.  0.102
  libavfilter     6. 47.100 /  6. 47.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  1.100 /  4.  1.100
  libswresample   2.  1.100 /  2.  1.100
  libpostproc    54.  0.100 / 54.  0.100
Guessed Channel Layout for Input Stream #0.1 : stereo
Guessed Channel Layout for Input Stream #0.2 : stereo
Input #0, matroska,webm, from 'https://archive.org/download/SXL01601Ffv1Test/SXL01601_ffv1_test.mkv':
  Metadata:
    COMPATIBLE_BRANDS: qt  
    MAJOR_BRAND     : qt  
    MINOR_VERSION   : 512
    ENCODER         : Lavf57.25.100
  Duration: 00:01:00.03, start: 0.000000, bitrate: 30151 kb/s
    Chapter #0:0: start 36.302000, end 41.015000
    Metadata:
      title           : Introduction
    Chapter #0:1: start 44.382000, end 48.918000
    Metadata:
      title           : Discussion
    Stream #0:0(eng): Video: ffv1 (FFV1 / 0x31564646), yuv422p, 720x486, SAR 9:10 DAR 4:3, 29.97 fps, 29.97 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      HANDLER_NAME    : DataHandler
      ENCODER         : FFV1 version 3
      DURATION        : 00:01:00.026000000
    Stream #0:1(eng): Audio: pcm_s24le, 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      HANDLER_NAME    : DataHandler
      DURATION        : 00:01:00.014000000
    Stream #0:2(eng): Audio: pcm_s24le, 48000 Hz, 2 channels, s32 (24 bit), 2304 kb/s
    Metadata:
      HANDLER_NAME    : DataHandler
      DURATION        : 00:01:00.014000000
No pixel format specified, yuv422p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0x7fe8d4016800] using SAR=9/10
[libx264 @ 0x7fe8d4016800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7fe8d4016800] profile High 4:2:2, level 3.1, 4:2:2 8-bit
[libx264 @ 0x7fe8d4016800] 264 - core 148 r2668 fd2c324 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[matroska @ 0x7fe8d4017400] Using AVStream.codec to pass codec parameters to muxers is deprecated, use AVStream.codecpar instead.
    Last message repeated 1 times
Output #0, matroska, to 'is_this_about_10_seconds_long.mkv':
  Metadata:
    COMPATIBLE_BRANDS: qt  
    MAJOR_BRAND     : qt  
    MINOR_VERSION   : 512
    encoder         : Lavf57.41.100
    Chapter #0:0: start 36.302000, end 41.015000
    Metadata:
      title           : Introduction
    Chapter #0:1: start 44.382000, end 48.918000
    Metadata:
      title           : Discussion
    Stream #0:0(eng): Video: h264 (libx264) (H264 / 0x34363248), yuv422p, 720x486 [SAR 9:10 DAR 4:3], q=-1--1, 29.97 fps, 1k tbn, 29.97 tbc (default)
    Metadata:
      HANDLER_NAME    : DataHandler
      DURATION        : 00:01:00.026000000
      encoder         : Lavc57.49.103 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp (24 bit), 192 kb/s (default)
    Metadata:
      HANDLER_NAME    : DataHandler
      DURATION        : 00:01:00.014000000
      encoder         : Lavc57.49.103 ac3
Stream mapping:
  Stream #0:0 -> #0:0 (ffv1 (native) -> h264 (libx264))
  Stream #0:1 -> #0:1 (pcm_s24le (native) -> ac3 (native))
Press [q] to stop, [?] for help
frame= 1799 fps= 29 q=-1.0 Lsize=    5719kB time=00:01:00.02 bitrate= 780.4kbits/s speed=0.964x    
video:4286kB audio:1407kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.457560%
[libx264 @ 0x7fe8d4016800] frame I:9     Avg QP:19.26  size: 18768
[libx264 @ 0x7fe8d4016800] frame P:735   Avg QP:22.72  size:  5101
[libx264 @ 0x7fe8d4016800] frame B:1055  Avg QP:27.01  size:   445
[libx264 @ 0x7fe8d4016800] consecutive B-frames: 10.9% 27.5% 15.8% 45.8%
[libx264 @ 0x7fe8d4016800] mb I  I16..4: 39.8% 48.2% 12.1%
[libx264 @ 0x7fe8d4016800] mb P  I16..4:  2.8%  3.7%  0.2%  P16..4: 38.1%  7.9%  5.0%  0.0%  0.0%    skip:42.4%
[libx264 @ 0x7fe8d4016800] mb B  I16..4:  0.2%  0.0%  0.0%  B16..8: 11.7%  0.1%  0.0%  direct: 1.0%  skip:86.8%  L0:26.9% L1:71.3% BI: 1.8%
[libx264 @ 0x7fe8d4016800] 8x8 transform intra:52.6% inter:75.4%
[libx264 @ 0x7fe8d4016800] coded y,uvDC,uvAC intra: 27.3% 53.2% 9.0% inter: 11.2% 21.4% 1.0%
[libx264 @ 0x7fe8d4016800] i16 v,h,dc,p: 40% 45%  4% 11%
[libx264 @ 0x7fe8d4016800] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 16% 43%  3%  4%  4%  5%  3%  5%
[libx264 @ 0x7fe8d4016800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 21% 37% 11%  4%  5%  5%  7%  4%  6%
[libx264 @ 0x7fe8d4016800] i8c dc,h,v,p: 51% 25% 19%  5%
[libx264 @ 0x7fe8d4016800] Weighted P-Frames: Y:31.4% UV:20.5%
[libx264 @ 0x7fe8d4016800] ref P L0: 55.2% 24.9% 15.2%  3.8%  1.0%
[libx264 @ 0x7fe8d4016800] ref B L0: 85.7% 13.5%  0.8%
[libx264 @ 0x7fe8d4016800] ref B L1: 99.9%  0.1%
[libx264 @ 0x7fe8d4016800] kb/s:584.77

Change History (1)

comment:1 by Carl Eugen Hoyos, 8 years ago

Keywords: mkv added; matroska removed
Priority: normalwish
Type: defectenhancement
Version: unspecifiedgit-master
Note: See TracTickets for help on using tickets.