Я пытаюсь закодировать серию фильмов в моей коллекции, каждый из которых находится на двух дисках. Я придумал элементарный скрипт, который отлично работает с первым. Однако для второго и третьего фильмов по какой-то причине в конечном выходном файле возникают проблемы, когда видеопоток отсутствует во второй половине полного фильма. Вот мой сценарий:
#!/bin/bash
ffmpeg -y -i video1.mkv -c:v libx264 -pass 1 -preset slower -b:v 10000k -x264opts frameref=8:fast_pskip=0 -f rawvideo temp_1.mkv
ffmpeg -i temp_1.mkv -i audio1.dts -c:a dts -b:a 1500k -ar 48000 -c:v libx264 -pass 2 -preset slow -b:v 10000k -strict -2 -x264opts fram
eref=10:fast_pskip=0 part1_final.mkv
ffmpeg -y -i video2.mkv -c:v libx264 -pass 1 -preset slower -b:v 10000k -x264opts frameref=8:fast_pskip=0 -f rawvideo temp_2.mkv
ffmpeg -i temp_2.mkv -i audio2.dts -c:a dts -b:a 1500k -ar 48000 -c:v libx264 -pass 2 -preset slow -b:v 10000k -strict -2 -x264opts fram
eref=10:fast_pskip=0 part2_final.mkv
ffmpeg -ss 00:00:00 -t 01:46:39 -i part1_final.mkv -vcodec copy -acodec copy part1_trimmed.mkv
ffmpeg -f concat -i input.txt -codec copy FINAL.mkv
video1.mkv и video2.mkv извлекаются из Blu-ray и обрабатываются через eac3to, чтобы быть только видеодорожкой. Audio1.dts и audio2.dts также являются соответствующими звуковыми дорожками. Мне нужно обрезать первый финализированный диск, потому что там около 6 секунд черного экрана, который я просто не хочу в финальном видео. Вот мой input.txt:
file './part1_trimmed.mkv'
file './part2_final.mkv'
Вот результаты ffprobe из part1_trimmed.mkv, part2_final.mkv и FINAL.mkv:
Input #0, matroska,webm, from 'part1_trimmed.mkv':
Metadata:
ENCODER : Lavf56.16.101
Duration: 01:46:39.27, start: 0.083000, bitrate: 11543 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Metadata:
ENCODER : Lavc56.16.100 libx264
Stream #0:1: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
Metadata:
ENCODER : Lavc56.16.100 dca
Input #0, matroska,webm, from 'part2_final.mkv':
Metadata:
ENCODER : Lavf56.16.101
Duration: 02:08:52.02, start: 0.083000, bitrate: 11545 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Metadata:
ENCODER : Lavc56.16.100 libx264
Stream #0:1: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
Metadata:
ENCODER : Lavc56.16.100 dca
Input #0, matroska,webm, from 'FINAL.mkv':
Metadata:
ENCODER : Lavf56.16.101
Duration: 03:55:31.29, start: 0.083000, bitrate: 11544 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
Stream #0:1: Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
Наконец, если это поможет, вот как выглядит видео во второй части FINAL.mkv: