74 lines
2.1 KiB
Bash
74 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# Generate media for subtitle-extractor integration tests.
|
|
# Run inside the test container (ffmpeg required); safe to run locally too.
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo "Generating test fixtures..."
|
|
|
|
# 1. MKV with three text tracks — the shape real releases have:
|
|
# s:0 SubRip, language eng
|
|
# s:1 ASS, language fre, forced (must stay ASS under outputFormat=native)
|
|
# s:2 SubRip, language und (nothing declared)
|
|
if [ ! -f "with-subs.mkv" ]; then
|
|
echo "Creating with-subs.mkv..."
|
|
cat > eng.srt << 'EOF'
|
|
1
|
|
00:00:00,000 --> 00:00:01,000
|
|
The quick brown fox jumps over the lazy dog.
|
|
|
|
2
|
|
00:00:01,000 --> 00:00:02,000
|
|
Every good story starts somewhere.
|
|
EOF
|
|
cat > fre.srt << 'EOF'
|
|
1
|
|
00:00:00,000 --> 00:00:01,000
|
|
Le renard brun saute par-dessus le chien paresseux.
|
|
|
|
2
|
|
00:00:01,000 --> 00:00:02,000
|
|
Chaque bonne histoire commence quelque part.
|
|
EOF
|
|
cat > und.srt << 'EOF'
|
|
1
|
|
00:00:00,500 --> 00:00:01,500
|
|
~ ~ ~
|
|
EOF
|
|
|
|
ffmpeg -y -f lavfi -i testsrc=duration=3:size=160x120:rate=12 \
|
|
-i eng.srt -i fre.srt -i und.srt \
|
|
-map 0:v -map 1:s -map 2:s -map 3:s \
|
|
-c:v libx264 -preset ultrafast -crf 35 -pix_fmt yuv420p \
|
|
-c:s:0 srt -c:s:1 ass -c:s:2 srt \
|
|
-metadata:s:s:0 language=eng \
|
|
-metadata:s:s:1 language=fre -disposition:s:1 forced \
|
|
-metadata:s:s:2 language=und \
|
|
with-subs.mkv
|
|
rm -f eng.srt fre.srt und.srt
|
|
fi
|
|
|
|
# 2. MP4 with a mov_text track tagged in ISO 639-2/T (`deu`) — must be converted
|
|
# to SRT and normalised to `ger`.
|
|
if [ ! -f "mov-text.mp4" ]; then
|
|
echo "Creating mov-text.mp4..."
|
|
cat > ger.srt << 'EOF'
|
|
1
|
|
00:00:00,000 --> 00:00:01,000
|
|
Der schnelle braune Fuchs springt über den faulen Hund.
|
|
EOF
|
|
ffmpeg -y -f lavfi -i testsrc=duration=2:size=160x120:rate=12 \
|
|
-i ger.srt \
|
|
-map 0:v -map 1:s \
|
|
-c:v libx264 -preset ultrafast -crf 35 -pix_fmt yuv420p \
|
|
-c:s mov_text -metadata:s:s:0 language=deu \
|
|
mov-text.mp4
|
|
rm -f ger.srt
|
|
fi
|
|
|
|
echo "Test fixtures generated:"
|
|
ls -la *.mkv *.mp4 2>/dev/null || true
|