Preservando as informações do PTS ao criar o arquivo TS

2

Estou tentando converter um MP4 em um arquivo TS para que eu possa segmentar o arquivo para o iOS Streaming. Eu tenho um arquivo de vídeo TS (que não tem áudio) e um arquivo TS de áudio separado. O problema que estou tendo é, às vezes, o áudio e o vídeo ficavam fora de sincronia. Depois de fazer algumas pesquisas, o PTS tem um papel muito importante nisso.

Então, se eu executar ffprobe -print_format csv -show_packets test.mp4 , o resultado será

packet,video,0,0,0.000000,-7200,-0.080000,3600,0.040000,N/A,N/A,13154,1673,K packet,video,0,3600,0.040000,-3600,-0.040000,3600,0.040000,N/A,N/A,9227,14827,_ packet,video,0,7200,0.080000,0,0.000000,3600,0.040000,N/A,N/A,8689,24054,_ packet,video,0,14400,0.160000,3600,0.040000,3600,0.040000,N/A,N/A,7730,32743,_

O quarto col é o valor PTS e observe que ele começa com 0.

E se eu converter o mp4 em um arquivo TS com ffmpeg -y -i test.mp4 -acodec libfaac -vcodec copy -vbsf h264_mp4toannexb test.ts e, em seguida, executar ffprobe -print_format csv -show_packets WG7855.ts , recebo

packet,video,0,126000,1.400000,118800,1.320000,N/A,N/A,N/A,N/A,13204,564,K packet,video,0,129600,1.440000,122400,1.360000,N/A,N/A,N/A,N/A,9233,14476,_ packet,video,0,133200,1.480000,126000,1.400000,N/A,N/A,N/A,N/A,8695,24816,_ packet,video,0,140400,1.560000,129600,1.440000,N/A,N/A,N/A,N/A,7736,34216,_

Observe que o PTS começa com 126000. Eu tentei o -copyts arg e o PTS ainda começa com 126000.

Alguém que pode ajudar?

    
por Benson Lim 09.07.2013 / 04:53

1 resposta

1

Obrigado, shlck! Então o que eu fiz foi

ffmpeg -i file.mp4 -acodec libfaac -vcodec libx264 -an -map 0 -f segment -segment_time 10 -segment_list test.m3u8 -segment_format mpegts -vbsf h264_mp4toannexb -flags -global_header stream%05d.ts

Parece que o arquivo ts tem todos os timestamps preservados!

    
por 10.07.2013 / 07:38

Tags