我正在使用 将一堆(990).ts
文件转换为.mp4
视频文件ffmpeg
。
生成的.mp4
文件在 中可以完美播放,但是当我在Mac 上vlc
播放时,或者更具体地说,在我使用 的视频播放器中,它可以播放约 10 分钟,然后声音会开始跳动,因为每 2 秒就会出现非常短暂的闪烁/暂停。停止视频并从同一点再次播放,让它再次播放约 10 分钟。QuickTime
AVPlayerView
我最初以为是我自己的视频应用程序存在问题,但 QuickTime 也存在同样的问题。
我将所有.ts
文件合并如下:
ffmpeg -y -f concat -safe 0 -i list.txt -c copy video.ts
然后我将其转换成.mp4
这样:
ffmpeg -y -i video.ts -acodec copy -vcodec copy video.mp4
我尝试过的其他事情
指定视频编解码器:
ffmpeg -i video.ts -acodec copy -vcodec libx264 video.mp4
首先转换为.mkv
:
ffmpeg -i video.ts -map 0 -c copy output.mkv
ffmpeg -i video.mkv -acodec copy -vcodec copy video.mp4
转换为m4a
:
ffmpeg -i video.ts -vcodec h264 -c:a aac video.mp4
我注意到当我使用ffprobe
它时,最终视频会报告为29.88 fps
但原始视频.ts
是30 fps
。我不确定这是否是问题所在,所以我尝试强制帧速率保持不变:
ffmpeg -i video.ts -acodec copy -filter:v fps=30 video.mp4
以上所有似乎都没有什么区别。
合并文件的方式可能存在问题.ts
吗?虽然完整版.ts
在 QuickTime 中似乎可以正常播放。我还可以尝试其他方法来合并它们吗?
流详细信息
原始单个 .ts 文件:
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
文件:
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
转换为.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]
转换为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]