美文网首页FFmpeg精华技术干货
ffmpeg # 各种封装格式的time_base

ffmpeg # 各种封装格式的time_base

作者: FlyingPenguin | 来源:发表于2019-03-28 07:17 被阅读73次

封装层的time_base

image.png
ffmpeg code
  • TS
    mpegts.c中:
    avpriv_set_pts_info(st, 33, 1, 90000);

mpegtsenc.c中

        avpriv_set_pts_info(st, 33, 1, 90000);
  • mp4
    mov.c中
    avpriv_set_pts_info(st, 64, 1, sc->time_scale);

其出处:

static int mov_read_mdhd(MOVContext *c, AVIOContext *pb, MOVAtom atom)

{
...
    sc->time_scale = avio_rb32(pb);
    if (sc->time_scale <= 0) {
        av_log(c->fc, AV_LOG_ERROR, "Invalid mdhd time scale %d, defaulting to 1\n", sc->time_scale);
        sc->time_scale = 1;
    }
...
}

movenc.c中

        avpriv_set_pts_info(st, 64, 1, track->timescale);

  • flv
    flvdec.c中
    avpriv_set_pts_info(st, 32, 1, 1000); /* 32 bit pts in ms */

flvenc.c中

        avpriv_set_pts_info(s->streams[i], 32, 1, 1000); /* 32 bit pts in ms */

  • mkv
    matroskadec.c中
        avpriv_set_pts_info(st, 64, matroska->time_scale * track->time_scale,
                            1000 * 1000 * 1000);    /* 64 bit pts in ns */

matroskaenc.c

    for (i = 0; i < s->nb_streams; i++) {
        // ms precision is the de-facto standard timescale for mkv files
        avpriv_set_pts_info(s->streams[i], 64, 1, 1000);
    }

可见 mux时,ffmpeg的输出 mkv的time_base为{1, 1000}

协议或例子
  • TS
image.png
image.png

TS格式的pts和dts单位是90000

  • flv
image.png

flv的时间戳单位为ms

  • mp4


    帧率
image.png image.png image.png

References:

https://blog.csdn.net/zhuweigangzwg/article/details/64919706
https://www.jianshu.com/p/bf323cee3b8e
https://blog.csdn.net/achang21/article/details/77890961
http://www.samirchen.com/ffmpeg-tutorial-7/
https://blog.csdn.net/TopsLuo/article/details/77981732
https://blog.csdn.net/peckjerry/article/details/48344389

相关文章

  • ffmpeg # 各种封装格式的time_base

    封装层的time_base ffmpeg code TSmpegts.c中: mpegtsenc.c中 mp4mo...

  • time_base 理解

    time_base AVStream的time_base的单位是秒。每种格式的time_base的值不一样,根据采...

  • 时间戳

    ffmpeg time_base详解[https://blog.csdn.net/peckjerry/articl...

  • ffmpeg h264文件和裸流 封装mp4

    ffmpeg命令行: 实现代码参考雷神的 最简单的基于FFmpeg的封装格式处理 和ffmpeg封装H246为MP...

  • FFMEPG音视频编解码

    1. FFMPEG 1.1基本组成: AVFormat: 封装模块,媒体封装/解封装格式,RTMP/RTSP/MM...

  • FFmpeg 音视频编解码框架(五)

    FFmpeg模块介绍: ibavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上...

  • ffmpeg 基本用法

    ffmpeg主要组成部分 1、libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生...

  • FFmpeg小白学习记录(一)信息查看

    FFmpeg libavformat 用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构...

  • FFmpeg编码支持与定制

    FFmpeg本身支持一些音视频编码格式、文件封装格式与流媒体传输协议,但是支持的数量仍然有限,FFmpeg所做的只...

  • 2018-07-27 FFmpeg基本组成

    FFmpeg的基本组成 libavformat:包含多种多媒体容器格式的封装、解封装工具 libavcodec:用...

网友评论

    本文标题:ffmpeg # 各种封装格式的time_base

    本文链接:https://www.haomeiwen.com/subject/ikgwmqtx.html