* [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata @ 2022-06-12 19:48 Steven Hartland 2022-06-19 20:18 ` Marton Balint 0 siblings, 1 reply; 9+ messages in thread From: Steven Hartland @ 2022-06-12 19:48 UTC (permalink / raw) To: ffmpeg-devel Remove return after copying extradata as this prevents metadata being duplicated correctly. Signed-off-by: Steven Hartland <stevenmhartland@gmail.com> --- libavformat/concatdec.c | 1 - tests/ref/fate/concat-demuxer-simple2-lavf-ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index e57da59e04..11ed2bd4c3 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -182,7 +182,6 @@ static int copy_stream_props(AVStream *st, AVStream *source_st) } memcpy(st->codecpar->extradata, source_st->codecpar->extradata, source_st->codecpar->extradata_size); - return 0; } if ((ret = avcodec_parameters_copy(st->codecpar, source_st->codecpar)) < 0) return ret; diff --git a/tests/ref/fate/concat-demuxer-simple2-lavf-ts b/tests/ref/fate/concat-demuxer-simple2-lavf-ts index 9603ca21d0..d98e8b71e1 100644 --- a/tests/ref/fate/concat-demuxer-simple2-lavf-ts +++ b/tests/ref/fate/concat-demuxer-simple2-lavf-ts @@ -211,5 +211,5 @@ video|1|171982|1.910911|168382|1.870911|3600|0.040000|17440|206988|__|MPEGTS Str video|1|175582|1.950911|171982|1.910911|3600|0.040000|15019|224848|__|MPEGTS Stream ID|224 -0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 0 +0|mp2|unknown|audio|[3][0][0][0]|0x0003|fltp|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 0 1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this is stream 1|CPB properties|0|0|0|49152|-1 -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-06-12 19:48 [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata Steven Hartland @ 2022-06-19 20:18 ` Marton Balint 2022-07-02 10:44 ` Steven Hartland 0 siblings, 1 reply; 9+ messages in thread From: Marton Balint @ 2022-06-19 20:18 UTC (permalink / raw) To: FFmpeg development discussions and patches On Sun, 12 Jun 2022, Steven Hartland wrote: > Remove return after copying extradata as this prevents metadata > being duplicated correctly. The return there originated from commit b24d6c53037aaaa20fbd59cbd25c392229450660 and seems very much intentional to not overwrite stream parameters after every packet. So what is the issue you are trying to fix? Some parameters change after the avformat_find_stream_info() returned? Regards, Marton > > Signed-off-by: Steven Hartland <stevenmhartland@gmail.com> > --- > libavformat/concatdec.c | 1 - > tests/ref/fate/concat-demuxer-simple2-lavf-ts | 2 +- > 2 files changed, 1 insertion(+), 2 deletions(-) > > diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c > index e57da59e04..11ed2bd4c3 100644 > --- a/libavformat/concatdec.c > +++ b/libavformat/concatdec.c > @@ -182,7 +182,6 @@ static int copy_stream_props(AVStream *st, AVStream > *source_st) > } > memcpy(st->codecpar->extradata, source_st->codecpar->extradata, > source_st->codecpar->extradata_size); > - return 0; > } > if ((ret = avcodec_parameters_copy(st->codecpar, source_st->codecpar)) > < 0) > return ret; > diff --git a/tests/ref/fate/concat-demuxer-simple2-lavf-ts > b/tests/ref/fate/concat-demuxer-simple2-lavf-ts > index 9603ca21d0..d98e8b71e1 100644 > --- a/tests/ref/fate/concat-demuxer-simple2-lavf-ts > +++ b/tests/ref/fate/concat-demuxer-simple2-lavf-ts > @@ -211,5 +211,5 @@ > video|1|171982|1.910911|168382|1.870911|3600|0.040000|17440|206988|__|MPEGTS > Str > > video|1|175582|1.950911|171982|1.910911|3600|0.040000|15019|224848|__|MPEGTS > Stream ID|224 > > -0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this > is stream 0 > +0|mp2|unknown|audio|[3][0][0][0]|0x0003|fltp|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this > is stream 0 > 1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this > is stream 1|CPB properties|0|0|0|49152|-1 > -- > 2.25.1 > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-06-19 20:18 ` Marton Balint @ 2022-07-02 10:44 ` Steven Hartland 2022-07-02 10:47 ` Steven Hartland 2022-07-03 13:42 ` Nicolas George 0 siblings, 2 replies; 9+ messages in thread From: Steven Hartland @ 2022-07-02 10:44 UTC (permalink / raw) To: FFmpeg development discussions and patches I'm using concat to join multiple files from a GoPro camera including the three metadata streams, with the early return it fails as the metadata stream information is missing so map fails. Example of the command line is: ffmpeg \ -y \ -safe 0 \ -f concat \ -i list.txt \ -c copy \ -c:v libx264 \ -vf scale=1920:1080 \ -crf 24 \ -copy_unknown \ -map_metadata 0 \ -movflags use_metadata_tags \ -map 0:v \ -map 0:a \ -map 0:m:handler_name:" GoPro TCD" \ -map 0:m:handler_name:" GoPro MET" \ -map 0:m:handler_name:" GoPro SOS" \ test/concat.mp4 Here is the error without the change: ffmpeg version N-107034-g77b529fbd2 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1) configuration: --prefix=/home/steveh/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/steveh/ffmpeg_build/include --extra-ldflags=-L/home/steveh/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --bindir=/home/steveh/bin --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 57. 25.100 / 57. 25.100 libavcodec 59. 32.102 / 59. 32.102 libavformat 59. 24.100 / 59. 24.100 libavdevice 59. 6.100 / 59. 6.100 libavfilter 8. 40.100 / 8. 40.100 libswscale 6. 6.100 / 6. 6.100 libswresample 4. 6.100 / 4. 6.100 libpostproc 56. 5.100 / 56. 5.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55be9e9aac00] Auto-inserting h264_mp4toannexb bitstream filter [concat @ 0x55be9e9a1140] Could not find codec parameters for stream 2 (Unknown: none): unknown codec Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options [concat @ 0x55be9e9a1140] Could not find codec parameters for stream 4 (Unknown: none): unknown codec Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options Input #0, concat, from 'list.txt': Duration: N/A, start: 0.000000, bitrate: 60098 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 59932 kb/s, 23.98 fps, 23.98 tbr, 24k tbn Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro AVC vendor_id : [0][0][0][0] encoder : GoPro AVC encoder timecode : 15:38:07:03 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro AAC vendor_id : [0][0][0][0] timecode : 15:38:07:03 Stream #0:2: Unknown: none Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 38 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro MET Stream #0:4: Unknown: none Stream map '0:m:handler_name: GoPro TCD' matches no streams. To ignore this, add a trailing '?' to the map. With this change it works as expected: ffmpeg version N-107034-g77b529fbd2 Copyright (c) 2000-2022 the FFmpeg developers built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1) configuration: --prefix=/home/steveh/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/steveh/ffmpeg_build/include --extra-ldflags=-L/home/steveh/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --bindir=/home/steveh/bin --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 57. 25.100 / 57. 25.100 libavcodec 59. 32.102 / 59. 32.102 libavformat 59. 24.100 / 59. 24.100 libavdevice 59. 6.100 / 59. 6.100 libavfilter 8. 40.100 / 8. 40.100 libswscale 6. 6.100 / 6. 6.100 libswresample 4. 6.100 / 4. 6.100 libpostproc 56. 5.100 / 56. 5.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x557f730b3c00] Auto-inserting h264_mp4toannexb bitstream filter Input #0, concat, from 'list.txt': Duration: N/A, start: 0.000000, bitrate: 60108 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 59932 kb/s, 23.98 fps, 23.98 tbr, 24k tbn Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro AVC vendor_id : [0][0][0][0] encoder : GoPro AVC encoder timecode : 15:38:07:03 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro AAC vendor_id : [0][0][0][0] timecode : 15:38:07:03 Stream #0:2(eng): Data: none (tmcd / 0x64636D74) Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro TCD timecode : 15:38:07:03 Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 38 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro MET Stream #0:4(eng): Data: none (fdsc / 0x63736466), 9 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro SOS [mp4 @ 0x557f732f6240] You requested a copy of the original timecode track so timecode metadata are now ignored Output #0, mp4, to 'test/concat.mp4': Metadata: encoder : Lavf59.24.100 Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 59932 kb/s, 23.98 fps, 23.98 tbr, 24k tbn Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro AVC vendor_id : [0][0][0][0] encoder : GoPro AVC encoder timecode : 15:38:07:03 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro AAC vendor_id : [0][0][0][0] timecode : 15:38:07:03 Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default) Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro TCD timecode : 15:38:07:03 Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 38 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro MET Stream #0:4(eng): Data: none (fdsc / 0x63736466), 9 kb/s Metadata: creation_time : 2022-05-31T15:39:02.000000Z handler_name : GoPro SOS Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Stream #0:2 -> #0:2 (copy) Stream #0:3 -> #0:3 (copy) Stream #0:4 -> #0:4 (copy) Press [q] to stop, [?] for help frame= 24 fps= 16 q=-1.0 size= 768kB time=00:00:01.00 bitrate=6275.1kbits/s speed=0.668x ... I believe the reason for the failure is that this early return prevents the metadata from being preserved. On Sun, 19 Jun 2022 at 21:18, Marton Balint <cus@passwd.hu> wrote: > > > On Sun, 12 Jun 2022, Steven Hartland wrote: > > > Remove return after copying extradata as this prevents metadata > > being duplicated correctly. > > The return there originated from commit > b24d6c53037aaaa20fbd59cbd25c392229450660 and seems very much intentional > to not overwrite stream parameters after every packet. > > So what is the issue you are trying to fix? Some parameters change after > the avformat_find_stream_info() returned? > > Regards, > Marton > > > > > Signed-off-by: Steven Hartland <stevenmhartland@gmail.com> > > --- > > libavformat/concatdec.c | 1 - > > tests/ref/fate/concat-demuxer-simple2-lavf-ts | 2 +- > > 2 files changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c > > index e57da59e04..11ed2bd4c3 100644 > > --- a/libavformat/concatdec.c > > +++ b/libavformat/concatdec.c > > @@ -182,7 +182,6 @@ static int copy_stream_props(AVStream *st, AVStream > > *source_st) > > } > > memcpy(st->codecpar->extradata, source_st->codecpar->extradata, > > source_st->codecpar->extradata_size); > > - return 0; > > } > > if ((ret = avcodec_parameters_copy(st->codecpar, > source_st->codecpar)) > > < 0) > > return ret; > > diff --git a/tests/ref/fate/concat-demuxer-simple2-lavf-ts > > b/tests/ref/fate/concat-demuxer-simple2-lavf-ts > > index 9603ca21d0..d98e8b71e1 100644 > > --- a/tests/ref/fate/concat-demuxer-simple2-lavf-ts > > +++ b/tests/ref/fate/concat-demuxer-simple2-lavf-ts > > @@ -211,5 +211,5 @@ > > > video|1|171982|1.910911|168382|1.870911|3600|0.040000|17440|206988|__|MPEGTS > > Str > > > > > video|1|175582|1.950911|171982|1.910911|3600|0.040000|15019|224848|__|MPEGTS > > Stream ID|224 > > > > > -0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this > > is stream 0 > > > +0|mp2|unknown|audio|[3][0][0][0]|0x0003|fltp|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this > > is stream 0 > > > 1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this > > is stream 1|CPB properties|0|0|0|49152|-1 > > -- > > 2.25.1 > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-07-02 10:44 ` Steven Hartland @ 2022-07-02 10:47 ` Steven Hartland 2022-07-03 13:42 ` Nicolas George 1 sibling, 0 replies; 9+ messages in thread From: Steven Hartland @ 2022-07-02 10:47 UTC (permalink / raw) To: FFmpeg development discussions and patches I should mention that this one of a few fixes needed to enable successful copying of GoPro metadata when using concat to join files, but wanted to start with from its size was the simplest one :) On Sat, 2 Jul 2022 at 11:44, Steven Hartland <stevenmhartland@gmail.com> wrote: > I'm using concat to join multiple files from a GoPro camera including the > three metadata streams, with the early return it fails as the metadata > stream information is missing so map fails. > > Example of the command line is: > ffmpeg \ > -y \ > -safe 0 \ > -f concat \ > -i list.txt \ > -c copy \ > -c:v libx264 \ > -vf scale=1920:1080 \ > -crf 24 \ > -copy_unknown \ > -map_metadata 0 \ > -movflags use_metadata_tags \ > -map 0:v \ > -map 0:a \ > -map 0:m:handler_name:" GoPro TCD" \ > -map 0:m:handler_name:" GoPro MET" \ > -map 0:m:handler_name:" GoPro SOS" \ > test/concat.mp4 > > Here is the error without the change: > > ffmpeg version N-107034-g77b529fbd2 Copyright (c) 2000-2022 the FFmpeg > developers > built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1) > configuration: --prefix=/home/steveh/ffmpeg_build > --pkg-config-flags=--static > --extra-cflags=-I/home/steveh/ffmpeg_build/include > --extra-ldflags=-L/home/steveh/ffmpeg_build/lib --extra-libs='-lpthread > -lm' --ld=g++ --bindir=/home/steveh/bin --enable-gpl --enable-gnutls > --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype > --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d > --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 > --enable-nonfree > libavutil 57. 25.100 / 57. 25.100 > libavcodec 59. 32.102 / 59. 32.102 > libavformat 59. 24.100 / 59. 24.100 > libavdevice 59. 6.100 / 59. 6.100 > libavfilter 8. 40.100 / 8. 40.100 > libswscale 6. 6.100 / 6. 6.100 > libswresample 4. 6.100 / 4. 6.100 > libpostproc 56. 5.100 / 56. 5.100 > [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55be9e9aac00] Auto-inserting h264_mp4toannexb > bitstream filter > [concat @ 0x55be9e9a1140] Could not find codec parameters for stream 2 > (Unknown: none): unknown codec > Consider increasing the value for the 'analyzeduration' (0) and > 'probesize' (5000000) options > [concat @ 0x55be9e9a1140] Could not find codec parameters for stream 4 > (Unknown: none): unknown codec > Consider increasing the value for the 'analyzeduration' (0) and > 'probesize' (5000000) options > Input #0, concat, from 'list.txt': > Duration: N/A, start: 0.000000, bitrate: 60098 kb/s > Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, > bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 59932 kb/s, 23.98 fps, > 23.98 tbr, 24k tbn > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro AVC > vendor_id : [0][0][0][0] > encoder : GoPro AVC encoder > timecode : 15:38:07:03 > Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, > fltp, 128 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro AAC > vendor_id : [0][0][0][0] > timecode : 15:38:07:03 > Stream #0:2: Unknown: none > Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 38 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro MET > Stream #0:4: Unknown: none > Stream map '0:m:handler_name: GoPro TCD' matches no streams. > To ignore this, add a trailing '?' to the map. > > With this change it works as expected: > ffmpeg version N-107034-g77b529fbd2 Copyright (c) 2000-2022 the FFmpeg > developers > built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1) > configuration: --prefix=/home/steveh/ffmpeg_build > --pkg-config-flags=--static > --extra-cflags=-I/home/steveh/ffmpeg_build/include > --extra-ldflags=-L/home/steveh/ffmpeg_build/lib --extra-libs='-lpthread > -lm' --ld=g++ --bindir=/home/steveh/bin --enable-gpl --enable-gnutls > --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype > --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d > --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 > --enable-nonfree > libavutil 57. 25.100 / 57. 25.100 > libavcodec 59. 32.102 / 59. 32.102 > libavformat 59. 24.100 / 59. 24.100 > libavdevice 59. 6.100 / 59. 6.100 > libavfilter 8. 40.100 / 8. 40.100 > libswscale 6. 6.100 / 6. 6.100 > libswresample 4. 6.100 / 4. 6.100 > libpostproc 56. 5.100 / 56. 5.100 > [mov,mp4,m4a,3gp,3g2,mj2 @ 0x557f730b3c00] Auto-inserting h264_mp4toannexb > bitstream filter > Input #0, concat, from 'list.txt': > Duration: N/A, start: 0.000000, bitrate: 60108 kb/s > Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, > bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], 59932 kb/s, 23.98 fps, > 23.98 tbr, 24k tbn > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro AVC > vendor_id : [0][0][0][0] > encoder : GoPro AVC encoder > timecode : 15:38:07:03 > Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, > fltp, 128 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro AAC > vendor_id : [0][0][0][0] > timecode : 15:38:07:03 > Stream #0:2(eng): Data: none (tmcd / 0x64636D74) > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro TCD > timecode : 15:38:07:03 > Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 38 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro MET > Stream #0:4(eng): Data: none (fdsc / 0x63736466), 9 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro SOS > [mp4 @ 0x557f732f6240] You requested a copy of the original timecode track > so timecode metadata are now ignored > Output #0, mp4, to 'test/concat.mp4': > Metadata: > encoder : Lavf59.24.100 > Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, > bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 59932 kb/s, > 23.98 fps, 23.98 tbr, 24k tbn > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro AVC > vendor_id : [0][0][0][0] > encoder : GoPro AVC encoder > timecode : 15:38:07:03 > Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, > fltp, 128 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro AAC > vendor_id : [0][0][0][0] > timecode : 15:38:07:03 > Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default) > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro TCD > timecode : 15:38:07:03 > Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 38 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro MET > Stream #0:4(eng): Data: none (fdsc / 0x63736466), 9 kb/s > Metadata: > creation_time : 2022-05-31T15:39:02.000000Z > handler_name : GoPro SOS > Stream mapping: > Stream #0:0 -> #0:0 (copy) > Stream #0:1 -> #0:1 (copy) > Stream #0:2 -> #0:2 (copy) > Stream #0:3 -> #0:3 (copy) > Stream #0:4 -> #0:4 (copy) > Press [q] to stop, [?] for help > frame= 24 fps= 16 q=-1.0 size= 768kB time=00:00:01.00 > bitrate=6275.1kbits/s speed=0.668x > ... > > I believe the reason for the failure is that this early return prevents > the metadata from being preserved. > > > On Sun, 19 Jun 2022 at 21:18, Marton Balint <cus@passwd.hu> wrote: > >> >> >> On Sun, 12 Jun 2022, Steven Hartland wrote: >> >> > Remove return after copying extradata as this prevents metadata >> > being duplicated correctly. >> >> The return there originated from commit >> b24d6c53037aaaa20fbd59cbd25c392229450660 and seems very much intentional >> to not overwrite stream parameters after every packet. >> >> So what is the issue you are trying to fix? Some parameters change after >> the avformat_find_stream_info() returned? >> >> Regards, >> Marton >> >> > >> > Signed-off-by: Steven Hartland <stevenmhartland@gmail.com> >> > --- >> > libavformat/concatdec.c | 1 - >> > tests/ref/fate/concat-demuxer-simple2-lavf-ts | 2 +- >> > 2 files changed, 1 insertion(+), 2 deletions(-) >> > >> > diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c >> > index e57da59e04..11ed2bd4c3 100644 >> > --- a/libavformat/concatdec.c >> > +++ b/libavformat/concatdec.c >> > @@ -182,7 +182,6 @@ static int copy_stream_props(AVStream *st, AVStream >> > *source_st) >> > } >> > memcpy(st->codecpar->extradata, source_st->codecpar->extradata, >> > source_st->codecpar->extradata_size); >> > - return 0; >> > } >> > if ((ret = avcodec_parameters_copy(st->codecpar, >> source_st->codecpar)) >> > < 0) >> > return ret; >> > diff --git a/tests/ref/fate/concat-demuxer-simple2-lavf-ts >> > b/tests/ref/fate/concat-demuxer-simple2-lavf-ts >> > index 9603ca21d0..d98e8b71e1 100644 >> > --- a/tests/ref/fate/concat-demuxer-simple2-lavf-ts >> > +++ b/tests/ref/fate/concat-demuxer-simple2-lavf-ts >> > @@ -211,5 +211,5 @@ >> > >> video|1|171982|1.910911|168382|1.870911|3600|0.040000|17440|206988|__|MPEGTS >> > Str >> > >> > >> video|1|175582|1.950911|171982|1.910911|3600|0.040000|15019|224848|__|MPEGTS >> > Stream ID|224 >> > >> > >> -0|mp2|unknown|audio|[3][0][0][0]|0x0003|s16p|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this >> > is stream 0 >> > >> +0|mp2|unknown|audio|[3][0][0][0]|0x0003|fltp|44100|1|mono|0|N/A|0/0|0/0|1/90000|0|0.000000|N/A|N/A|64000|N/A|N/A|N/A|N/A|89|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this >> > is stream 0 >> > >> 1|mpeg2video|4|video|[2][0][0][0]|0x0002|352|288|0|0|0|0|1|1:1|11:9|yuv420p|8|tv|unknown|unknown|unknown|left|progressive|1|N/A|25/1|25/1|1/90000|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|N/A|60|22|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|this >> > is stream 1|CPB properties|0|0|0|49152|-1 >> > -- >> > 2.25.1 >> > _______________________________________________ >> > ffmpeg-devel mailing list >> > ffmpeg-devel@ffmpeg.org >> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> > >> > To unsubscribe, visit link above, or email >> > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >> > >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >> > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-07-02 10:44 ` Steven Hartland 2022-07-02 10:47 ` Steven Hartland @ 2022-07-03 13:42 ` Nicolas George 2022-07-03 13:47 ` Andreas Rheinhardt 1 sibling, 1 reply; 9+ messages in thread From: Nicolas George @ 2022-07-03 13:42 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 1329 bytes --] Steven Hartland (12022-07-02): > I'm using concat to join multiple files from a GoPro camera including the > three metadata streams, with the early return it fails as the metadata > stream information is missing so map fails. > I believe the reason for the failure is that this early return prevents the > metadata from being preserved. You are trying to trick concat into merging files with different streams and match streams between them. It is not how concat is designed to work, it might work in your particular test case but will not work in more complex cases and will break other use cases. For example, with your change, if you concatenate a file with metadata "start_time=12:00" and another with "start_time=12:01", it will generate a file with both metadata entries instead of just the first one as would be desirable. Implementing your feature is not completely trivial: look how it is done for subtitles streams in DVD structures. The concat stream defines all the streams it expects to find in the file and specifies a condition to match them, "exact_stream_id". > On Sun, 19 Jun 2022 at 21:18, Marton Balint <cus@passwd.hu> wrote: Please remember that top-posting is forbidden on this mailing-list. If you do not know what it mean, look it up. Regards, -- Nicolas George [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-07-03 13:42 ` Nicolas George @ 2022-07-03 13:47 ` Andreas Rheinhardt 2022-07-03 13:49 ` Nicolas George 0 siblings, 1 reply; 9+ messages in thread From: Andreas Rheinhardt @ 2022-07-03 13:47 UTC (permalink / raw) To: ffmpeg-devel Nicolas George: > Steven Hartland (12022-07-02): >> I'm using concat to join multiple files from a GoPro camera including the >> three metadata streams, with the early return it fails as the metadata >> stream information is missing so map fails. > >> I believe the reason for the failure is that this early return prevents the >> metadata from being preserved. > > You are trying to trick concat into merging files with different streams > and match streams between them. It is not how concat is designed to > work, it might work in your particular test case but will not work in > more complex cases and will break other use cases. > > For example, with your change, if you concatenate a file with metadata > "start_time=12:00" and another with "start_time=12:01", it will generate > a file with both metadata entries instead of just the first one as would > be desirable. > Actually, the newer entry will overwrite the older entry; if you want multiple keys with the same value, you have to use the AV_DICT_MULTIKEY flag. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-07-03 13:47 ` Andreas Rheinhardt @ 2022-07-03 13:49 ` Nicolas George 2022-07-04 22:33 ` Steven Hartland 0 siblings, 1 reply; 9+ messages in thread From: Nicolas George @ 2022-07-03 13:49 UTC (permalink / raw) To: FFmpeg development discussions and patches [-- Attachment #1.1: Type: text/plain, Size: 566 bytes --] Andreas Rheinhardt (12022-07-03): > > For example, with your change, if you concatenate a file with metadata > > "start_time=12:00" and another with "start_time=12:01", it will generate > > a file with both metadata entries instead of just the first one as would > > be desirable. > Actually, the newer entry will overwrite the older entry; if you want > multiple keys with the same value, you have to use the AV_DICT_MULTIKEY > flag. I stand corrected, thanks. This is still not the most logical behavior, though. Regards, -- Nicolas George [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-07-03 13:49 ` Nicolas George @ 2022-07-04 22:33 ` Steven Hartland 2022-07-14 21:46 ` Steven Hartland 0 siblings, 1 reply; 9+ messages in thread From: Steven Hartland @ 2022-07-04 22:33 UTC (permalink / raw) To: FFmpeg development discussions and patches I'm not sure we're on the same page, so let me try and clarify. The files have multiple tracks, the standard audio and video and 3 metadata tracks. I'm using the command line option -map 0:m:handler_name:"<name>" to identify the tracks to copy. Given a single file this works as expected, but as soon as concat has multiple files the track metadata is lost and the handler_name match fails due to this early return. Each of the tracks I'm selected are able to be concatenated just fine, much like the a/v tracks. It's not about the file metadata, it's the track metadata which is needed for track identification which I'm looking to preserve. Does that make sense? Regards Steve On Sun, 3 Jul 2022 at 14:50, Nicolas George <george@nsup.org> wrote: > Andreas Rheinhardt (12022-07-03): > > > For example, with your change, if you concatenate a file with metadata > > > "start_time=12:00" and another with "start_time=12:01", it will > generate > > > a file with both metadata entries instead of just the first one as > would > > > be desirable. > > > Actually, the newer entry will overwrite the older entry; if you want > > multiple keys with the same value, you have to use the AV_DICT_MULTIKEY > > flag. > > I stand corrected, thanks. This is still not the most logical behavior, > though. > > Regards, > > -- > Nicolas George > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata 2022-07-04 22:33 ` Steven Hartland @ 2022-07-14 21:46 ` Steven Hartland 0 siblings, 0 replies; 9+ messages in thread From: Steven Hartland @ 2022-07-14 21:46 UTC (permalink / raw) To: FFmpeg development discussions and patches Any thoughts on my previous reply? On Mon, 4 Jul 2022 at 23:33, Steven Hartland <stevenmhartland@gmail.com> wrote: > I'm not sure we're on the same page, so let me try and clarify. > > The files have multiple tracks, the standard audio and video and 3 > metadata tracks. I'm using the command line option -map > 0:m:handler_name:"<name>" to identify the tracks to copy. Given a single > file this works as expected, but as soon as concat has multiple files the > track metadata is lost and the handler_name match fails due to this early > return. > > Each of the tracks I'm selected are able to be concatenated just fine, > much like the a/v tracks. It's not about the file metadata, it's the track > metadata which is needed for track identification which I'm looking to > preserve. > > Does that make sense? > > Regards > Steve > > On Sun, 3 Jul 2022 at 14:50, Nicolas George <george@nsup.org> wrote: > >> Andreas Rheinhardt (12022-07-03): >> > > For example, with your change, if you concatenate a file with metadata >> > > "start_time=12:00" and another with "start_time=12:01", it will >> generate >> > > a file with both metadata entries instead of just the first one as >> would >> > > be desirable. >> >> > Actually, the newer entry will overwrite the older entry; if you want >> > multiple keys with the same value, you have to use the AV_DICT_MULTIKEY >> > flag. >> >> I stand corrected, thanks. This is still not the most logical behavior, >> though. >> >> Regards, >> >> -- >> Nicolas George >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". >> > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-07-14 21:47 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-06-12 19:48 [FFmpeg-devel] [PATCH] avformat/concat: fix missing metadata Steven Hartland 2022-06-19 20:18 ` Marton Balint 2022-07-02 10:44 ` Steven Hartland 2022-07-02 10:47 ` Steven Hartland 2022-07-03 13:42 ` Nicolas George 2022-07-03 13:47 ` Andreas Rheinhardt 2022-07-03 13:49 ` Nicolas George 2022-07-04 22:33 ` Steven Hartland 2022-07-14 21:46 ` Steven Hartland
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git