gpt4 book ai didi

ffmpeg - 转码 ts 后的持续时间变化

转载 作者:行者123 更新时间:2023-12-04 23:26:42 25 4
gpt4 key购买 nike

我对使用 ffmpeg 进行转码有疑问

我想将 m3u8 覆盖到 mp4,所以我先对每个 ts 文件进行转码,然后将它们连接到 mp4,但我发现持续时间会比源文件大。

source file is : http://oc7iy3eta.bkt.clouddn.com/src_20.ts

after transcode, test file is: http://oc7iy3eta.bkt.clouddn.com/test_20.ts



我使用如下命令更改为 5fps 和 400k 比特率:

sudo ffmpeg -analyzeduration 2147483647 -probesize 2147483647 -nostdin -y -v warning -i ./src_20.ts -threads 3 -movflags faststart -metadata:s:v rotate=0 -chunk_duration 520000 -video_track_timescale 25000 -pix_fmt yuv420p -copytb 1 -vcodec libx264 -b:v 400000 -minrate 400000 -maxrate 400000 -bufsize 500k -force_key_frames "expr:gte(t,n_forced*2)" -vsync 1 -r 5 -s 544*960 -acodec libfaac -async 1 ./test_20.ts

我使用 ffprobe 命令查看视频信息:

源文件信息:

时长:00:00:01.26,开始:28.346989,比特率:921 kb/s
程序 1
元数据:
服务名称:Service01
服务提供者:FFmpeg
流 #0:0[0x100]:音频:aac ([15][0][0][0]/0x000F),44100 Hz,立体声,fltp,23 kb/s
流 #0:1[0x101]:视频:h264(高)([27][0][0][0]/0x001B),yuv420p,544x960,10.67 tbr,90k tbn,180k tbc

测试文件:

输入 #0,mpegts,来自“test_20.ts”:
时长:00:00:01.62,开始:1.576778,比特率:447 kb/s
程序 1
元数据:
服务名称:Service01
服务提供者:FFmpeg
流 #0:0[0x100]:视频:h264(高)([27][0][0][0]/0x001B),yuv420p,544x960,5 fps,5 tbr,90k tbn,10 tbc
流 #0:1[0x101]:音频:aac ([15][0][0][0]/0x000F),44100 Hz,立体声,fltp,5 kb/s

==================================================== ======================

问题

所以,我们可以看到src文件的时长是1.26s,但是转码后测试文件是1.62s。

为什么?任何人都可以帮忙

最佳答案

我建议您将 m3u8 保存到单个 TS,然后将其转码为 MP4。

ffmpeg -i in.m3u8 -c copy src.ts

您当前的命令是以一半的速率将每个 TS 转码为 CFR,但您的源时间戳有一些抖动,因此由于 PTS 量化,会出现不匹配。单个文件转码将最小化它。

关于ffmpeg - 转码 ts 后的持续时间变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43712887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com