<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenquangobeijing的专栏]]></title><description><![CDATA[流媒体、音视频开发]]></description><link>https://blog.youkuaiyun.com/chenquangobeijing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenquangobeijing]]></copyright><item><title><![CDATA[[ffmpeg系列] 从应用的角度学习ffmpeg]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136307625</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136307625</guid><author>chenquangobeijing</author><pubDate>Mon, 26 Feb 2024 20:14:27 +0800</pubDate><description><![CDATA[[ffmpeg系列 01] ffmpeg命令行-优快云博客[ffmpeg系列 02] 音视频基本知识-优快云博客[ffmpeg系列 03] 文件、流地址（视频）解码为YUV_ffmpeg 视频文件解码为yuv文件-优快云博客[ffmpeg系列 04] YUV编码H264，以及推流_[ffmpeg系列 04] yuv编码h264,以及推流-优快云博客[ffmpeg系列 05] 录音、声音直播(音频推流)_ffmpeg录音 csdn-优快云博客[ffmpeg系列 06] 摄像头直播-优快云博客[ff]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 07] 音视频同步，面试经常被问]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136237630</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136237630</guid><author>chenquangobeijing</author><pubDate>Thu, 22 Feb 2024 18:35:33 +0800</pubDate><description><![CDATA[面试问题，特别是你做客户端开发1 如何进行音视频同步？2 如果视频有延时怎么做？3 如果声音有延时怎么做？...]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 10] 总结即序言]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136184935</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136184935</guid><author>chenquangobeijing</author><pubDate>Tue, 20 Feb 2024 10:45:40 +0800</pubDate><description><![CDATA[ffmpeg命令行可以作为验证问题的工具，比如，用代码有问题，命令行是好的。ffmpeg的格式和协议，都是按照标准的国际文档，RFC文档等实现的。转码，音频重采样，是比较重要的，请参考example。1 先熟悉ffmpeg命令行，大概知道它有那些功能。a 流程，函数调用顺序。编码，解码，转码等都有流程。答：已学习C语法，已接触音视频开发，初级程序员。答：编码、解决问题的能力需要一个过程，需要积累。3 项目出问题，能找到在那，并解决。这个过程需要你自己独立完成，走过。b 函数参数，重要的结构体等。]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 09] 添加水印，学习filter的使用]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136042729</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/136042729</guid><author>chenquangobeijing</author><pubDate>Mon, 05 Feb 2024 17:43:41 +0800</pubDate><description><![CDATA[ffmpeg版本5.1.2，dll是：ffmpeg-5.1.2-full_build-shared。新建win32工程，复制这三个文件。设置ffmpeg库的include和lib目录。的代码基础上添加的，直接存yuv文件，验证添加水印是否生效。最基本的知识：需要解码的，图片是叠加在YUV上的，然后在编码。有的视频，叠加水印，不成功。用命令行试，是可以的。限制了视频编码前的格式是yuv420p?代码是windows端，用VS编译。]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 08] 硬编（Intel、Invidia）]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135773288</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135773288</guid><author>chenquangobeijing</author><pubDate>Tue, 23 Jan 2024 16:06:46 +0800</pubDate><description><![CDATA[2 移动端硬编，比如用手机直播。会受限于android系统，android版本低，FrameWork框架层不支持硬编。b 编码器替换成h264_nvenc、使用hw_frames_ctx。ffmpeg版本5.1.2，dll是：ffmpeg-5.1.2-full_build-shared。INTEL_QSV cpu是intel就行，输入YUV格式要求NV12。答：避免了CPU和GPU之间的数据拷贝，提高了编码效率。代码在[系列04]编码的基础上改的。即hw_frames_ctx的作用？什么时候会用到硬编？]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 06] 摄像头直播]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135660290</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135660290</guid><author>chenquangobeijing</author><pubDate>Wed, 17 Jan 2024 21:05:13 +0800</pubDate><description><![CDATA[(我不确定它们是不是使用的rtmp，抓包看走的tcp。4  Frame的pts：调用av_packet_rescale_ts，ffmpeg已内部计算好。版本5.1.2，dll是：ffmpeg-5.1.2-full_build-shared。正确的音视频同步大概是：1个视频，2个音频。因为一般视频是25帧，音频有50帧。答：mjpg格式，同分辨率的YUV422P，帧率低。代码是在系列 05上加的，这个demo可以作为直播的demo。导致的问题：音视频一开始是同步的，过了十几分钟后，音频落后了。]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 05] 录音、声音直播(音频推流)]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135513213</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135513213</guid><author>chenquangobeijing</author><pubDate>Wed, 10 Jan 2024 21:15:39 +0800</pubDate><description><![CDATA[版本5.1.2，dll是：ffmpeg-5.1.2-full_build-shared。3  swr_convert转换前的音频数据：可以用不同操作系统的音频库函数替代。答：av_read_frame、解码后的、swr_convert转换后的数据等。采集音频数据用的dshow，声卡名称一般是中文，需要转换。5  编码AAC，帧长度要求是1024，编码前的格式是FLTP。S16、FLTP格式区别，可以参考系列 02讲的。8   AAC有头，直接写编码后的数据，播不了。：是采样点的个数，<  不是字节数。]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 04] YUV编码H264，以及推流]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135433884</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135433884</guid><author>chenquangobeijing</author><pubDate>Mon, 08 Jan 2024 10:37:46 +0800</pubDate><description><![CDATA[avformat_new_stream的参数从m_pVideoEncodeCodecCtx获取的，参数必须赋值，否则avformat_write_header返回负值。sps的nalu type =7, pps的nalu type = 8，I帧的nalu type=5。2 对比YUV文件和H264文件，计算一下大小之比，对H264压缩率有一个直观的认识。答：起始码0x00 0x00 0x00 0x01或者0x00 0x00 0x01。如果没有进行缩放，yuv的宽高和h264宽高是一样的。]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 03] 文件、流地址（视频）解码为YUV]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135348797</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135348797</guid><author>chenquangobeijing</author><pubDate>Tue, 02 Jan 2024 20:21:36 +0800</pubDate><description><![CDATA[H264有记录编码前的YUV采样格式，chroma_format_idc，在sps里。如果没有这个字段，说明该字段用的默认值1，即yuv 4:2:0。流地址(RTMP、HTTP-FLV、RTSP等)：信令完成后，才进行音视频传输。ffmpeg版本5.1.2，dll是：ffmpeg-5.1.2-full_build-shared。)，音频：1/48000(1/采样频率)。如果YUV的采样格式是yuv 4:2:0，也不要求缩放，不需要sws_scale。接流的在实际中的应用：1 展示，播放。]]></description><category></category></item><item><title><![CDATA[[ffmpeg系列 02] 音视频基本知识]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135329587</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/135329587</guid><author>chenquangobeijing</author><pubDate>Mon, 01 Jan 2024 22:11:22 +0800</pubDate><description><![CDATA[Planar(平面的，带P)是左右声道分开存储，左声道data[0]，右声道data[1]。YUV大小：宽*高*1.5，Y占大小：宽*高，U占大小：宽*高/4，UV一样大。编码AAC：比如S16，双通道，一帧PCM数据字节数：1024。B帧是帧间编码，双向预测，依赖于I帧或前面、后面的P帧。播放带B帧的视频：需要把B帧后面的P帧解码了，再播放。不带P，交错排序LRLR，data[0]，比如S16。P帧是帧间编码，前向预测，依赖于I帧或前面的P帧。I帧是帧内编码，能独立解码成功。取值范围：0-256。]]></description><category></category></item><item><title><![CDATA[WebRTC的RTP扩展头、RTCP包]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/131015458</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/131015458</guid><author>chenquangobeijing</author><pubDate>Sat, 03 Jun 2023 00:31:49 +0800</pubDate><description><![CDATA[MSW+LSW=NTP timestamp，各4字节，Most significant word，Least，音频5000ms：media_config.audio.rtcp_report_interval_ms。One-Byte Header：0xbede 2字节、length 2字节—扩展头的个数、Sender ssrc：ssrc of sender：自己那端rtp流ssrc。packet count:4字节，octet count:4字节。sender ssrc：是自己那端rtp流的ssrc。]]></description><category></category></item><item><title><![CDATA[WebRTC的Pacing]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/130465407</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/130465407</guid><author>chenquangobeijing</author><pubDate>Tue, 02 May 2023 18:51:51 +0800</pubDate><description><![CDATA[作用：匀速发送数据，主要是视频。I帧和P帧的大小不一样，I帧拆分的RTP包多些，匀速发送。]]></description><category></category></item><item><title><![CDATA[WebRTC Probe 探测码率、transport-cc作用]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/129972013</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/129972013</guid><author>chenquangobeijing</author><pubDate>Wed, 05 Apr 2023 20:12:08 +0800</pubDate><description><![CDATA[为什么需要探测带宽？答：拥塞控制的AIMD算法，加法增加太慢了，网络很好的时候，需要很快探测到最大带宽。]]></description><category></category></item><item><title><![CDATA[对接GB28181厂家平台的思考]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/129628526</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/129628526</guid><author>chenquangobeijing</author><pubDate>Wed, 22 Mar 2023 17:46:56 +0800</pubDate><description><![CDATA[在两家安防公司呆过，中间隔了几年。第一家的架构第二家的架构第一家，算法拉rtsp流，会慢几秒。因为转码服务器和RTSP服务器多了一个rtsp推流。几秒对算法结果没有影响。其它客户端拉rtsp流，打开慢，影响用户体验。轮询上大屏，效果也不好。客户端和信令服务器可以走私有协议，是内部使用。走sip信令，信令服务器要转发sip，加大了开发的量，from和to都要改等。ZLMediaKit是http服务器，向wvp定时发送服务器的Keepalive信息。]]></description><category></category></item><item><title><![CDATA[回顾用过的开源库：mediastream2和ortp]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/129628462</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/129628462</guid><author>chenquangobeijing</author><pubDate>Fri, 17 Mar 2023 22:56:33 +0800</pubDate><description><![CDATA[一 mediastream2一 mediastream2特点：由一系列不同功能的Filter，即MSFilter，按照需要连接Link起来。Run起来。Filter照着模板写，注册上去。跟ffmpeg类似。音频filter，视频filter，各一个线程。项目经验：有遇到接收音视频数据报错--没有数据，是其中一个filter阻塞了，该功能太耗时了，而不是ortp库有问题。]]></description><category></category></item><item><title><![CDATA[WebRTC拥塞控制：发送端基于延时----学习记录]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128904749</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128904749</guid><author>chenquangobeijing</author><pubDate>Mon, 06 Feb 2023 21:05:47 +0800</pubDate><description><![CDATA[基于延时得出的码率：SendSideBandwidthEstimation::UpdateDelayBasedEstimate(的delay_based_limit_。]]></description><category></category></item><item><title><![CDATA[WebRTC SDP协议--新属性]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128874444</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128874444</guid><author>chenquangobeijing</author><pubDate>Fri, 03 Feb 2023 21:01:53 +0800</pubDate><description><![CDATA[6 payload 96的重传流是97，96的ssrc是3793049148，97是2533540925。描述不了的情况：ssrc对应的编码格式不同，一个H264、一个H265，放到一个m描述就有问题。非交错：Type是[1-23, 24, 28]、STAPA是24，FU-A是28。webrtc的视频会议：标准的，音视频、rtcp都是一个端口，通过ssrc区分。2 a=rtcp-mux    //端口复用，rtp和rtcp是同一个。传统的视频会议：音视频走不同端口，不带ssrc，通过端口区分。]]></description><category></category></item><item><title><![CDATA[线程、进程同步与互斥--在实际项目中的使用]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128856628</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128856628</guid><author>chenquangobeijing</author><pubDate>Fri, 03 Feb 2023 00:08:54 +0800</pubDate><description><![CDATA[⾃旋锁是通过CPU提供的CAS函数(Compare And Swap)，在⽤户态完成加锁和解锁操作，不会主动产⽣线程上下⽂切换，所以相⽐互斥锁来说，比如：解码时取数据，push和pop队列，都需要加锁。自旋锁：linux内核的epoll实现中有用，应用开发很少用，或者我孤陋寡闻，不知道。比如：线程A，接收所有设备信息，接收完了，通知线程B展示，可以用事件。进程互斥的原则：空闲让进，忙则等待，有限等待，让权等待。上下切换的耗时，⼤概在⼏⼗纳秒到⼏微秒之间，别人统计的。操作系统讲的PV操作就是用的信号量。]]></description><category></category></item><item><title><![CDATA[H264编码一些名词概念和疑问]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128836341</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128836341</guid><author>chenquangobeijing</author><pubDate>Wed, 01 Feb 2023 18:22:41 +0800</pubDate><description><![CDATA[帧分组算法：在相邻几幅图像画面中，一般有差别的像素只有10%以内的点，亮度差值变化不超过2%，而色度差值的变化只有1%以内，我们认为这样的图可以分到一组。blocking artifact：随着码率的降低，量化变得粗糙，块的边界出现不连续，形成重建图像。基于机器学习的模型设计的，依靠多种指标，比如：1 视觉信息保真度，2细节丢失指标，3运动量等。在H.264中，亮度分量的MV最高可达1/4像素精度，色度分量的MV最高可达1/8像素精度。运动估计：不同算法的搜索，计算宏块不同类型的值，选最优值。]]></description><category></category></item><item><title><![CDATA[H264/AVC 句法和语义--重要的字段、带截图]]></title><link>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128827683</link><guid>https://blog.youkuaiyun.com/chenquangobeijing/article/details/128827683</guid><author>chenquangobeijing</author><pubDate>Wed, 01 Feb 2023 11:06:55 +0800</pubDate><description><![CDATA[mb_skip_run：cavlc跳过的个数，mb_skip_flag：使用cabac时，宏块是否跳过。transform_size_8x8_flag：为1，预测残差按照8x8像素块进行解码。pic_order_cnt_type=0：只对POC低位编码传输。disable_deblocking_filter_idc：去块滤波器。first_mb_in_slice：重要，第一个宏块在整帧中的位置。frame_mbs_only_flag：=1只含帧宏块。SPS中有一个pic_order_cnt_type决定。]]></description><category></category></item></channel></rss>