Is it possible to add a 'keyw' atom to a MP4
Is there anyway to add a keyw¹ atom via ffmpeg I¹ve done it via Atomic Parsley in the past and would like do it via FFMPEG. It¹s the only part of my workflow I haven¹t been able to replicate (subtitles- check, all other metadata fields- check). The funny thing is, ffprobe and ffmpeg will display the keyword metadata on my older files, just not set it. I¹ve tried using metadata options, setting metadata from a text file, tried using user-defined key (which I later found out ffmpeg ignores for MP4s). Is there some way I¹m missing or will I just have to bastardize another metadata field to get it done (like lyrics)? Thanks! -Jason
On Fri, Feb 02, 2018 at 21:08:24 +0000, Jason Player wrote:
metadata fields- check). The funny thing is, ffprobe and ffmpeg will display the keyword metadata on my older files, just not set it. I¹ve tried using
You should provide the actual command line you tried, along with its complete, uncut console output.
Is there some way I¹m missing
From looking at the sources and a quick experiment, I can claim that ffmpeg successfully maps the "keywords" metadata field to the "keyw" atom:
$ ffmpeg -f lavfi -i testsrc=d=1 -metadata 'keywords=bla, foo' ~/tmp/test.mp4 [...] $ AtomicParsley ~/tmp/test.mp4 -t Atom "©too" contains: Lavf58.5.100 Atom "keyw" contains: bla, foo Is this what you tried? Is this not the expected result? (This keyw atom is a subatom of udta->ilst.) Cheers, Moritz
Hi Moritz, Thanks for trying to help me. Here’s the log scroll console output. Basically it shows this: ffprobe command showing current metadata, the ffmpeg command to add keywords, the ffprobe command showing the metadata of the output file. Console log: ========== northeast-fortynine-seven-fifty-two:iflicks jcplayer$ ffprobe copy.mp4 ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers built with Apple LLVM version 7.3.0 (clang-703.0.29) configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --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-vda libavutil 55. 17.103 / 55. 17.103 libavcodec 57. 24.102 / 57. 24.102 libavformat 57. 25.100 / 57. 25.100 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 31.100 / 6. 31.100 libavresample 3. 0. 0 / 3. 0. 0 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'copy.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : Instructor Interview: Meet the Educator artist : Shigeru Miyagawa album_artist : MIT OpenCourseWare album : MIT OCW: 21G.027 Asia in the Modern World: Images & Representations, Fall 2016 date : 2017-03-01T12:00:00Z encoder : Lavf57.25.100 comment : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. genre : MIT Faculty Interview copyright : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. description : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. synopsis : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. media_type : 9 hd_video : 0 gapless_playback: 0 Duration: 00:01:15.63, start: 0.000000, bitrate: 303 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 221 kb/s, 24 fps, 24 tbr, 90k tbn, 180k tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 76 kb/s (default) Metadata: handler_name : SoundHandler northeast-fortynine-seven-fifty-two:iflicks jcplayer$ ffmpeg -i ./copy.mp4 -metadata 'keywords=bla, foo' ./copy_keyw.mp4 ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers built with Apple LLVM version 7.3.0 (clang-703.0.29) configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --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-vda libavutil 55. 17.103 / 55. 17.103 libavcodec 57. 24.102 / 57. 24.102 libavformat 57. 25.100 / 57. 25.100 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 31.100 / 6. 31.100 libavresample 3. 0. 0 / 3. 0. 0 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './copy.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : Instructor Interview: Meet the Educator artist : Shigeru Miyagawa album_artist : MIT OpenCourseWare album : MIT OCW: 21G.027 Asia in the Modern World: Images & Representations, Fall 2016 date : 2017-03-01T12:00:00Z encoder : Lavf57.25.100 comment : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. genre : MIT Faculty Interview copyright : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. description : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. synopsis : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. media_type : 9 hd_video : 0 gapless_playback: 0 Duration: 00:01:15.63, start: 0.000000, bitrate: 303 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 221 kb/s, 24 fps, 24 tbr, 90k tbn, 180k tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 76 kb/s (default) Metadata: handler_name : SoundHandler [libx264 @ 0x7f97b480a800] using SAR=1/1 [libx264 @ 0x7f97b480a800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2 [libx264 @ 0x7f97b480a800] profile High, level 3.0 [libx264 @ 0x7f97b480a800] 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=11 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=24 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, mp4, to './copy_keyw.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : Instructor Interview: Meet the Educator artist : Shigeru Miyagawa album_artist : MIT OpenCourseWare album : MIT OCW: 21G.027 Asia in the Modern World: Images & Representations, Fall 2016 date : 2017-03-01T12:00:00Z keywords : bla, foo comment : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. genre : MIT Faculty Interview copyright : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. description : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. synopsis : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. media_type : 9 hd_video : 0 gapless_playback: 0 encoder : Lavf57.25.100 Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 24 fps, 12288 tbn, 24 tbc (default) Metadata: handler_name : VideoHandler encoder : Lavc57.24.102 libx264 Side data: unknown side data type 10 (24 bytes) Stream #0:1(eng): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : SoundHandler encoder : Lavc57.24.102 aac Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Press [q] to stop, [?] for help frame= 1813 fps=362 q=-1.0 Lsize= 3114kB time=00:01:15.62 bitrate= 337.3kbits/s speed=15.1x video:1955kB audio:1106kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.745649% [libx264 @ 0x7f97b480a800] frame I:8 Avg QP:16.29 size: 20703 [libx264 @ 0x7f97b480a800] frame P:466 Avg QP:19.85 size: 2953 [libx264 @ 0x7f97b480a800] frame B:1339 Avg QP:24.22 size: 343 [libx264 @ 0x7f97b480a800] consecutive B-frames: 0.9% 1.0% 2.3% 95.8% [libx264 @ 0x7f97b480a800] mb I I16..4: 12.3% 60.4% 27.4% [libx264 @ 0x7f97b480a800] mb P I16..4: 0.4% 1.0% 0.2% P16..4: 21.6% 10.5% 6.8% 0.0% 0.0% skip:59.5% [libx264 @ 0x7f97b480a800] mb B I16..4: 0.1% 0.1% 0.0% B16..8: 19.3% 1.4% 0.2% direct: 0.4% skip:78.5% L0:44.3% L1:50.0% BI: 5.7% [libx264 @ 0x7f97b480a800] 8x8 transform intra:57.6% inter:68.6% [libx264 @ 0x7f97b480a800] coded y,uvDC,uvAC intra: 45.8% 45.6% 22.4% inter: 4.3% 4.8% 0.4% [libx264 @ 0x7f97b480a800] i16 v,h,dc,p: 56% 28% 8% 8% [libx264 @ 0x7f97b480a800] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 24% 25% 3% 3% 4% 5% 4% 5% [libx264 @ 0x7f97b480a800] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 28% 25% 9% 4% 7% 6% 8% 6% 6% [libx264 @ 0x7f97b480a800] i8c dc,h,v,p: 64% 17% 15% 4% [libx264 @ 0x7f97b480a800] Weighted P-Frames: Y:3.6% UV:3.6% [libx264 @ 0x7f97b480a800] ref P L0: 62.7% 15.3% 15.0% 7.0% 0.0% [libx264 @ 0x7f97b480a800] ref B L0: 89.3% 8.5% 2.2% [libx264 @ 0x7f97b480a800] ref B L1: 95.8% 4.2% [libx264 @ 0x7f97b480a800] kb/s:211.95 [aac @ 0x7f97b5086200] Qavg: 7311.251 northeast-fortynine-seven-fifty-two:iflicks jcplayer$ ffprobe ./copy_keyw.mp4 ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers built with Apple LLVM version 7.3.0 (clang-703.0.29) configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --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-vda libavutil 55. 17.103 / 55. 17.103 libavcodec 57. 24.102 / 57. 24.102 libavformat 57. 25.100 / 57. 25.100 libavdevice 57. 0.101 / 57. 0.101 libavfilter 6. 31.100 / 6. 31.100 libavresample 3. 0. 0 / 3. 0. 0 libswscale 4. 0.100 / 4. 0.100 libswresample 2. 0.101 / 2. 0.101 libpostproc 54. 0.100 / 54. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './copy_keyw.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 title : Instructor Interview: Meet the Educator artist : Shigeru Miyagawa album_artist : MIT OpenCourseWare album : MIT OCW: 21G.027 Asia in the Modern World: Images & Representations, Fall 2016 date : 2017-03-01T12:00:00Z encoder : Lavf57.25.100 comment : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. genre : MIT Faculty Interview copyright : https://ocw.mit.edu; Creative Commons Attribution-NonCommercial-ShareAlike 4.0; https://ocw.mit.edu/terms; album art image is in the public domain. description : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. synopsis : This video is the introduction of Professor Shigeru Miyagawa, the instructor for the MIT course 21G.027 of Fall 2016. media_type : 9 hd_video : 0 gapless_playback: 0 Duration: 00:01:15.65, start: 0.021333, bitrate: 337 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 212 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default) Metadata: handler_name : VideoHandler Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 119 kb/s (default) Metadata: handler_name : SoundHandler northeast-fortynine-seven-fifty-two:iflicks jcplayer$ Thanks again for your help! -Jason From: ffmpeg-user <ffmpeg-user-bounces@ffmpeg.org> on behalf of Moritz Barsnick <barsnick@gmx.net> Reply-To: FFmpeg user questions <ffmpeg-user@ffmpeg.org> Date: Sunday, February 4, 2018 at 9:50 AM To: FFmpeg user discussions <ffmpeg-user@ffmpeg.org> Subject: Re: [FFmpeg-user] Is it possible to add a 'keyw' atom to a MP4
On Fri, Feb 02, 2018 at 21:08:24 +0000, Jason Player wrote:
metadata fields- check). The funny thing is, ffprobe and ffmpeg will display the keyword metadata on my older files, just not set it. I¹ve tried using
You should provide the actual command line you tried, along with its complete, uncut console output.
Is there some way I¹m missing
From looking at the sources and a quick experiment, I can claim that ffmpeg successfully maps the "keywords" metadata field to the "keyw" atom:
$ ffmpeg -f lavfi -i testsrc=d=1 -metadata 'keywords=bla, foo' ~/tmp/test.mp4 [...] $ AtomicParsley ~/tmp/test.mp4 -t Atom "?too" contains: Lavf58.5.100 Atom "keyw" contains: bla, foo
Is this what you tried? Is this not the expected result? (This keyw atom is a subatom of udta->ilst.)
Cheers, Moritz _______________________________________________ ffmpeg-user mailing list ffmpeg-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email ffmpeg-user-request@ffmpeg.org with subject "unsubscribe".
2018-02-06 20:29 GMT+01:00 Jason Player <jcplayer@mit.edu>:
ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers
Please test current FFmpeg git head and please do not top-post here. Carl Eugen
2018-02-06 20:29 GMT+01:00 Jason Player <jcplayer@mit.edu>:
ffprobe version 3.0.2 Copyright (c) 2007-2016 the FFmpeg developers
Please test current FFmpeg git head and please do not top-post here.
Carl Eugen
The old version was the problem. I¹m all set now, thanks for the help! Sorry for the top posting. -Jason
participants (3)
-
Carl Eugen Hoyos -
Jason Player -
Moritz Barsnick