[FFmpeg-trac] #8697(avformat:new): ffmpeg can't detect the language tag of mkv files after editing with mkvpropedit
FFmpeg
trac at avcodec.org
Sun May 31 21:49:39 EEST 2020
#8697: ffmpeg can't detect the language tag of mkv files after editing with
mkvpropedit
------------------------------------+------------------------------------
Reporter: random404 | Owner:
Type: defect | Status: new
Priority: normal | Component: avformat
Version: git-master | Resolution:
Keywords: mkv | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
------------------------------------+------------------------------------
Comment (by random404):
This is my original, untouched file:
Mediainfo output:
{{{
General
Unique ID :
23332720418937201122794855998739214663
(0x118DB7EF371902B27D405ABC76B87147)
Complete name : 40 Orgalorg.mkv
Format : Matroska
Format version : Version 2
File size : 83.7 MiB
Duration : 10 min 45 s
Overall bit rate : 1 088 kb/s
Writing application : HandBrake 0.10.0 2014112200
Writing library : Lavf55.12.0
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main at L4
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 10 min 45 s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Writing library : x264 core 142 r2479 dd79a61
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0
/ analyse=0x1:0x111 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 /
mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 /
deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=3 /
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=1 /
keyint=300 / keyint_min=30 / scenecut=40 / intra_refresh=0 /
rc_lookahead=10 / rc=crf / mbtree=1 / crf=21.0 / qcomp=0.60 / qpmin=0 /
qpmax=69 / qpstep=4 / vbv_maxrate=20000 / vbv_bufsize=25000 / crf_max=0.0
/ nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Default : Yes
Forced : No
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : A_AAC-2
Duration : 10 min 45 s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 44.1 kHz
Frame rate : 43.066 FPS (1024 SPF)
Compression mode : Lossy
Delay relative to video : -23 ms
Title : Stereo
Default : Yes
Forced : No
}}}
mkvinfo output:
{{{
+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ Maximum EBML ID length: 4
|+ Maximum EBML size length: 8
|+ Document type: matroska
|+ Document type version: 2
|+ Document type read version: 2
+ Segment: size 87805255
|+ Seek head (subentries will be skipped)
|+ EBML void: size 147
|+ Segment information
| + Timestamp scale: 1000000
| + Multiplexing application: Lavf55.12.0
| + Writing application: HandBrake 0.10.0 2014112200
| + Segment UID: 0x11 0x8d 0xb7 0xef 0x37 0x19 0x02 0xb2 0x7d 0x40 0x5a
0xbc 0x76 0xb8 0x71 0x47
| + Duration: 00:10:45.579000000
|+ Tracks
| + Track
| + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
| + Track UID: 1
| + Lacing flag: 0
| + Language: und
| + Codec ID: V_MPEG4/ISO/AVC
| + Track type: video
| + Default duration: 00:00:00.033366666 (29.970 frames/fields per second
for a video track)
| + Video track
| + Pixel width: 1280
| + Pixel height: 720
| + Display width: 1280
| + Display height: 720
| + Display unit: 3 (aspect ratio)
| + Codec's private data: size 43 (H.264 profile: Main @L4.0)
| + Track
| + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
| + Track UID: 2
| + Lacing flag: 0
| + Name: Stereo
| + Language: und
| + Codec ID: A_AAC
| + Track type: audio
| + Audio track
| + Channels: 2
| + Sampling frequency: 44100
| + Codec's private data: size 5
|+ Tags
| + Tag
| + Targets
| + Simple
| + Name: ENCODER
| + String: Lavf55.12.0
| + Tag
| + Targets
| + Track UID: 2
| + Simple
| + Name: LANGUAGE
| + String: und
|+ Cluster
}}}
ffmpeg output:
{{{
ffmpeg version N-52628-g79e3c4dd74-static
https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-
debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
--cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp
--enable-libgme --enable-gray --enable-libaom --enable-libfribidi
--enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt
--enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab
--enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264
--enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid
--enable-libzvbi --enable-libzimg
libavutil 56. 43.100 / 56. 43.100
libavcodec 58. 82.100 / 58. 82.100
libavformat 58. 42.102 / 58. 42.102
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 80.100 / 7. 80.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, matroska,webm, from '40 Orgalorg.mkv':
Metadata:
ENCODER : Lavf55.12.0
Duration: 00:10:45.58, start: 0.044000, bitrate: 1088 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(tv, bt709, progressive),
1280x720 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 180k tbc
(default)
Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp (default)
Metadata:
title : Stereo
LANGUAGE : und
At least one output file must be specified
}}}
Then I now run:
{{{
mkvpropedit 'file.mkv' --edit track:2 --set language=por
}}}
Now mkvinfo output:
{{{
+ EBML head
|+ EBML version: 1
|+ EBML read version: 1
|+ Maximum EBML ID length: 4
|+ Maximum EBML size length: 8
|+ Document type: matroska
|+ Document type version: 2
|+ Document type read version: 2
+ Segment: size 87805255
|+ Seek head (subentries will be skipped)
|+ EBML void: size 147
|+ Segment information
| + Timestamp scale: 1000000
| + Multiplexing application: Lavf55.12.0
| + Writing application: HandBrake 0.10.0 2014112200
| + Segment UID: 0x11 0x8d 0xb7 0xef 0x37 0x19 0x02 0xb2 0x7d 0x40 0x5a
0xbc 0x76 0xb8 0x71 0x47
| + Duration: 00:10:45.579000000
|+ Tracks
| + Track
| + Track number: 1 (track ID for mkvmerge & mkvextract: 0)
| + Track UID: 1
| + Lacing flag: 0
| + Language: und
| + Codec ID: V_MPEG4/ISO/AVC
| + Track type: video
| + Default duration: 00:00:00.033366666 (29.970 frames/fields per second
for a video track)
| + Video track
| + Pixel width: 1280
| + Pixel height: 720
| + Display width: 1280
| + Display height: 720
| + Display unit: 3 (aspect ratio)
| + Codec's private data: size 43 (H.264 profile: Main @L4.0)
| + Track
| + Track number: 2 (track ID for mkvmerge & mkvextract: 1)
| + Track UID: 2
| + Lacing flag: 0
| + Name: Stereo
| + Language: por
| + Codec ID: A_AAC
| + Track type: audio
| + Audio track
| + Channels: 2
| + Sampling frequency: 44100
| + Codec's private data: size 5
|+ Tags
| + Tag
| + Targets
| + Simple
| + Name: ENCODER
| + String: Lavf55.12.0
| + Tag
| + Targets
| + Track UID: 2
| + Simple
| + Name: LANGUAGE
| + String: und
|+ Cluster
†
}}}
ffmpeg output which doesn't see the new language tag:
{{{
ffmpeg version N-52628-g79e3c4dd74-static
https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2020 the FFmpeg
developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-
debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio
--cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp
--enable-libgme --enable-gray --enable-libaom --enable-libfribidi
--enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame
--enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt
--enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab
--enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264
--enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid
--enable-libzvbi --enable-libzimg
libavutil 56. 43.100 / 56. 43.100
libavcodec 58. 82.100 / 58. 82.100
libavformat 58. 42.102 / 58. 42.102
libavdevice 58. 9.103 / 58. 9.103
libavfilter 7. 80.100 / 7. 80.100
libswscale 5. 6.101 / 5. 6.101
libswresample 3. 6.100 / 3. 6.100
libpostproc 55. 6.100 / 55. 6.100
Input #0, matroska,webm, from '40 Orgalorg.mkv':
Metadata:
ENCODER : Lavf55.12.0
Duration: 00:10:45.58, start: 0.044000, bitrate: 1088 kb/s
Stream #0:0: Video: h264 (Main), yuv420p(tv, bt709, progressive),
1280x720 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 180k tbc
(default)
Stream #0:1(und): Audio: aac (LC), 44100 Hz, stereo, fltp (default)
Metadata:
title : Stereo
LANGUAGE : und
At least one output file must be specified
}}}
The mediainfo output of the altered file:
{{{
General
Unique ID :
23332720418937201122794855998739214663
(0x118DB7EF371902B27D405ABC76B87147)
Complete name : 40 Orgalorg.mkv
Format : Matroska
Format version : Version 2
File size : 83.7 MiB
Duration : 10 min 45 s
Overall bit rate : 1 088 kb/s
Writing application : HandBrake 0.10.0 2014112200
Writing library : Lavf55.12.0
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main at L4
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 10 min 45 s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Writing library : x264 core 142 r2479 dd79a61
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0
/ analyse=0x1:0x111 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 /
mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 /
deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=3 /
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=1 /
keyint=300 / keyint_min=30 / scenecut=40 / intra_refresh=0 /
rc_lookahead=10 / rc=crf / mbtree=1 / crf=21.0 / qcomp=0.60 / qpmin=0 /
qpmax=69 / qpstep=4 / vbv_maxrate=20000 / vbv_bufsize=25000 / crf_max=0.0
/ nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Default : Yes
Forced : No
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : A_AAC-2
Duration : 10 min 45 s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 44.1 kHz
Frame rate : 43.066 FPS (1024 SPF)
Compression mode : Lossy
Delay relative to video : -23 ms
Title : Stereo
Language : Portuguese
Default : Yes
Forced : No
}}}
I'm not sure I'm allowed to post a sample...is this enough?
Also how can I start using your patch immediately? My scripts rely on the
assumption you can trust ffmpeg and mapping by language and mkvpropedit to
make changes, if that doesn't work then it breaks everything!
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8697#comment:5>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list