社区
多媒体/流媒体开发
帖子详情
MP4时间戳
w313460076
2012-07-18 10:14:24
MP4文件封装avc aac,想了解下视频的pts是怎么得出的,
MP4的avc数据被封装在sample里边,那么对应帧的pts是如何计算的呢
谢谢
...全文
871
4
打赏
收藏
MP4时间戳
MP4文件封装avc aac,想了解下视频的pts是怎么得出的, MP4的avc数据被封装在sample里边,那么对应帧的pts是如何计算的呢 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
u010652651
2013-05-11
打赏
举报
回复
丢帧怎么办?
国安小弟
2013-04-24
打赏
举报
回复
MP4当中的时间戳,这里说视频吧,就是VPTS 1.先要拿到视频流的帧率,然后变成倒数,得到一帧播放的时间 2.用这个时间乘以timescale 3.然后根据每个sample累加计算,写一行代码就算出来啦
zoulie
2012-07-31
打赏
举报
回复
音视频同步的话,时间戳是在编码时候打的,
ArcRain
2012-07-18
打赏
举报
回复
MP4的文件头有时间索引的,记录了每个sample所占的时间,累加应该就可以了。
如果是裸的AVC视频流,其PTS可以根据视频帧率来计算。
音视频
时间戳
修复工具V1.0
可修复flv等媒体格式
时间戳
错乱,视频时长不对等问题。
时间戳
是什么?.
mp4
时间戳
:区块链通过
时间戳
保证每个区块依次顺序相连,
时间戳
使区块链上每一笔数据都具有时间标记。简单来说
时间戳
证明了区块链上什么时候发生了什么事情且任何人无法篡改,
时间戳
在区块链中扮演公证人的角色,而且比传统的公证制度更为可信,因为区块链上记录的信息无法被任何人以任何形式修改。因为应用了
时间戳
区块链技术很适合用知识产权保护等领域。
FastAdmin中Composer的使用和讲解
示例1:学习更新更了FastAdmin所有可更新的包到最新版 示例2:讲解了FastAdmin怎么安装think-helper
时间戳
操作包 示例3:讲解了FastAdmin中如何引入使用已下载的包 FastAdmin中Composer波浪号和插入符号的作用和...
GoPro-Timestamp:这些项目使用 Python 和 OpenCV 为 GoPro 视频添加
时间戳
GoPro-
时间戳
这些项目使用 Python 和 OpenCV 为 GoPro 视频添加
时间戳
。 有关脚本如何工作的更多信息,请访问: : 这个基本函数有几种不同的迭代。 基本脚本是 GoPro_timestamp.py。 GoPro_timestamp_filewalker 为批处理视频添加了额外的功能。 来自外部来源的数据可以添加到视频中,使用 GoPro_timestamper_w_external_data.py 提供基本的抬头显示。 最后最后一个python文件结合了外部数据功能和批处理功能。
封装h264,/mpeg4 为
MP4
文件
封装了开源工程,
mp4
v2, mpeg4ip代码, /******************************************/ /* Name:
Mp4
Interface.h /* Mark:
mp4
封装解析接口 /* author: machh /* date:2012.5.12. /******************************************/ #ifndef _
MP4
_INTERFACE_ #define _
MP4
_INTERFACE_ #include "
MP4
Writer.h" #include "
MP4
Reader.h" typedef struct _tagPACKET_HEADER_ { _tagPACKET_HEADER_() { nType = 0; nLen = 0; nTime = 0; } unsigned long nTime; // 不依赖于I帧的参考时间 int nLen; // 不包括该头结构本身大小 int nType; }PACKET_HEADER; enum FILE_OPEN_MODEL { OPEN_MODEL_W, // 写文件 OPEN_MODEL_R // 读文件 r+b }; class
Mp4
Interface { public:
Mp4
Interface(void); ~
Mp4
Interface(void); public: /* * @mark 打开文件 * @param[in] nModel文件打开方式,如果nModel为OPEN_MODEL_W 则创建文件 * @param[in] nMediaType 值为
MP4
_VIDEOTYPE_H264/
MP4
_VIDEOTYPE_MPEG4 * @return 操作结果 */ int OpenFile(const char* strPath, FILE_OPEN_MODEL nModel, int nMediaType ); /* * @Name:Close * @mark: 读写操作结束之后,必须调用此函数 */ int Close(); public: //写操作 /* * @mark: 添加视频轨道 * @param[out] nTrackId 轨道ID * @param[in] nWidth,nHeight 画面宽高 * @param[out] fps 帧率 */ int AddVideoTrack (int& nTrackId, const int nWidth, const int nHeight, const double fps ); /* * @mark: 写一帧数据 * @param[in] lpData 要写入的数据 * @param[in] nSize 要写入的数据大小 * @param[in] nTimestamp
时间戳
*/ BOOL WriteFrame( const int nTrackId, const uint8_t* const lpData, const int nSize, const
MP4
Timestamp nTimestamp, const
MP4
Duration nDuration = -1 ); /* * @mark: 添加音频轨道 aac * @param[out] nTrackId * @param[in] nSamplePerSec (timescale) */ int AddAudioTrack( int& nTrackId, const int nSamplePerSec, const int nSamplePerFrame = -1 ); public: //读操作 /* * @mark : 全局函数,读取整个
MP4
文件结构信息, * 函数内部会fopen/fclose,该函数应当在OpenFile之前调用 * @param[in] strFile 文件路径 * @param[out] lsTrackInfo 输出文件信息结构 */ bool static Get
MP4
FileInfo( const char* strFile,
MP4
_TRACKINFO_LIST& lsTrackInfo ); /* * @mark:SetReadTrackId设置轨道ID, */ int SetReadTrackId( int nTrackID ); /* * @mark:获取轨道信息,该函数必须在OpenFile(……)之后调用才有效 */ int GetTrackInfo(
MP4
_TRACK_INFO* pstTrackInfo ); /* * @mark: 读取一帧数据 */ int ReadFrameData( DWORD nSampleId, BYTE** ppFrame, DWORD* pnBufSize,int& nFrameType ); protected: int m_nOpenModel; int m_nMediaType; C
MP4
Writer * m_p
Mp4
Writer; C
MP4
Reader * m_p
Mp4
Reader; }; #endif// end
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章