2018-07-09 12:39:52 +02:00
|
|
|
#!/bin/sh -e
|
2016-02-17 20:19:05 +01:00
|
|
|
|
2018-07-09 12:39:52 +02:00
|
|
|
# define helper for colorful output
|
2016-02-17 20:19:05 +01:00
|
|
|
red=$(tput setaf 1)
|
|
|
|
green=$(tput setaf 2)
|
|
|
|
yellow=$(tput setaf 3)
|
|
|
|
blue=$(tput setaf 4)
|
|
|
|
bold=$(tput bold)
|
|
|
|
normal=$(tput sgr0)
|
|
|
|
inform() {
|
|
|
|
echo "${bold}==> ${blue}INFO:${normal} ${bold}${1}${normal}"
|
|
|
|
}
|
|
|
|
success() {
|
|
|
|
echo "${bold}==> ${green}SUCCESS:${normal} ${bold}${1}${normal}"
|
|
|
|
}
|
|
|
|
fail() {
|
|
|
|
echo "${bold}==> ${red}FAILURE:${normal} ${bold}${1}${normal}"
|
|
|
|
}
|
|
|
|
|
2018-07-11 12:02:30 +02:00
|
|
|
# find source location
|
|
|
|
srcdir=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
|
|
|
if ! [[ -d $srcdir/testfiles ]]; then
|
|
|
|
fail "The tagparser checkout \"$srcdir\" does not contain a testfiles directory."
|
|
|
|
exit -2
|
|
|
|
fi
|
|
|
|
|
2018-07-09 12:39:52 +02:00
|
|
|
# read args
|
|
|
|
testfilespath="$1"
|
|
|
|
testfileurl="$2"
|
|
|
|
if [[ -z $testfilespath ]] || [[ -z $testfileurl ]]; then
|
|
|
|
echo "Usage: testfilepath testfileurl"
|
|
|
|
echo " testfilepath specifies the directory to store the downloaded files"
|
|
|
|
echo " testfileurl specifies the URL to the server hosting the test files"
|
2018-07-28 14:54:46 +02:00
|
|
|
exit -1
|
2018-07-09 12:39:52 +02:00
|
|
|
fi
|
2016-03-14 22:10:53 +01:00
|
|
|
|
2016-02-17 20:19:05 +01:00
|
|
|
# enter testfiles directory
|
|
|
|
if [[ -d $testfilespath ]]; then
|
|
|
|
cd "$testfilespath"
|
|
|
|
else
|
|
|
|
fail "specified testfiles directory does not exist"
|
|
|
|
exit -1
|
|
|
|
fi
|
|
|
|
|
2018-07-09 12:39:52 +02:00
|
|
|
# define list of testfiles to be downloaded
|
|
|
|
testfiles=(
|
|
|
|
'matroska_wave1/logo3_256x256.png'
|
|
|
|
'matroska_wave1/test1.mkv'
|
|
|
|
'matroska_wave1/test2.mkv'
|
|
|
|
'matroska_wave1/test3.mkv'
|
|
|
|
'matroska_wave1/test4.mkv'
|
|
|
|
'matroska_wave1/test5.mkv'
|
|
|
|
'matroska_wave1/test6.mkv'
|
|
|
|
'matroska_wave1/test7.mkv'
|
|
|
|
'matroska_wave1/test8.mkv'
|
|
|
|
'mtx-test-data/mkv/handbrake-chapters-2.mkv'
|
|
|
|
'mtx-test-data/mkv/tags.mkv'
|
|
|
|
'mp4/test1.m4a'
|
2018-07-09 16:00:59 +02:00
|
|
|
'mp4/android-8.1-camera-recoding.mp4'
|
2018-07-09 12:39:52 +02:00
|
|
|
'mtx-test-data/aac/he-aacv2-ps.m4a'
|
|
|
|
'mtx-test-data/alac/othertest-itunes.m4a'
|
|
|
|
'mtx-test-data/mp3/id3-tag-and-xing-header.mp3'
|
|
|
|
'mtx-test-data/mp4/10-DanseMacabreOp.40.m4a'
|
|
|
|
'mtx-test-data/mp4/1080p-DTS-HD-7.1.mp4'
|
|
|
|
'mtx-test-data/mp4/dash/dragon-age-inquisition-H1LkM6IVlm4-video.mp4'
|
|
|
|
'mtx-test-data/ogg/qt4dance_medium.ogg'
|
|
|
|
'mtx-test-data/opus/v-opus.ogg'
|
|
|
|
'misc/multiple_id3v2_4_values.mp3'
|
|
|
|
)
|
|
|
|
|
|
|
|
# download the files
|
|
|
|
missing=()
|
|
|
|
for file in "${testfiles[@]}"; do
|
|
|
|
if [[ -f $file ]]; then
|
|
|
|
inform "Skipping already existing $file"
|
|
|
|
continue
|
|
|
|
fi
|
2017-10-30 21:36:27 +01:00
|
|
|
|
2018-07-09 12:39:52 +02:00
|
|
|
dir=${file%/*}
|
|
|
|
name=${file##*/}
|
|
|
|
url=$testfileurl/$file
|
|
|
|
|
|
|
|
inform "Downloading file $file from $url"
|
|
|
|
mkdir -p "$dir"
|
|
|
|
pushd "$dir"
|
|
|
|
if ! wget --output-document="$name" "$url"; then
|
|
|
|
rm "$name"
|
|
|
|
missing+=("$file")
|
|
|
|
fail "Unable to download $file"
|
|
|
|
fi
|
|
|
|
popd
|
|
|
|
done
|
|
|
|
|
|
|
|
# summarize missing files
|
|
|
|
if [[ ! -z $missing ]]; then
|
|
|
|
echo
|
|
|
|
fail "The following files could not be downloaded:"
|
|
|
|
for file in "${missing[@]}"; do
|
|
|
|
echo "$file"
|
|
|
|
done
|
|
|
|
exit 1
|
|
|
|
fi
|
2018-07-01 02:04:29 +02:00
|
|
|
|
2018-07-28 14:54:46 +02:00
|
|
|
# convert more testfiles from the downloaded ones (FIXME: use a Makefile)
|
|
|
|
inform "Creating further testfiles with ffmpeg and mkvtoolnix"
|
2016-05-21 22:11:08 +02:00
|
|
|
mkdir -p flac
|
2018-07-28 14:54:46 +02:00
|
|
|
mkdir -p mkv
|
|
|
|
convert() {
|
|
|
|
local filename=$1 && shift
|
|
|
|
if [[ -f $filename ]]; then
|
|
|
|
inform "Skipping already existing $filename"
|
|
|
|
return
|
|
|
|
fi
|
|
|
|
"$@"
|
|
|
|
}
|
|
|
|
convert flac/test.flac ffmpeg -i mtx-test-data/alac/othertest-itunes.m4a -c:a flac flac/test.flac
|
|
|
|
convert flac/test.ogg ffmpeg -i flac/test.flac -vn -c:a copy flac/test.ogg
|
|
|
|
convert mkv/av1_test.mkv ffmpeg -i matroska_wave1/test1.mkv -t 1 -c:v libaom-av1 -crf 30 -cpu-used 5 -an -strict experimental mkv/av1_test.mkv
|
2018-11-08 14:32:25 +01:00
|
|
|
convert mp4/av1_test.mp4 ffmpeg -i mkv/av1_test.mkv -c copy mp4/av1_test.mp4
|
2019-09-25 21:52:44 +02:00
|
|
|
convert mp4/test1-flac.m4a ffmpeg -i mp4/test1.m4a -c:a flac -f mp4 -strict -2 mp4/test1-flac.m4a
|
|
|
|
convert mp4/test1-opus.m4a ffmpeg -i mp4/test1.m4a -c:a libopus -f mp4 -strict -2 mp4/test1-opus.m4a
|
|
|
|
convert mp4/test1-vorbis.m4a ffmpeg -i mp4/test1.m4a -c:a libvorbis -f mp4 -strict -2 mp4/test1-vorbis.m4a
|
2018-07-28 14:56:00 +02:00
|
|
|
convert misc/av1.ivf ffmpeg -i mkv/av1_test.mkv -c copy misc/av1.ivf
|
2018-07-28 14:54:46 +02:00
|
|
|
convert mkv/nested-tags.mkv \
|
|
|
|
mkvmerge --ui-language en_US \
|
|
|
|
--output 'mkv/nested-tags.mkv' \
|
|
|
|
--no-global-tags \
|
|
|
|
--language '0:und' \
|
|
|
|
--default-track '0:yes' \
|
|
|
|
--language '1:und' \
|
|
|
|
--default-track '1:yes' \
|
|
|
|
\( 'mtx-test-data/mkv/tags.mkv' \) \
|
|
|
|
--global-tags "$srcdir/testfiles/mkv/nested-tags.xml" \
|
|
|
|
--track-order '0:0,0:1'
|
2019-03-28 17:53:14 +01:00
|
|
|
convert mp4/chapters.m4b ffmpeg -i "$srcdir/testfiles/metadata_for_ffmpeg.txt" -i flac/test.flac -map 1:0 -map_metadata 1 -c:a aac -ac 2 mp4/chapters.m4b
|
2018-07-11 12:02:30 +02:00
|
|
|
|
2018-07-09 12:39:52 +02:00
|
|
|
success "All testfiles downloaded/converted!"
|