Привет тебе, высокочтимый All!
Прекрасно сознаю, что проблема наверняка вызвана моим ламерством и решается вполпинка. Но... чего-то я всё-таки не догнал, а потому прошу у тебя помощи.
Задача выглядит простой. Есть авишки, их надо перегнать в MPEG-2 transport stream. То есть, никакого перекодирования не надо, только ремукс.
Вот исходный файл:
Input #0, avi, from 'fur_tv_1.avi':
Metadata:
encoder : VirtualDubMod 1.5.10.2 (build 2540/release)
Duration: 00:21:32.12, start: 0.000000, bitrate: 1980 kb/s
Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1779 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 192 kb/s
Сперва я поступил самым тупым образом:
ffmpeg -hide_banner -i fur_tv_1.avi fur1.ts
Открыв получившийся файл, я ужаснулся: изображение было адски «оквадрачено».
После этого я поступил умнее:
ffmpeg -hide_banner -fflags +genpts -i fur_tv_1.avi -codec copy -f mpegts fur1.ts
Получившийся файл:
Input #0, mpegts, from 'G:\Temp\fur01.ts':
Duration: 00:21:32.16, start: 1.400000, bitrate: 2154 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: mpeg4 (Advanced Simple Profile) ([16][0][0][0] / 0x0010), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 25 fps, 25 tbr, 90k tbn, 25 tbc
Stream #0:1[0x101]: Audio: mp3 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 192 kb/s
Открыл его. Всё чётко, никаких артефактов нет. Но при просмотре ощущение такое, что половина кадров пропущена. То есть, если в исходном файле изображение воспринималось, так сказать, непрерывно изменявшимся, то в результирующем файле оно стало чуть-чуть дёрганым. Как будто действительно кадры раз через раз пропадают. При этом fps в обоих файлах одинакова.
Пробовал я явно указать rate:
ffmpeg -hide_banner -fflags +genpts -r 25 -i fur_tv_1.avi -r 25 -codec copy -f mpegts fur1.ts
Что я делаю не так? Наверняка где-то какую-то мелочь упустил :(