ffmpeg warning: “Os timestamps são desconfigurados em um pacote” ao converter H264 em mp4

3

Estou recebendo a seguinte mensagem de aviso ao executar ffmpeg :

[mp4 @ 00000000025c00a0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mp4 @ 00000000025c00a0] pts has no value

A mensagem aparece ao converter o fluxo elementar H264 em mp4 arquivo de vídeo.

Estou usando ffmpeg version: ffmpeg-3.3.2-win64

Eu tentei executar o código a seguir, para verificar se há um problema no meu H264 stream:

ffmpeg -f lavfi -i testsrc -t 3 -r 10 -pix_fmt yuv420p -c:v libx264 test.264
ffmpeg -r 10 -i test.264 -vcodec copy test.mp4

O código cria H264 fluxo de vídeo sintético usando ffmpeg e, em seguida, converte o fluxo em mp4 .

Como o fluxo é criado por ffmpeg , não há motivo para não conter os registros de data e hora necessários.

É um bug em ffmpeg ?
Existe algum rei de bandeira que eu perdi ao criar o fluxo sintético H264 ?
O H264 elementary deveria conter Timestamps?

    
por Rotem 06.07.2017 / 15:00

1 resposta

3

Since the stream is created by ffmpeg, there is no reason for it not to contain required Timestamps.

Exceto que fluxos de bits H.264 brutos não possuem registros de data e hora.

Esta alteração foi introduzida há um tempo e, de acordo com o que vejo, simplesmente não considera o caso de uso de fluxos elementares de muxing que não podem ter registros de data e hora.

Isso funciona:

MP4Box -add test.264 -fps 10 test-out.mp4

Meu pensamento era que especificar a taxa de quadros de entrada ( -r ... -i ... ) seria suficiente para fazer com que o erro desaparecesse, já que é suposto gerar timestamps, mas aparentemente isso não ajuda nesse caso. Pode ser um bug, mas posso estar perdendo algo mais obscuro.

Uma alternativa foi sugerida por Eugen Rieck em um comentário abaixo:

ffmpeg -i test.264 -c copy test.avi
ffmpeg -i test.avi -c copy test.mp4
    
por 06.07.2017 / 15:57