Experiment: Melting a dyed ice cube in salt water and fresh water – which one melts first?

In a podcast I listened to yesterday the experiment was discussed, using normal ice cubes. And they suggested to repeat the experiment with dyed ice cubes or dyed water. Yesterday I prepared the ice cubes and today did the experiment.

Some words about the preparation: Dissolving salt creates heat, hence I allowed for time so that the water could reach room temperature again. Therefore, the interesting bit only starts after a minute into the time lapse, or 20 minutes in real time.

The ice cubes start melting immediately, both distribute a bit of blue water to their glasses. However, the difference becomes visible very quickly: In the fresh water a constant stream of blue water flows to the bottom of the glass. In the salt water glass the blue melt water from the ice cube creates a layer on the top of the glass. The ice cube swims in this cold water, is isolated from the warm water, and hence survives about twice as long.

The reason of the different behaviour is related to density. A cold liquid has a higher density than a warm liquid, and hence sinks to the bottom (in the same way that a piece of metal has a higher density than water, or humans have a higher density than air). However, dissolving salt in water increases the density of that water, and the saltwater has a higher density than the cold water from the ice cube.

When the experiment was described, I guessed wrong. Using salt to melt ice on streets, I thought the ice cube in the salt water will melt quicker, due to a chemical reactions. However, as the salt is already dissolved, no heat can come from destroying the crystal structure (and that would be a physical reaction and not a chemical reaction anyway).

I didn’t want to show an hour long video on youtube, hence speed up certain parts of the video. For this I used the free ffmpeg tool on a Ubuntu 20 laptop. Running the code below took about 10 Minutes on my Laptop:

ffmpeg -i ../orig.mp4 -ss 00:00:00 -to 00:00:05 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.10*PTS" output_01.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:00:05 -to 00:00:27 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.50*PTS" output_02.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:00:27 -to 00:00:54 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.10*PTS" output_03.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:00:54 -to 00:01:12 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.50*PTS" output_04.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:01:12 -to 00:03:05 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.10*PTS" output_05.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:03:05 -to 00:03:12 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.33*PTS" output_06.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:03:12 -to 00:03:20 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.10*PTS" output_07.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:03:20 -to 00:19:50 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.01*PTS" output_08.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:19:50 -to 00:20:10 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.10*PTS" output_09.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:20:10 -to 00:20:40 -c copy output_80.mp4
ffmpeg -i ../orig.mp4 -ss 00:20:40 -to 00:21:00 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.15*PTS" output_81.mp4 && rm temp.mp4
ffmpeg -i ../orig.mp4 -ss 00:21:00 -to 00:27:11 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.05*PTS" output_82.mp4 && rm temp.mp4
ffmpeg -i ../orig_02.mp4 -ss 00:00:00 -to 00:07:20 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.05*PTS" output_83.mp4 && rm temp.mp4
ffmpeg -i ../orig_02.mp4 -ss 00:07:20 -to 00:07:27 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.15*PTS" output_84.mp4 && rm temp.mp4
ffmpeg -i ../orig_02.mp4 -ss 00:07:27 -to 00:07:42 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.50*PTS" output_85.mp4 && rm temp.mp4
ffmpeg -i ../orig_02.mp4 -ss 00:07:42 -to 00:07:50 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.15*PTS" output_86.mp4 && rm temp.mp4
ffmpeg -i ../orig_02.mp4 -ss 00:07:50 -to 00:27:11 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.05*PTS" output_87.mp4 && rm temp.mp4
ffmpeg -i ../orig_03.mp4 -ss 00:00:00 -to 00:05:11 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.05*PTS" output_88.mp4 && rm temp.mp4
ffmpeg -i ../orig_03.mp4 -ss 00:05:11 -to 00:05:33 -c copy temp.mp4 && ffmpeg -i temp.mp4 -r 16 -filter:v "setpts=0.20*PTS" output_89.mp4 && rm temp.mp4

for f in $(ls output*.mp4); do
ffmpeg -i $f -c copy -bsf:v h264_mp4toannexb -f mpegts $f.ts
done
CONCAT=$(echo $(ls *.ts) | sed -e "s/ /|/g")
ffmpeg -i "concat:$CONCAT" -c copy -bsf:a aac_adtstoasc VID_20220224_094623206.mp4
rm *.ts

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s