一.效果
1.录制视频
2.播放录制的视频
二.原理
将上一篇基于FFmpeg的视频播放器之十四:remuxing中的代码直接用于录像是行不通的,会存在下列问题。
1.因为可以从任意时间点开始录制,此时第一帧的时间戳就不是0了,虽然也可以生成视频文件,但是经测试该视频文件爱奇艺客户端可以正常播放,PotPlayer和windows自带的播放器都不能正常播放
解决方法是让录制的第一帧时间戳从0开始,这里以视频为例,音频同理:
int64_t m_firstVideoPts=0
int64_t m_firstVideoDts=0
void doRecord(AVPacket *packet)
{
AVPacket tempPacket;
av_init_packet(&tempPacket);
av_packet_ref(&tempPacket, packet);
if(!m_firstVideoPts)
{
m_firstVideoPts=tempPacket.pts