[FFmpeg-user] af_silenceremove timestamp copy option doesn't seem to work
Phil Rhodes
phil_rhodes at rocketmail.com
Sat Jan 25 21:36:42 EET 2025
Define "timestamps" in this context?
I've seen wave files that can store various types of marker.
P
On Saturday 25 January 2025 at 09:37:39 GMT, Paul B Mahol <onemda at gmail.com> wrote:
wav format container does not store timestamps at all.
Filter works fine.
On Sat, Jan 25, 2025 at 4:42 AM Justin <justinrsilver at gmail.com> wrote:
> Hello!
>
> I am trying to use the *silenceremove *filter as explained in the ffmpeg
> documentation. <https://ffmpeg.org/ffmpeg-filters.html#toc-silenceremove>
> I
> wanted to keep the original timestamps from the modified audio file with
> the *timestamp=copy *option. The silence is removed as expected, but after
> running *ashowinfo*, the original timestamps seem to have been modified. In
> fact, regardless of *timestamp=copy *and *timestamp=write*, there is no
> difference in the *pts* output values. I might be misunderstanding how it
> works though, so I wanted to double check here.
>
> Here is what I did.
>
> 1. Downloaded a sample sound with multiple silences. This is the sound
> <https://freesound.org/people/frosthardr/sounds/253067/> I used. I
> named
> it *in.wav*. If you take a look at the waveform, there are 4 pulses of
> sound that last roughly 2.5 seconds, with about 1 second of silence
> between
> each one (the entire audio clip is roughly 15 seconds).
>
> 2. I used the following command to generate an output with copied
> timestamps:
>
> *Command:*
> *ffmpeg -y -i ~/files/test_ffmpeg/in.wav -filter_complex
> silenceremove=stop_periods=-1:timestamp=copy:stop_threshold=-30dB
> ~/files/test_ffmpeg/out_copy.wav*
>
> * Output:*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *ffmpeg version N-118350-ge20ee9f9ae Copyright (c) 2000-2025 the FFmpeg
> developers built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
> configuration: --prefix=/home/justin/ffmpeg_build
> --pkg-config-flags=--static
> --extra-cflags=-I/home/justin/ffmpeg_build/include
> --extra-ldflags=-L/home/justin/ffmpeg_build/lib --extra-libs='-lpthread
> -lm' --ld=g++ --bindir=/home/justin/bin --enable-gpl --enable-gnutls
> --enable-libfdk-aac --enable-libmp3lame --enable-libopus
> --enable-nonfree
> libavutil 59. 55.100 / 59. 55.100 libavcodec 61. 31.101 / 61.
> 31.101 libavformat 61. 9.106 / 61. 9.106 libavdevice 61.
> 4.100
> / 61. 4.100 libavfilter 10. 6.101 / 10. 6.101 libswscale
> 8.
> 13.100 / 8. 13.100 libswresample 5. 4.100 / 5. 4.100
> libpostproc
> 58. 4.100 / 58. 4.100 [aist#0:0/pcm_s16le @ 0x5621b0ab7a40] Guessed
> Channel Layout: stereo Input #0, wav, from
> '/home/justin/files/test_ffmpeg/in.wav': Metadata: title
> :
> Electronic Drum Loop 01 artist : Matech comment
> :
> soundcloud.com/matech-1/ <http://soundcloud.com/matech-1/> Duration:
> 00:00:15.24, bitrate: 1411 kb/s Stream #0:0: Audio: pcm_s16le
> ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s Stream
> mapping:
> Stream #0:0 (pcm_s16le) -> silenceremove:default
> silenceremove:default ->
> Stream #0:0 (pcm_s16le) Press [q] to stop, [?] for help Output #0, wav,
> to
> '/home/justin/files/test_ffmpeg/out_copy.wav': Metadata: INAM
> : Electronic Drum Loop 01 IART : Matech ICMT
> : soundcloud.com/matech-1/ <http://soundcloud.com/matech-1/>
> ISFT
> : Lavf61.9.106 Stream #0:0: Audio: pcm_s16le ([1][0][0][0] /
> 0x0001), 44100 Hz, stereo, s16, 1411 kb/s Metadata: encoder
> : Lavc61.31.101 pcm_s16le [out#0/wav @ 0x5621b0ab9e00] video:0KiB
> audio:1110KiB subtitle:0KiB other streams:0KiB global headers:0KiB
> muxing
> overhead: 0.014075% size= 1110KiB time=00:00:13.28 bitrate=
> 684.7kbits/s
> speed= 459x *
>
> 3. I also generated an output with overwritten timestamps:
>
> *Command:*
> *ffmpeg -y -i ~/files/test_ffmpeg/in.wav -filter_complex
> silenceremove=stop_periods=-1:timestamp=write:stop_threshold=-30dB
> ~/files/test_ffmpeg/out_write.wav*
>
> *Output:*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *ffmpeg version N-118350-ge20ee9f9ae Copyright (c) 2000-2025 the FFmpeg
> developers built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
> configuration: --prefix=/home/justin/ffmpeg_build
> --pkg-config-flags=--static
> --extra-cflags=-I/home/justin/ffmpeg_build/include
> --extra-ldflags=-L/home/justin/ffmpeg_build/lib --extra-libs='-lpthread
> -lm' --ld=g++ --bindir=/home/justin/bin --enable-gpl --enable-gnutls
> --enable-libfdk-aac --enable-libmp3lame --enable-libopus
> --enable-nonfree
> libavutil 59. 55.100 / 59. 55.100 libavcodec 61. 31.101 / 61.
> 31.101 libavformat 61. 9.106 / 61. 9.106 libavdevice 61.
> 4.100
> / 61. 4.100 libavfilter 10. 6.101 / 10. 6.101 libswscale
> 8.
> 13.100 / 8. 13.100 libswresample 5. 4.100 / 5. 4.100
> libpostproc
> 58. 4.100 / 58. 4.100 [aist#0:0/pcm_s16le @ 0x5c514279ea40] Guessed
> Channel Layout: stereo Input #0, wav, from
> '/home/justin/files/test_ffmpeg/in.wav': Metadata: title
> :
> Electronic Drum Loop 01 artist : Matech comment
> :
> soundcloud.com/matech-1/ <http://soundcloud.com/matech-1/> Duration:
> 00:00:15.24, bitrate: 1411 kb/s Stream #0:0: Audio: pcm_s16le
> ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s Stream
> mapping:
> Stream #0:0 (pcm_s16le) -> silenceremove:default
> silenceremove:default ->
> Stream #0:0 (pcm_s16le) Press [q] to stop, [?] for help Output #0, wav,
> to
> '/home/justin/files/test_ffmpeg/out_write.wav': Metadata: INAM
> : Electronic Drum Loop 01 IART : Matech ICMT
> : soundcloud.com/matech-1/ <http://soundcloud.com/matech-1/>
> ISFT
> : Lavf61.9.106 Stream #0:0: Audio: pcm_s16le ([1][0][0][0]
> /
> 0x0001), 44100 Hz, stereo, s16, 1411 kb/s Metadata: encoder
> : Lavc61.31.101 pcm_s16le [out#0/wav @ 0x5c51427a0e00] video:0KiB
> audio:1110KiB subtitle:0KiB other streams:0KiB global headers:0KiB
> muxing
> overhead: 0.014075% size= 1110KiB time=00:00:06.44
> bitrate=1411.4kbits/s
> speed= 227x *
>
> 4. I then ran the following commands to get the timestamp output for
> each of the above files. See the attached files since the output was too
> long to paste here.
>
> *ffmpeg -i ~/files/test_ffmpeg/in.wav -filter_complex ashowinfo -f null
> - 2> ~/files/test_ffmpeg/in_ashowinfo.txt*
> *ffmpeg -i ~/files/test_ffmpeg/out_copy.wav -filter_complex ashowinfo -f
> null - 2> ~/files/test_ffmpeg/out_copy_ashowinfo.txt*
> *ffmpeg -i ~/files/test_ffmpeg/out_write.wav -filter_complex ashowinfo
> -f null - 2> ~/files/test_ffmpeg/out_write_ashowinfo.txt*
>
> Here are the ends of the files to explain the issue:
>
> *in_ashowinfo.txt *
>
>
>
>
>
>
> *[Parsed_ashowinfo_0 @ 0x72aa280025c0] n:160 pts:655360 pts_time:14.860771
> fmt:s16 channels:2 chlayout:stereo rate:44100 nb_samples:4096
> checksum:BFC63EA4 plane_checksums: [ BFC63EA4 ][Parsed_ashowinfo_0 @
> 0x72aa280025c0] n:161 pts:659456 pts_time:14.953651 fmt:s16 channels:2
> chlayout:stereo rate:44100 nb_samples:4096 checksum:44D92A6E
> plane_checksums: [ 44D92A6E ][Parsed_ashowinfo_0 @ 0x72aa280025c0] n:162
> pts:663552 pts_time:15.046531 fmt:s16 channels:2 chlayout:stereo rate:44100
> nb_samples:4096 checksum:071FC31C plane_checksums: [ 071FC31C
> ][Parsed_ashowinfo_0 @ 0x72aa280025c0] n:163 pts:667648 pts_time:15.13941
> fmt:s16 channels:2 chlayout:stereo rate:44100 nb_samples:4096
> checksum:AD15BC98 plane_checksums: [ AD15BC98 ][Parsed_ashowinfo_0 @
> 0x72aa280025c0] n:164 pts:671744 pts_time:15.23229 fmt:s16 channels:2
> chlayout:stereo rate:44100 nb_samples:256 checksum:00000000
> plane_checksums: [ 00000000 ][out#0/null @ 0x5a0bc0b35440] video:0KiB
> audio:2625KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing
> overhead: unknownsize=N/A time=00:00:15.23 bitrate=N/A speed=1.81e+03x *
>
>
> *out_copy_ashowinfo.txt *
>
>
>
>
>
>
>
> *[Parsed_ashowinfo_0 @ 0x7fc9fc0025c0] n:64 pts:262144 pts_time:5.944308
> fmt:s16 channels:2 chlayout:stereo rate:44100 nb_samples:4096
> checksum:340B4DDC plane_checksums: [ 340B4DDC ][Parsed_ashowinfo_0 @
> 0x7fc9fc0025c0] n:65 pts:266240 pts_time:6.037188 fmt:s16 channels:2
> chlayout:stereo rate:44100 nb_samples:4096 checksum:F2148934
> plane_checksums: [ F2148934 ][Parsed_ashowinfo_0 @ 0x7fc9fc0025c0] n:66
> pts:270336 pts_time:6.130068 fmt:s16 channels:2 chlayout:stereo rate:44100
> nb_samples:4096 checksum:F374BB67 plane_checksums: [ F374BB67
> ][Parsed_ashowinfo_0 @ 0x7fc9fc0025c0] n:67 pts:274432 pts_time:6.222948
> fmt:s16 channels:2 chlayout:stereo rate:44100 nb_samples:4096
> checksum:570F8385 plane_checksums: [ 570F8385 ][Parsed_ashowinfo_0 @
> 0x7fc9fc0025c0] n:68 pts:278528 pts_time:6.315828 fmt:s16 channels:2
> chlayout:stereo rate:44100 nb_samples:4096 checksum:0983C2F7
> plane_checksums: [ 0983C2F7 ][Parsed_ashowinfo_0 @ 0x7fc9fc0025c0] n:69
> pts:282624 pts_time:6.408707 fmt:s16 channels:2 chlayout:stereo rate:44100
> nb_samples:1560 checksum:017E3AB0 plane_checksums: [ 017E3AB0 ][out#0/null
> @ 0x61dc2756bac0] video:0KiB audio:1110KiB subtitle:0KiB other streams:0KiB
> global headers:0KiB muxing overhead: unknownsize=N/A time=00:00:06.44
> bitrate=N/A speed=1.99e+03x *
>
> Based on the waveform, the *out_copy_ashowinfo.txt *says the last
> timestamp is roughly 6 seconds, but if the original timestamps were
> maintained then it should be roughly 11 seconds, since this is when the
> last pulse of audio is played. I would expect there to be gaps in the
> timestamps which correspond to the removed silence but there isn't. Also
> note that the contents of *out_write_ashowinfo.txt *is identical to
> *out_copy_ashowinfo.txt*, so the option doesn't seem to do anything.
>
> Thanks all for your help!
> -Justin
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user at ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-user
mailing list