gpt4 book ai didi

ffmpeg - 为什么在 MP4/AVC 容器文件中指定多个时间刻度?

转载 作者:行者123 更新时间:2023-12-04 07:28:00 24 4
gpt4 key购买 nike

我目前正在解析一个 MPEG-DASH 流初始化段(由 FFMPEG 生成),我注意到在我的文件中的多个不同位置指定了时间刻度:

  • 在电影头框(mvhd)中:1000
  • 在我的视频轨道(mdhd)的媒体标题框中:15360
  • 在 AVC 配置框 (avcC) 中,更准确地说是在序列参数集 NAL 单元的 VUI 部分:60

为什么它在这么多不同的地方被指定?为什么他们有不同的值(value)观?这些值有等级吗?例如,60 会覆盖 15360 还是 15360 会覆盖 1000?

这是我用来生成我正在查看的文件的命令:

ffmpeg -f v4l2 -pixel_format yuyv422 -vcodec rawvideo -framerate 30 -video_size 640x360 -i /dev/video0 \
-f dash -remove_at_exit false -use_template true -use_timeline true -streaming true -window_size 5 -extra_window_size 5 -seg_duration 5 -vcodec libx264 -b:v 1M -maxrate 1M -bufsize 2M -pix_fmt yuv420p -r 30 -s 640x360 -aspect 16:9 /var/www/html/media/live.mpd

最佳答案

In the movie header box (mvhd): 1000

这是电影时间刻度。用于编辑列表条目的持续时间字段等地方。

In the media header box of my video track (mdhd): 15360

这是赛道时间表。这用于编辑列表条目中的示例时间戳字段和 stts、stss、ctts 框中的持续时间字段。 ffmpeg(和其他应用程序)将根据这个时间尺度生成时间戳。

In the AVC Configuration box (avcC) more precisely in the VUI section of the sequence parameter set NAL unit: 60

这是编码器时基。编码器使用在此时基中命名的时间戳来进行速率控制。这是 ffmpeg 显示的 tbc 值。这是比特流内部的,容器不会理会它。

关于ffmpeg - 为什么在 MP4/AVC 容器文件中指定多个时间刻度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68118981/

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