gpt4 book ai didi

ffmpeg - 在转码为 mpegts 时,ffmpeg 在 1.48 秒延迟后创建第一帧

转载 作者:行者123 更新时间:2023-12-04 22:55:45 25 4
gpt4 key购买 nike

我已使用以下命令将文件转码为 mpegts

 ./ffmpeg -y -i big_buck_bunny_720p_5mb.mp4  -vcodec libx264  -x264opts "keyint=48:min-keyint=48:no_scenecut" -r 23.976 -c:a copy  -f mpegts test.mpegts

当我在它上面运行 ffprobe -
./ffprobe  -i  test.mpegts  -select_streams v -show_frames -of csv

我看到第一帧从 1.48 秒开始,为什么会这样?
Input #0, mpegts, from 'test.mpegts':
Duration: 00:00:29.61, start: 1.483422, bitrate: 1964 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x101](und): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, 5.1, fltp, 406 kb/s
frame,video,0,1,133508,1.483422,133508,1.483422,133508,1.483422,3753,0.041700,564,112008,1280,720,yuv420p,1:1,I,0,0,0,0,0
frame,video,0,0,137262,1.525133,137262,1.525133,137262,1.525133,3753,0.041700,125584,1110,1280,720,yuv420p,1:1,B,2,0,0,0,0

经过一番研究,我在命令中添加了“muxdelay 0”
./ffmpeg -y -i big_buck_bunny_720p_5mb.mp4  -vcodec libx264  -x264opts "keyint=48:min-keyint=48:no_scenecut" -r 23.976 -c:a copy  -muxdelay 0 -f mpegts test.mpegts

现在我在 ffprobe 中得到以下信息
Input #0, mpegts, from 'test.mpegts':
Duration: 00:00:29.61, start: 0.083422, bitrate: 1987 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x101](und): Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, 5.1, fltp, 406 kb/s
frame,video,0,1,7508,0.083422,7508,0.083422,7508,0.083422,3753,0.041700,564,112008,1280,720,yuv420p,1:1,I,0,0,0,0,0
frame,video,0,0,11262,0.125133,11262,0.125133,11262,0.125133,3753,0.041700,125584,1110,1280,720,yuv420p,1:1,B,2,0,0,0,0

任何人都可以帮助我了解导致 1.4 秒延迟的 muxdelay 是什么,以及导致剩余 0.08 秒延迟的原因是什么。

当输出为 mp4 时,第一帧为 0.000,所以这是 mpegts 特有的。

最佳答案

我有完全相同的问题。
似乎 0.08 偏移量是一个名为 Avoid_negative_ts 的选项的结果。默认值为“auto”,对于 mpegts,这等于“make_non_negative”值。通过使用“禁用”值,偏移量消失了。

引用:

  • https://www.ffmpeg.org/ffmpeg-formats.html#toc-Format-Options
  • mpegts 的避免_negative_ts 自动值:https://github.com/FFmpeg/FFmpeg/blob/fa8308d3d4f27d6fb38ac2069887a7b259f1c6ab/libavformat/mux.c#L468
  • 偏移量计算:https://github.com/FFmpeg/FFmpeg/blob/fa8308d3d4f27d6fb38ac2069887a7b259f1c6ab/libavformat/mux.c#L694
  • 关于ffmpeg - 在转码为 mpegts 时,ffmpeg 在 1.48 秒延迟后创建第一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44565968/

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