基于FFmpeg的视频播放器之十五:录像

Posted 草上爬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于FFmpeg的视频播放器之十五:录像相关的知识,希望对你有一定的参考价值。

一.效果

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

以上是关于基于FFmpeg的视频播放器之十五:录像的主要内容,如果未能解决你的问题,请参考以下文章

基于FFmpeg的视频播放器之十二:seek

基于libVLC的视频播放器之十五:添加播放列表

基于FFmpeg的视频播放器之十六:完结

基于FFmpeg的视频播放器之十三:抓图

基于FFmpeg的视频播放器之十一:倍速播放

基于libVLC的视频播放器之十六:完结