首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏全栈程序员必看

    视音频数据处理入门:UDP-RTP协议解析「建议收藏」

    * (3)H.264码分析程序。可以分离并解析NALU。 * (4)AAC码分析程序。可以分离并解析ADTS帧。 * (5)FLV封装格式分析程序。 可以将FLV中的MP3音频码分离出来。 * (6)UDP-RTP协议分析程序。可以将分析UDP/RTP/MPEG-TS数据包。 ffmpeg -re -i sintel.ts -f mpegts udp://127.0.0.1:8880 下面的命令可以推首先经过RTP封装,然后经过UDP封装的MPEG-TS。 ffmpeg -re -i sintel.ts -f rtp_mpegts udp://127.0.0.1:8880 推之后,本文的程序会通过Socket接收到UDP包并且解析其中的数据。 (3)H.264码分析程序。可以分离并解析NALU。 (4)AAC码分析程序。可以分离并解析ADTS帧。 (5)FLV封装格式分析程序。可以将FLV中的MP3音频码分离出来。

    1.9K30编辑于 2022-09-13
  • 来自专栏音视频开发技术

    FFmpeg封装格式处理

    概述 1.1 封装格式简介 封装格式(container format)可以看作是编码(音频、视频等)数据的一层外壳,将编码后的数据存储于此封装格式的文件之内。 .mp4) MPEG组织 支持 MPEG-2/MPEG-4/H.264/H.263等 AAC/MPEG-1 Layers I,II,III/AC-3等 互联网视频网站 MPEGTS(.ts) MPEG组织 在FFmpeg中,mux指复用,是multiplex的缩写,表示将多路(视频、音频、字幕等)混入一路输出中(普通文件、等)。 MPEG-TS (MPEG-2 Transport Stream) 1.2.2 h264/aac裸封装格式 h264裸封装格式和aac裸封装格式在后面的解复用和复用例程中会用到 h264本来是编码格式,当作封装格式时表示的是H.264裸格式,所谓裸就是不含封装信息也,也就是没穿衣服的。aac等封装格式类似。

    3.5K20发布于 2019-04-02
  • 来自专栏实战docker

    Golang流媒体实战之三:转推和录制

    /lal_record/flv/", "enable_mpegts": false, "mpegts_out_path": ". /lal_record/flv/", "enable_mpegts": false, "mpegts_out_path": ". /lal_record/mpegts" }, 将修改后的配置存盘,执行以下命令启动 . 和sample.mp4文件的位置请自行调整 . /sample.mp4 \ -c copy \ -f flv \ 'rtmp://127.0.0.1:1935/live/test110' 推成功后,先用VLC直接从源站拉试试,如下图,能正常播放,

    1.6K20编辑于 2023-03-27
  • 来自专栏千里行走

    cdn-4:视频feed:视屏封面响应分析报告

    原创;微信公众号:千里行走; 受限图片大小限制,有些图片不是很清晰,可以到微信公众号查看; 缘由: 有用户反映视频feed的列表中的图片加载慢,需要确认是否是CDN响应慢/图片太大的原因。 目录 (1).采样数据 (2).数据分析 2.1.访问量分类型分析 2.2.安卓系统视频封面响应时间分析 2.3.安卓系统视频封面大小分析 (3).结论 (4).后续开源 正文 (1).采样数据 视屏 访问量分类型分析 访问的文件类型访问次数占总比全部文件类型----------- 100% 分文件类型统计jpg 87.44%mp4 12.53%ico 0%/ 0.03% 安卓系统视频封面 x-oss-process=style/PIC_APPEND_ANDROID" 200 252 6520 HIT "Dalvik/2.1.0 (Linux; U; Android 5.1.1; Mi-4c (4).后续开源 我们自研了一个cdn-parser分析工具,用于分析cdn成本(只支持阿里云),和一些分析方法,十分有助于节约成本和发现问题。 待第一个版本完善后会开源公布,欢迎关注。

    95130发布于 2019-07-12
  • 来自专栏实战docker

    Golang流媒体实战之七:hls拉服务源码阅读

    在《体验开源项目lal》一文中,咱们先是用rtmp协议推,然后就行了拉操作,尽管只用rtmp推,然而拉的时候却可以使用多种协议:rtmp、flv、hls,这就有意思了,想必lal在处理推数据时有特殊处理吧 ,所以才能用各种协议来拉 为了弄明白其中原因,本篇咱们就来阅读hls相关源码,看看rtmp推时为hls做了什么,以及hls拉时lal的详细逻辑 关于hls和m3u8的细节,就在本篇展开了,这个仅给出一些关键信息作为参考 ) 推,初始阶段 首先看推处理,关于rtmp推的源码,其实已在 《Golang流媒体实战之五:lal推服务源码阅读》有详细分析,所以这里就不从头说起了,只挑出hls有关代码来看 处理推时,publish #FeedRtmpMessage -> rtmp2mpegts_filter_.go#Push -> rtmp2mpegts.go#onPop -> feedVideo (这段代码比较复杂,值得细看) switch msg.Header.MsgTypeId { case base.RtmpTypeIdAudio: q.audioCodecId = int(msg.Payload[0] >> 4)

    1.7K20编辑于 2023-04-24
  • 来自专栏Web 技术

    【Swift4】(4) 控制 for | switch | if-else

    控制 顺序 循环 选择 循环 for-in for while do-while for-in 1、遍历区间 2、遍历字符串 3、遍历数组 4、遍历字典 for 循环的几种表示 逻辑操作 print("x==y") default: //除非包含所有情况,否则default 不能省 print("default") } let info = ("1","控制" ) switch info { case (_,let name) where name.hasPrefix("控制"): print("有控制") default: print("无控制 //二维数组 for i in 0...10 { board.append(Array(repeatElement(0, count: 10))) } let randx = Int(arc4random ()%10) let randy = Int(arc4random()%10) board[randx][randy] = 1 board var i = 0,j = 0 mainloop:for i

    33210编辑于 2023-10-07
  • 来自专栏全栈程序员必看

    使用FFmpeg命令行进行UDP、RTP推(H264、TS),ffplay接收

    :1234>test_rtp_h264.sdp 下面是一个SDP文件的例子: SDP: v=0 o=- 0 0 IN IP4 127.0.0.1 s=No Name c=IN IP4 127.0.0.1 使用UDP发送TS FFmpeg的推命令: ffmpeg -re -i d:\videos\1080P.264 -vcodec copy -f mpegts udp://127.0.0.1:1234 使用RTP发送TS 很多人以为这种情况跟上面差不多,使用如下的推命令(错误): ffmpeg -re -i d:\videos\1080P.264 -vcodec copy -f mpegts rtp /90000 (注意:FFmpeg发送TS的RTP PayloadType不是96而是33) 还有一个问题:早期的ffmpeg版本是不支持rtp_mpegts输出协议的,你可以使用命令ffmpeg - 4.

    6.7K20编辑于 2022-07-02
  • 来自专栏Java架构师必看

    mpeg传输_mp4和mpeg4

    今天说一说mpeg传输_mp4和mpeg4,希望能够帮助大家进步!!! 公安部制定的GBT 28181标准广泛应用于安防领域,这个标准规定了传输的视音频数据要封装成PS格式。 ES即音视频裸,是从编码器里面出来的原始视频音频,ES只包含一种内容,里面是视频或者音频; 4. ES首先需打包成PES包,然后PES加上PS包头,变成了标准的PS流进行存储或传输; 5. 的类型;这个类型只能标志包含在PES包中的ES类型;值0x05是被禁止的;常见取值类型有:MPEG-4 视频:0x10;H.264 视频:0x1B;G.711 音频:0x90;因为PSM只有在关键帧打包的时候 支持从网络接收MPEG-PS,用UDP方式接收数据,支持接收UDP裸或带RTP头的MPEG-PS。 3. 对网络收到的PS流进行保存。 4. 在SDK接口上,提供一个参数:bParseESStream,这个参数就是前面的打开接口:PT_OpenFile的第4个参数,这个参数让用户设置是否让SDK解析的格式,如果是MPEG1/MPEG2/MPEG4

    2.3K10编辑于 2022-10-24
  • 来自专栏SRS开源服务器

    SRS6.0: 七年长跑,全面支持H.265

    第三部分,浏览器H5播放流,MSE支持,但也需要上层播放器库支持: •  原生支持:使用Chrome播放HTTP-TS,需要硬解支持,SRS使用mpegts.js。 •  原生支持:使用Chrome播放HTTP-FLV,需要硬解支持,SRS使用mpegts.js。 •  配置支持:使用Safari拉WebRTC,需要手动点下菜单栏开启。 第四部分,VLC播放流,对于TS和MP4封装支持比较好: •  原生支持:VLC播放HTTP-TS。 •  原生支持:VLC播放SRT。 •  原生支持:VLC播放HLS。 Note: Media Source Extensions (MSE)是浏览器支持流媒体的底层接口,可以认为是把点播或直播转成fMP4切片送给H5 video对象,比如mpegts.js、hls.js和 4. H5播放器目前mpegts.js支持,hls.js和dash.js还没有支持。 在某些场景下,HEVC的应用完全成熟了,具体就需要各位开发者自己评估了。

    3.8K40编辑于 2023-04-02
  • 来自专栏后台技术底层理解

    Oozie工作分析

    oozie基本架构 是一个工作调度系统 工作的调度是DAG(有向无环图)-Directed Acyclical Graphs Coordinator job可以通过时间和数据集的可用性触发 集成了Hadoop Coordinator: 协调器,可以理解为工作的协调器,可以将多个工作协调成一个工作流来进行处理。 Bundle: 捆,束。将一堆的coordinator进行汇总处理。 <start to=“check-xxx-succ-flag"/> 3. 4. </property> </configuration> </workflow> </action> </coordinator-app> 4. 出现失败的情况:Azkaban会丢失所有的工作,但是Oozie可以在继续失败的工作运行。

    1.5K10发布于 2020-08-04
  • 来自专栏原创分享

    nodejs可读源码分析

    我们通过源码去了解一下可读实现的一些逻辑。因为实现的代码比较多,逻辑也比较绕,本文只分析一些主要的逻辑,有兴趣的可以参考文档或者自行深入看源码了解细节。 nodejs只是抽象了的逻辑,具体的操作(比如可读就是读取数据)是由用户自己实现的,因为读取操作是业务相关的。下面我们分析一下可读的操作。 _destroy = function(err, cb) { this.push(null); cb(err); }; 刚才分析push函数时已经看到this.push(null)表示结束了。 销毁意味着关闭对应的底层资源,不再提供数据服务。 总结:本文就分析到这里,的实现代码不算很难,但是非常绕,有兴趣的可以详细看源码,最后分享很久之前画的一个图(链接https://www.processon.com/view/link/5cc7e9e5e4b09eb4ac2e0688

    1.1K30发布于 2020-07-22
  • 来自专栏山河木马

    脱离文档分析(转)

    脱离文档,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档的元素不存在而进行定位。 只有绝对定位absolute和浮动float才会脱离文档。   例如:下图例3 box1向右侧浮动,box2不设置clear属性时的示意图;例4中box1向右侧浮动,box2设置clear:right,表示右侧不允许出现浮动元素,则box2自动下移一行。 ? 分别分析一下position的几个值 (1)static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。 (2)relative 相对定位。 元素原先在正常文档中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常中生成何种类型的框。 (4)fix定位     元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

    1.9K20发布于 2019-03-05
  • 来自专栏noteless

    -1-4 java io java 常用 分类 File类 文件 字节流 字符 缓冲 内存操作 合并序列

    Java用于操作的对象都在IO包中 按照数据流向 •输入流  读入数据 •输出  写出数据 按照数据类型 •字节流 •字符 字节流的抽象基类: •InputStream ,OutputStream fw.write(“text”); 关闭资源,并将中的数据清空到文件中。 ,将已存在的一个文件加载进。 •char[] ch = new char[1024]; 调用对象的读取方法将中的数据读入到数组中。 合并 SequenceInputStream概述 •SequenceInputStream类可以将多个输入流串流在一起,合并为一个输入流,因此,该也被称为合并

    88910发布于 2018-09-11
  • 来自专栏编程

    Python入门基础连载(4)控制

    Python控制语句有三种————if,for,while,有相关语言类似C,java的同学应该不会陌生的,下面我们就做下介绍: if语句 if语句用来检验一个条件, 如果 条件为真,我们运行一块语句 来个简单例子, for i in range(1,5): print 'i =',i 运行程序,我们来看下结果, i = 1 i = 2 i = 3 i = 4 记住,for..in循环对于任何序列都适用

    78860发布于 2018-01-25
  • 来自专栏Ryan Miao

    Java8学习(4)-Stream

    Stream开启之后,系统内部会分析对元素的操作是否可以并行,然后合并执行。也就是说,看起来,自己filter-map-filter-map-group很多次,但真实执行的时候并不是遍历了很多次。 @Test public void testPeek(){ final List<Integer> list = Lists.newArrayList(1,2,3,4); List<Entity flatMap可以接收一个参数,返回一个,这个可以拼接到最外层的。说的太啰嗦,看具体用法。 System.out.println("==========="); System.out.println(rs.getAsInt()); } } 打印结果为: 1 2 3 3 6 4 List<Integer> nums = Lists.newArrayList(3, 1, 4, 0, 8, 5); Optional<Integer> max = nums.stream().reduce

    1.9K81发布于 2018-04-17
  • 来自专栏python3

    3-4 文件类FileStream

    3-2 文件类FileStream u本节学习目标: nFileStream文件类 nFileStream文件类的创建 nFileMode和FileAccess,FileShare方法基本介绍及注意事项 1.FileStream文件类简介 FileStream对象,也称为文件对象,为文件的读写操作提供通道,而File对象相当于提供一个文件句柄,在文件操作中,针对FileStream对象的操作必须首先实例化一个 FileStream类在实例后可以用于读写文件中的数据,而要构造FileStream实例,需要以下4条信息: n要访问的文件。 n表示如何打开文件的模式。例如,创建一个新文件或打开一个现有的文件。 如果允许其他同时访问文件,则这些是只读、只写,还是读写文件? 2.FileStream文件类的创建 创建FileStream对象的方式不是单一的,除了用File对象的Create()方法或Open()方法外,也可以采用FileStream对象的构造函数。

    93120发布于 2020-01-07
  • 来自专栏码客

    低延时播之Jsmpeg

    Jsmpeg 官网:http://jsmpeg.com/ Github:https://github.com/phoboslab/jsmpeg 服务器 安装NodeJS The Websocket Websocket port that we can connect to in the browser node websocket-relay.js supersecret 8081 8082 推 安装FFMpeg 推时使用 sudo apt install ffmpeg 第2个Terminal中推 ffmpeg -stream_loop -1 -i /data/video.mp4 -f mpegts \ -codec:v mpeg1video -r 24 -bf 0 \ -codec:a mp2 -ar 44100 -ac 1 -b:a 128k \ http://49.233.81.68 :8081/supersecret 推送桌面 ffmpeg -f gdigrab -i desktop -framerate 30 -f mpegts -codec:v mpeg1video -s 640x480

    1.6K20发布于 2021-02-26
  • 来自专栏腾讯IMWeb前端团队

    看前端如何通过WebAssembly实现播放器预览能力

    在简单分析了B站、腾讯视频后,发现都是采取在上架视频时,由后台生成专门用来帧预览的组合sprite图,然后前端拉取后再计算进度进行展示。 由于目前的我们后台云点播录制没有生成帧预览图功能。 但注意浏览器一般只能解析MP4/WebM的格式, H264/VP8编解码的视频。如果不是指定格式,要先解复用在利用MSE来实现。 第一种方案对于单个MP4文件还是合适的,但hls资源不是完整加载,并且浏览器不能直接复用ts格式,所以行不通。 它还定义了Emscripten如何处理程序中的错误。可以将值设置为ASSERTIONS=2,以便运行额外的测试。 、找视频的解码器、复制上下文并打开编解码器。

    3.1K10编辑于 2022-06-29
  • 来自专栏进击的多媒体开发

    H.264 媒体 AnnexB 和 AVCC 格式分析 及 FFmpeg 解析mp4的H.264码方法

    SPS PPS等也作为一类NALU存储在这个码中,一般在码最前面。也就是说这种格式包含VCL 和 非VCL 类型的NALU。 字段大小减1,通常这个值为3,即NAL码中使用3+1=4字节表示NALU的长度 第6字节前3位:保留,全1 第6字节后5位:SPS NALU的个数,通常为1 第7字节开始后接1个或者多个SPS数据 H.264 码 MP4文件中编码信息是存储在文件开始或者文件末尾的,详细结构这里不详述了。 格式组织的码,直接保存成.264文件没法播放。 FFmpeg 解析mp4中H264码 代码示例 这里就只贴关键部分代码。省略前面打开文件和查询信息等操作。 //...

    2.9K20编辑于 2022-10-31
  • 来自专栏原创分享

    nodejs基类源码分析

    是对数据生产,消费的一种抽象,今天先分析一下基类的实现 const EE = require('events'); const util = require('util'); // 的基类 function pause方法,那就暂停可读的读取操作,等待目的触发drain事件 if (false === dest.write(chunk) && source.pause) { (); } } // 监听drain事件,目的可以消费数据了就会触发该事件 dest.on('drain', ondrain); 这是管道化时控实现的地方,主要是利用了write 关闭/结束处理 // 目的不是标准输出或标准错误,并且end不等于false if (!dest._isStdio && (!options || options.end ! 这就是基类的所有逻辑。

    87530发布于 2020-07-22
领券