目录 分析ffmpeg源码 分析问题 修改源码解决问题 分析ffmpeg源码 分析问题 mpegtsenc.c 找到发送PAT.PMT的函数 /* send SDT, PAT and PMT tables regularly */ static void retransmit_si_info(AVFormatContext *s, int force_pat, int64_t dts) { MpegTSWrite *ts = s->priv_data; int i; if (++ts->sdt…
一 从TS流开始 从MPEG-2到DVB,看着看着突然就出现了一大堆表格,什么PAT.PMT.CAT……如此多的表该怎样深入了解呢? 我们知道,数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等信息.因此,我们首先需要了解TS流是什么,以及TS流是怎样形成.有着怎样的结构. (一)TS流.PS流.PES流和ES流都是什么? ES流(Elementary Stream…
aa 将mkv中的音视频复用成ts流: ffmpeg -i 32_mkv_h264_718x480_ac3.mkv  -codec copy -bsf:v h264_mp4toannexb  -f mpegts xx.ts ffmpeg -i 01_mp4con_mpeg4_320x240_aac.mp4  -codec copy   -f mpegts xx.ts 7 %a mpegtsenc.c /home/yingc/gcyin/test/thirdparty/ffmpeg/ffmpeg-…
如果SetTimer的时间间隔为t,其响应事件OnTimer代码执行一遍的时间为T,且T>t.这样,一次未执行完毕,下一次定时到,这时候程序会如何执行? 可能的情况:1.丢弃还未执行的代码,开始新的执行:2.不丢弃,Timer消息进入消息队列排队,等到原来的代码执行完毕后,马上开始新的执行:3.重入,就是原来的还继续执行,同时又开始一个新的执行: 答案:第二个,或者,第一个丢弃.不过丢弃的情况是, 消息队列满了, 第二次的消息没进去. void COnTimer1Dlg::OnTimer(UIN…
先贴上错误信息,便于搜索引擎采集,也送给遇到此问题的技术朋友们. smtp 501 Syntax error (no parameters allowed) (#5.5.4) 背景描述: 使用TCP发送邮件,在使用新浪邮箱进行smtp发送邮件时报出该错误(其他邮箱可能也存着该问题),QQ邮箱无该问题. ======================================================== 发送邮件其实很简单,对于像鄙人这种极限追求精简的人来说,肯定不乐意使用第三方邮件插…
当测试客户端发送json数据给服务器时,找不到响应路径? 原来是参数类型不符,即使是json也要考虑参数的个数和类型 解决:将age请求参数由"udf"改为"3"或任意数字即可…
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42950733          BUG 一:padding导致其他控件宽度计算错误 今天在写项目的一个布局时,用到了最常用的相对布局属性padding:在一个纵向容器里,给其中的各个子元素设置了padding属性来做相对布局.但是出现了很奇怪的现象:容器的最后一个元素本应该在最底部,但是实际却留出了一部分空白. 实际上这个bug早在我写仿酷狗时就遇到了,当时没有很注意,…
利用vs2012编译ffmpeg出现以下错误: libavdevice/avdevice.c(38) : error C2059: 语法错误:“.” libavdevice/avdevice.c(40) : error C2059: 语法错误:“,” libavdevice/avdevice.c(42) : error C2059: 语法错误:“,” libavdevice/avdevice.c(44) : error C2059: 语法错误:“,” libavdevice/avdevice.c…
因为学校有JavaWeb的课程,所以才接触这方面.最近遇到了个小问题. 先看一段很简单的jsp代码例子 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %> <html> <head> <title>Hello.jsp</title> </head> <body> Welcome…
RF24项目代码分析 头文件 https://github.com/nRF24/RF24/blob/master/RF24.h 源文件 https://github.com/nRF24/RF24/blob/master/RF24.cpp 数据流发送/接收例子 https://github.com/nRF24/RF24/blob/master/examples_linux/streamingData.cpp 函数 bool writeFast(const void* buf, uint8_t le…
下面针对解复用程序详细分析一下PAT,PMT和SDT三类表格的格式. 如下图,四个频道复用 PAT---Program Association Table,节目关联表 .PAT表携带以下信息: (1) TS流ID--- transport_stream_id,该ID标志唯一的流ID(2)节目频道号-- program_number,该号码标志TS流中的一个频道,该频道可以包含很多的节目(即可以包含多个Video PID和Audio PID) (3) PMT的PID--- program_map_…
参考dranger tutorial,本文将介绍如何使用FFmpeg解码音频数据,并使用SDL将解码后的数据输出. 本文主要包含以下几方面的内容: 关于播放音频的需要的一些基础知识介绍 使用SDL2播放音频 数据队列 音频格式的转换 dranger tutorial确实入门FFmpeg比较好的教程,虽然作者在2015年的时候根据新版本的FFmpeg更新了, 但是其中还是有不少API过时了.特别是,教程中使用的是SDL1.0,和现在的SDL2的API也有很大的不同,并且不能兼容. 1. 关于音频的…
花费一些时间,然后全部扔了.为了不忘记和抛砖引玉,特发此贴. ffmpeg解析ts流 1.目的     打算软件方式解析出pat,pmt等码流信息 2.源代码所在位置         下载ffmpeg开源代码,官网http://ffmpeg.org/     具体代码位置libavformat/mpegts.c 3.代码分析 (a)整体分析     mpegts_read_header函数获取ts中节目信息,内部关键代码摘录如下:     seek_back(s, pb, pos);//指向码流…
Hyper fast Audio and Video encoderusage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Getting help: -h -- print basic options -h long -- print more options -h full -- print all options (including all format and code…
之前,我写了使用cmd查看电脑连接过的wifi密码(二)和使用cmd查看电脑连接过的wifi密码(一)但其中的功能不完善,在本次的更新中新增了更多的功能,其实2018/10/24 就更新完成了,一直拖到现在主要是为了验证程序在不同机子上的执行情况并进行修正.(大家在使用过程中有问题可以留言我,我会改进本程序) 注意本软件只用于学习和正当途径,如果有人恶意入侵别人电脑造成财产损失,或个人信息泄露,本作者并不负责.   我这里直接提供代码下载,大家自己研究(我这里没有提供findWIfi.dll需要…
Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... Getting help: -h -- print basic options -h long -- print more options -h full -- print all options (including all format and cod…
背景: 最近参与开发的小程序,涉及到即时消息(IM)发送的功能: 聊天界面如下,通过键盘上的[发送]按钮,触发消息发送功能 问题发现: 功能开发完毕,进入测试流程:测试工程师反馈说: 在Android手机上,在极短的时间内频繁点击键盘上的[发送]按钮,消息会重复发送:IOS上该问题不太明显 本以为是普通的防重复提交问题,于是自然想到通过设定flag/js加锁的方式解决该问题,于是开始优化代码: 项目基本代码: wxml: <input type="text" value=&quo…
在介绍tcp发送函数之前得先介绍很关键的一个结构sk_buff,在linux中,sk_buff结构代表了一个报文: 然后见发送函数源码,这里不关注硬件支持的分散-聚集: /* sendmsg系统调用在TCP层的实现 */ int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t size) { struct iovec *iov; struct tcp_sock *tp = tcp_sk(sk)…
Chkdsk是系统检查磁盘当前状态的一个命令,启动它可以显示磁盘状态.内存状态和指定路径下指定文件的不连续数目.选择“开始→运行”输入“Chkdsk”回车,即可启动Chkdsk,它会自动校验文件并将丢失的链接转换成文件. 更多关于Chkdsk: 基于所用的文件系统,创建和显示磁盘的状态报告.Chkdsk 还会列出并纠正磁盘上的错误.如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态. 语法 chkdsk [volume:][[Path] FileName] [/f] [/v] [/r]…
核函数 在上文中我们已经了解到使用SVM处理线性可分的数据,而对于非线性数据需要引入核函数的概念它通过将数据映射到高维空间来实现线性可分.在线性不可分的情况下,支持向量机通过某种事先选择的非线性映射(核函数)将输入变量映射到一个高维特征空间,在这个空间中构造最优分类超平面.我们使用SVM进行数据集分类工作的过程首先是同预先选定的一些非线性映射将输入空间映射到高维特征空间(下图很清晰的表达了通过映射到高维特征空间,而把平面上本身不好分的非线性数据分了开来) 只要给出φ,计算出φ(x)和φ(z),再…
我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就可以通过于Window服务去实现.(本篇只说window服务,具体实现短信发送的可以参考博客:http://www.cnblogs.com/ywl925/archive/2012/11/24/2786105.html) 1.首先我们创建一张短信内容表: CREATE TABLE [dbo].[Mes…
广播传输相关的项目,需求是UDP发送TS到IP/ASI网关,网关经过ASI输出到激励器,再由激励器通过射频天线输出,接收端为终端机顶盒. 因为以前没有怎么接触过广播相关的东西,一开始认为用C#写个UDP的程序将TS发出即可.TS的规范是每188个字节为一个packet,我用固定码率计算出100毫秒要发送的packet的个数,发送一定量的packet后如果还未到100毫秒则进行等待,超过100毫秒则重新发送下一组packet.但测试发现,发送的数据可以到达网关,但激励器却接收不到.在网关上看到有A…
在调试电机驱动程序的时候,是不能随便利用中断来进行一些寄存器或数据的查看的,不然你在运行的时候突然来一下,如果占空比大的话那可能直接就把MOS管给烧了,所以我们很多情况下只能使用USART(串口)来进行程序的调试和数据的监控了. 对于STM32来说,由于很多内容都是有库来实现的,那就省了很多时间,直接看个例子就可以写了,大致有4步步骤: .RCC始终初始化,对端口和USARTX使能时钟 .初始化端口功能,RX设置为输入悬空,TX设置为复用功能的推挽输出,注意GPIO_SPEED要设置下,我没设置…
这次的漏洞实际上与之前曝出的一个 CVE 非常之类似,可以说是旧瓶装新酒,老树开新花. 之前漏洞的一篇分析文章: SSRF 和本地文件泄露(CVE-2016-1897/8)http://static.hx99.net/static/drops/papers-15598.html 这个漏洞实际上也是利用了ffmpeg在处理 HLS 播放列表文件的过程中,由于支持非常多的协议,如http.file.concat等等,导致可以构造恶意的url造成 SSRF 攻击和本地文件泄露.下面这幅图介绍了整个的攻…
ffmpeg是一个多平台多媒体处理工具,处理视频和音频的功能非常强大.目前在网上搜到的iOS上使用FFMPEG的资料都比较陈旧,而FFMPEG更新迭代比较快: 且网上的讲解不够详细,对于初次接触FFMPEG的新手(例如我)来说确实不太好使用.为了防止忘记,这里对iOS下使用FFMPEG做一个总结. 1. FFMPEG层次结构的简单理解 要使用FFMPEG,首先需要理解FFMPEG的代码结构.根据志哥的提示,ffmpeg的代码是包括两部分的,一部分是library,一部分是tool.api都是在l…
这个功能的基本工作是这样的: 1.使用node运行jsmpeg库下的websocket-relay.js文件,这个文件的作用是创建一个websocket视频传输中继器 2.运行ffmpeg,将输出发送到中继的HTTP端口,这个http端口是使用node.js搭建的一个简易的http服务器 3.将浏览器中的JSMpeg连接到中继的Websocket端口,浏览器中的JSMpeg是node.js环境搭建的时候输出的一个html文件,文件里面引用了JSMpeg库,             并实例化一个新…
一.tcp_sendmsg()函数分析: int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t size) { struct iovec *iov; /*从通用的struct sock *sk得到struct tcp_sock *tp,其实只是一个强制类型转换,因为strcut sock是所有其它socket类型的第一个成员,所有可以直接对指针进行强制类型转换*/ struct tcp_so…
官网 http://ffmpeg.org/ 应用手册 http://ffmpeg.org/documentation.html 雷霄骅专栏 https://blog.csdn.net/leixiaohua1020/column/info/ffmpeg-devel https://blog.csdn.net/leixiaohua1020/article/details/15811977 刘岐<ffmpeg从入门到精通> ffmpeg的书籍极少 ffmpeg基础 https://wenku.bai…
服务器间检查会用到fping的命令,期间遇到了一个问题,需要将ping包间的间隔时间设置为100毫秒,查看fping -h看下,找到了-i和-p两个参数: 看到这两个参数,我当时的表情是这样的: 看不懂,那就测吧: 先来-i: 间隔1s,没有生效.! 再试试-p OK,这个生效了,但-i 和-p的区别是什么?我又尝试了下面的操作: 得出结论: -i 多个目的地址ping包的发送间隔时间 -p 单个IP地址ping包的发送间隔时间 又有一个问题: -i -p是否可以同时使用? 得出结论: 同时使用…
FFMPEG推流到RTMP服务器命令 - weixin_37897683的博客 - CSDN博客 https://blog.csdn.net/weixin_37897683/article/details/81225228 FFMPEG推流到RTMP服务器命令 1.将文件当作源推送到RTMP服务器 ffmpeg -re -i localFile.mp4 -c copy -f flv rtmp://server/live/streamName 参数解释-r 以本地帧频读数据,主要用于模拟捕获设备.…