Estou convertendo vários .ts
arquivos (990) em um .mp4
arquivo de vídeo usando ffmpeg
.
.mp4
O arquivo resultante será reproduzido perfeitamente bem em vlc
, no entanto, quando eu o reproduzo no QuickTime
Mac, ou mais especificamente no meu próprio player de vídeo que usa um, AVPlayerView
ele será reproduzido bem por cerca de 10 minutos, então o som começará a pular , pois a cada 2 segundos há um breve blip/pausa. Parar o vídeo e reproduzi-lo novamente do mesmo ponto permite que ele seja reproduzido bem novamente por mais ~10 minutos.
Meu pensamento inicial foi que havia um problema com meu próprio aplicativo de vídeo, mas o QuickTime tem o mesmo problema.
Estou combinando todos os .ts
arquivos assim:
ffmpeg -y -f concat -safe 0 -i list.txt -c copy video.ts
Então eu converto em algo .mp4
assim:
ffmpeg -y -i video.ts -acodec copy -vcodec copy video.mp4
Outras coisas que tentei
Especificando o codec de vídeo:
ffmpeg -i video.ts -acodec copy -vcodec libx264 video.mp4
Primeiro convertendo para .mkv
:
ffmpeg -i video.ts -map 0 -c copy output.mkv
ffmpeg -i video.mkv -acodec copy -vcodec copy video.mp4
Converter para m4a
:
ffmpeg -i video.ts -vcodec h264 -c:a aac video.mp4
Notei que quando eu uso ffprobe
ele relata o vídeo final como 29.88 fps
mas o original .ts
é 30 fps
. Não tenho certeza se esse é o problema, então tentei forçar a taxa de quadros a permanecer a mesma:
ffmpeg -i video.ts -acodec copy -filter:v fps=30 video.mp4
Nada do que foi dito acima parece fazer diferença.
Poderia haver um problema com a forma como os .ts
arquivos são combinados? Embora o full .ts
pareça tocar bem no QuickTime. Existe outro método que eu possa tentar para combiná-los?
Detalhes do fluxo
Arquivo .ts original único:
Input #0, mpegts, from '162.ts':
Duration: 00:00:05.49, start: 883.612144, bitrate: 873 kb/s
Program 1
Stream #0:0[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 130 kb/s
Stream #0:1[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn
.ts
Arquivo combinado :
Input #0, mpegts, from 'video.ts':
Duration: 01:30:21.54, start: 1.400000, bitrate: 690 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn
Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 130 kb/s
Convertido para .mp4
:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf61.1.100
Duration: 01:30:21.56, start: 0.000000, bitrate: 616 kb/s
Stream #0:0[0x1](und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 480 kb/s, 29.88 fps, 30 tbr, 90k tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
Convertido com fps=30
:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf61.1.100
Duration: 01:30:21.56, start: 0.000000, bitrate: 768 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 640x360 [SAR 1:1 DAR 16:9], 632 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc61.3.100 libx264
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
lista de reprodução.m3u
Em seguida, execute
ffmpeg
com o.m3u
arquivo: