aviso ffmpeg: “Os carimbos de data e hora estão desmarcados em um pacote” ao converter H264 em mp4

3

Estou recebendo a seguinte mensagem de aviso ao executar ffmpeg:

[mp4 @ 00000000025c00a0] Os carimbos de data / hora não estão configurados em um pacote para o fluxo 0. Isso foi descontinuado e deixará de funcionar no futuro. Corrija seu código para definir os carimbos de hora corretamente
[mp4 @ 00000000025c00a0] pts não tem valor

A mensagem aparece ao converter H264o fluxo elementar em mp4arquivo de vídeo.

Estou usando a ffmpegversão:ffmpeg-3.3.2-win64

Tentei executar o seguinte código, para verificar se há algum problema no meu H264fluxo:

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 H264um fluxo de vídeo sintético usando ffmpege depois o converte em mp4.

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

É um bug ffmpeg?
Há algum rei da bandeira que eu perdi ao criar o H264fluxo sintético ?
O H264elementary deveria conter carimbos de data / hora?

Rotem
fonte

Respostas:

3

Como o fluxo é criado pelo ffmpeg, não há motivo para não conter os carimbos de data / hora necessários.

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

Essa alteração foi introduzida há um tempo atrás e, de acordo com o que vejo, simplesmente não considera o caso de uso de muxing fluxos elementares 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 entrada framerate ( -r ... -i ...) seria suficiente para fazer com que esse erro desaparecesse, pois ele deveria gerar registros de data e hora, mas aparentemente 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
slhck
fonte
aparentemente não ajudar neste caso -> parece relacionado com trac.ffmpeg.org/ticket/502#comment:21
Gyan
1
@slhck Os fluxos elementares não podem ter registros de data e hora, para que eu possa ignorar com segurança a mensagem de aviso. Obrigado pela sua resposta.
Rotem
@Rotem Sure! É só que ele deve funcionar com o -rparâmetro como uma opção de entrada. Talvez eu arquive outro relatório de erro.
slhck
1
Existem atualizações neste ou no relatório de erros? Eu apenas tentei definir -rem uma versão atual do ffmpeg e ainda dá o mesmo erro para fluxos elementares H.264.
Andreas Unterweger
1
Sei que essa é uma pergunta antiga, mas como é feita com muita frequência: Uma improvável melhoria no FFmpeg deu uma solução alternativa: o Raw h.264 para AVI funciona bem e possui toda a mágica do carimbo de data / hora, de AVI para MP4 também. Portanto, se você estiver confortável com 2 muxes, estará coberto. Isso também evita peculiaridades do MP4Box (como droping grandes partes de um bitsream crua como "não referenciado")
Eugen Rieck