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:
- Comparação dos formatos de contêiner de vídeo : um conjunto útil de tabelas que mostra quais codecs são mais bem-sucedidos em cada formato de contêiner
- Codecs de áudio para contêineres TS: O FFmpeg ficará feliz em colocar esses codecs em TS: MP2, MP3, LC-AAC, HE-AAC e AC3. Referência aqui ... em 'Container Formats'.
- Configurações de segmento e opções para o FFmpeg : Ótima explicação das configurações necessárias para segmentar seus arquivos. Vale a pena olhar para a seção de exemplos ...