The WAV format is limited to files that are less than 4 GiB, because of its use of a 32-bit unsigned integer to record the file size in the header. Although this is equivalent to about 6.8 hours of CD-quality audio at 44.1 kHz, 16-bit stereo, it is sometimes necessary to exceed this limit, especially when greater sampling rates, bit resolutions or channel count are required. The W64 format was therefore created for use in Sound Forge. Its 64-bit file size field in the header allows for much longer recording times. The RF64 format specified by the European Broadcasting Union has also been created to solve this problem.
ffprobe-get-duration.sh
```sh
#!/bin/sh
# https://trac.ffmpeg.org/wiki/FFprobeTips#Formatcontainerduration
set -e
set -u
for f in "$@"; do
# duration in float seconds, including milliseconds
duration=$(ffprobe -i "$f" -loglevel 0 -show_entries format=duration -of default=nw=1:nk=1)
# get nanoseconds. jq does not support %f or %N format
duration_ns=${duration#*.}
if [ "$duration" = "$duration_ns" ]; then
duration_ns=000000
fi
duration_h=$(echo $duration | jq -r 'tonumber | strftime("%H:%M:%S")').$duration_ns
echo "$duration $duration_h $f"
done
```
currently rubberband honors invalid wav sizes and silently produces cropped output files
https://en.wikipedia.org/wiki/WAV
ffprobe-get-duration.sh
```sh #!/bin/sh # https://trac.ffmpeg.org/wiki/FFprobeTips#Formatcontainerduration set -e set -u for f in "$@"; do # duration in float seconds, including milliseconds duration=$(ffprobe -i "$f" -loglevel 0 -show_entries format=duration -of default=nw=1:nk=1) # get nanoseconds. jq does not support %f or %N format duration_ns=${duration#*.} if [ "$duration" = "$duration_ns" ]; then duration_ns=000000 fi duration_h=$(echo $duration | jq -r 'tonumber | strftime("%H:%M:%S")').$duration_ns echo "$duration $duration_h $f" done ```possible workarounds
ffmpeg -i src.mkv -rf64 auto src.wav
RF64 works