Comando FFmpeg para codificação mpeg-ts

2

Acabei de começar a usar o codificador FFmpeg. Eu tenho um comando para codificar arquivos de vídeo para mp4 containers:

ffmpeg -i input.mp4 \
       -vcodec libx264 -s 426x240 -pix_fmt yuv420p \
       -crf 22 -minrate 200k -bufsize 400k -maxrate 400k -preset medium \
       -b:v 500000 -profile:v baseline -level 3.1 \
       -c:a aac -strict -2 -b:a 64k -ac 2 \
       output_240.mp4

Eu preciso do comando correspondente para a codificação mpeg-ts. Eu procurei por isso online, mas não consegui exatamente o que estava procurando, pois sou novo nisso.

    
por Fayas B 24.01.2018 / 08:24

1 resposta

1

Como sempre acontece com o FFmpeg, há várias opções a serem feitas, e reduzi isso um pouco mais para criar uma resposta clara:

1. Os codecs do seu arquivo de entrada são suportados no container TS:

Examine seu arquivo de entrada com o FFmpeg da seguinte forma:

ffmpeg -i input.mp4

Se o arquivo contiver codecs bem suportados em um contêiner TS , por exemplo, vídeo H.264 e AAC som, você pode simplesmente copiar os fluxos através de:

ffmpeg -i input.mp4 -c copy output.ts

Isso dará ótimos resultados, embora você possa precisar variar esta linha de comando, dependendo do uso real do arquivo de saída (streaming, um determinado dispositivo de reprodução, etc.).

2. Os codecs do seu arquivo de entrada não são suportados em um contêiner TS:

Se o seu arquivo de entrada contiver codecs que não são bem suportados em um contêiner TS, será necessário recodificar os fluxos de áudio ou vídeo, ou ambos. Os codecs padrão para o FFmpeg e o container TS são mpeg2video e mp2 sound. Se você está feliz em usar esses codecs padrão, o seguinte dará ótimos resultados:

ffmpeg -i input.mp4 \
       -c:v mpeg2video -qscale:v 2 \
       -c:a mp2 -b:a 192k \
       output.ts

Isso certamente deu resultados bastante razoáveis no meu sistema e também na sua ...

3. Você deseja segmentar seu arquivo para HTTP Live Streaming (HLS):

E, finalmente, você pode querer produzir um arquivo TS segmentado com playlist para uso com HTTP Live Streaming (HLS). Existem, como sempre, várias maneiras de realizar isso, mas a linha de comando de exemplo abaixo funcionará bem para arquivos de entrada cujos codecs são suportados em um contêiner TS:

ffmpeg -re -i input.mp4 \
       -codec copy -map 0 \
       -f segment -segment_list playlist.m3u8 \
       -segment_list_flags +live -segment_time 10 \
       out%03d.ts

Se você quiser alterar os codecs do arquivo de entrada, basta adicionar as configurações necessárias no lugar de -codec copy , acredito que o H.264 e o AAC são codecs populares para esse tipo de fluxo. Muito espaço para experimentação com as opções de segmento que são descritas aqui ...

Notas:

por andrew.46 24.01.2018 / 12:44