У меня есть список файлов TS, которые будут объединены для последующей обрезки и закодировать его в mp4.
Все работает нормально ... однако проблема, с которой я сталкиваюсь сейчас, заключается в том, что файл перекодирован ... и это не то, что я хочу, так как ts уже h264 и mp3, так что просто упаковать его в mp4 работает Хорошо. На самом деле, это работает:
ffmpeg -i file.ts -c copy file.mp4
Но это не так
ffmpeg -i videohls-1935m-index.ts -y -filter_complex \
[0:v]trim=0:10,setpts=PTS-STARTPTS[v0]; \
[0:a]atrim=0:10,asetpts=PTS-STARTPTS[a0]; \
[0:v]trim=30:90,setpts=PTS-STARTPTS[v1]; \
[0:a]atrim=30:90,asetpts=PTS-STARTPTS[a1]; \
[0:v]trim=100:200,setpts=PTS-STARTPTS[v2]; \
[0:a]atrim=100:200,asetpts=PTS-STARTPTS[a2]; \
[0:v]trim=250:350,setpts=PTS-STARTPTS[v3]; \
[0:a]atrim=250:350,asetpts=PTS-STARTPTS[a3]; \
[v0][a0][v1][a1][v2][a2][v3][a3]concat=n=4:v=1:a=1[out] \
-map [out] \
-c copy \
videohls-1935m-index.mp4
Очевидно, что он не будет "копировать" кодеки, потому что выходные данные поступают из виртуального выхода, который отображается на [out] (или что-то в этом роде ... честно говоря, я не знаю точно, как это работает, но я знаю, что это так) так что у него нет "кодека", скажем так ... поэтому он не может скопировать его.
Это означает, что у меня есть 2 проблемы:
- Файл меньше, что совсем неплохо, но ...
- Файл перекодируется ... так что качество тоже меньше.
Как я могу избежать этого, чтобы сохранить качество видео?