音视频基本概念
2023-12-27 13:46:15
多线程好处
充分利用cpu资源的工具
多线程带来的问题
?多线程管理问题
线程的互斥与同步
互斥
资源 有限多个人去抢
同步
有序进行
锁的种类
读写锁 读写分离
自旋锁 等待资源释放(例如)
可重入锁
SDL锁
互斥锁
SDL_CreateMutex/SDL_DestroyMutex
SDL_LockMutex/SDL_UnlockMutex
信号量
SDL_CreateCond/SDL_DestroyCond
SDL_CondWait/SDL_CondSignal
使用锁
typedef struct _PacketQueue{
AVPacketList *first_pkt, *last_pkt;
int nb_packets;
int size;
SDL_mutex *mutex;
SDL_cond *cond;
}PacketQueue;
基本概念
pts:Presentation timestamp? 展示音频和视频时间戳 最终渲染也是根据这个时间戳
dts: Decoding timestamp 解码时间戳?
I帧 (关键帧 帧内压缩)
p帧(向前参考帧 帧间压缩 只记录前一帧变化的部分)
B帧(帧间压缩 记录前一帧和后一帧的差别 可参考前后几帧 )
实际帧顺序 I B B P?
存放顺序 I P B B
解码时间戳 1423
展示时间戳1234
有b帧的时候pts和dts不一致 无b帧的时候pts和dts是一致的
从哪获取pts
AVpacket 中的pts
AVFrame中的pts
? av_frame_get_best_effort_timestamp()
时间基
tbr: 帧率
tbn: time base of stream 流的时间基
tbc: time base of codec 解码时间基
计算当前帧的pTS
PTS = PTS * av_q2d(video_stream->time_base)
下一帧
video_clockl: 预测的下一帧的pts
frame_delay: 1/ tbr
video_clock:音频当前播放的时间戳
音视频同步方式
视频同步到音频
音频同步到视频
音视频同步到外部时钟
视频同步到音频思路
一般的做法,展示第一帧视频帧后获得要显示的下一个视频帧的PTS 然后设置一个定时器,当定时器超时后,刷新新的视频帧,如此反复操作
文章来源:https://blog.csdn.net/weixin_38432324/article/details/135158202
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!