
流媒体
mikejson
记录学习和工作中的点点滴滴。
展开
-
使用arecord、aplay命令实现音频的采集和播放
arecord 采集原始音频arecord -r 8000 -t raw -c 1 -f S16_BE ./testaplay 播放原始音频aplay -t raw -r 8000 -f S16_BE -c 1 test参数说明:-r 采样频率 8000 48000 44100等-t 录音文件类型 voc, wav, raw or au-c 声道数,1:单声道;2:双声道-f 采样格式,S16:16位; BE: 大端 ; LE: 小端最后是 文件路径注意:播放异常时,..原创 2022-04-22 15:48:08 · 6982 阅读 · 0 评论 -
kcp使用中出现的异常退出问题
程序使用KCP协议,代码使用的多线程循环调用ikcp_update(kcp, millisec); 不定期会出现异常退出问题,经过调试每次停在void ikcp_flush(ikcpcb *kcp)函数中,经过反复调试问题在for(p=kcp->snd_buf.next; p!=&kcp->snd_buf; p=p->next)函数中,p指针和p->next指针指向是同一个地址,导致无限循环。后改为单线程,使用定时器驱动后正常。...原创 2021-05-19 16:02:33 · 570 阅读 · 0 评论 -
判断H264 Keyframe实现
bool h264_is_keyframe(const char buffer, int len) {if(!buffer || len < 6)return FALSE;/ Parse H264 header now */uint8_t fragment = *buffer & 0x1F;uint8_t nal = (buffer+1) & 0x1F;if(fragment == 7 || ((fragment == 28 || fragment == 29) &原创 2021-05-12 13:58:56 · 515 阅读 · 0 评论 -
RTP协议报文
RTP数据传输协议RTP报头的格式如下。每个RTP数据包都包含特定数据源标识符前的12个字节。仅当混合器插入CSRC标识符时,RTP数据包包含该标识符。各字段的长度和含义如下:RTP报头格式V(Version): 2位。定义RTP版本号,当前版本号为2.0P (Padding) : 1位。该位置1时,数据包的尾部有一个或多个补充字节(Padding Octet)。补充字节不是净荷的组成部分。最后一个补充字节包含应该勿略的字节数。具有固定块长度的某些加密算法或底层协议的数据单元要携带多个RTP数据包原创 2021-05-06 09:46:44 · 1845 阅读 · 0 评论 -
h264_qsv
在ffmpeg硬件编解码中经常使用到h264_qsv。ffplay播放的命令:ffplay -vcodec h264_qsv 文件/URL。在ffmpeg的demo有这样一段关键代码:ret = avcodec_send_packet(decoder_ctx, pkt);if (ret < 0) {fprintf(stderr, “Error during decoding\n”);return ret;}ret = avcodec_receive_frame(decoder_ctx,原创 2021-05-02 23:04:29 · 3152 阅读 · 0 评论