mescla / associa / concatena centenas de arquivos ts em um arquivo ts

3

Fazendo o download de um fluxo de vídeo com curl, acabei com arquivos ~ 400 * .ts, cada um com cerca de 1 MB. Eles são sequencialmente numerados video1.ts, video2.ts, ... video400.ts. Agora eu preciso concatená-los em um arquivo, obviamente na ordem correta (então video10.ts deve ser seguido por video11.ts e não video110.ts).

Eu tentei criar algo como "para i in * .ts; do ....", mas não consigo entender. Também ffmepg e avconv são muito complicados para mim.

Quem sabe como juntar esses 400 arquivos no oreder correto, em um novo arquivo? Thx!

    
por user140222 22.10.2013 / 15:36

5 respostas

1

Que tipo de truque:

for i in 'seq 1 400'; do cat "video$i.ts" >> newvideo.ts; done

mas agora o áudio está fora de sincronia por ~ 0.5s e existem ~ 0.5s silenciados a cada poucos segundos (presumivelmente quando os fragmentos são colados juntos).

    
por 23.10.2013 / 15:43
1

Esta é uma pergunta antiga, mas espero que a resposta possa agregar valor para os outros.

Com base em esta referência , o O script a seguir fará o trabalho, assumindo ffmpeg 1.1 e mais tarde.

#!/bin/bash

for i in 'seq 0 $totalNumberOfTsFiles'; do echo  file "'${i}.ts'" >> Input.txt ; done
/home/hq6/bin/ffmpeg-2.3.3/ffmpeg -f concat -i Input.txt  -c copy output.ts
    
por 15.09.2014 / 08:14
0

Tente o seguinte comando:

cat video?.ts video??.ts video???.ts  > out.ts
    
por 28.08.2015 / 20:44
0

Melhor Solução:

Faça o download do separador TSS , clique na guia "JOIN" e arraste todos os arquivos para a janela!

    
por 21.04.2017 / 18:23
0

filenames="'ls -rt1 $input | tr '\n' '|' | sed '$ s/.$//''"

ffmpeg -i "concat:$filenames" -c copy out.ts ,

em que $input é o (s) nome (s) do (s) arquivo (s) ou regexp com escape (por exemplo, \ *. ts).

    
por 04.02.2018 / 02:20