1. 文件操作
【mp4parser】 这个库提供了用于读取、写入和创建MP4文件的Java API,包含三个组件:
- isoparser
- muxer
- streaming
我用了muxer,将H264文件和AAC文件合并为MP4文件。
1 | <!-- https://mvnrepository.com/artifact/org.mp4parser/muxer --> |
【mp4parser】 这个库提供了用于读取、写入和创建MP4文件的Java API,包含三个组件:
我用了muxer,将H264文件和AAC文件合并为MP4文件。
1 | <!-- https://mvnrepository.com/artifact/org.mp4parser/muxer --> |
go get下载包失败在国内是常见的问题,下面是通过设置代理的解决方案
1 | $ go env -w GO111MODULE=on |
1 | $ vim /etc/profile (全部用户生效) |
这是rtmp-rtsp-stream-client-java发出的包
1 | 80600396000cf6ae0ce9d37f|我是分隔符|7c85b8141ff1c6921a6ba385c00040056dd92a7ccbeb7e38000837470001067fff1fc3177b46c9c731d84f1e6b6f6ff6fc763b09e21dfe9df6dbc8b84f176dbfe9db4d3b68efff8f1c444b8fca76b5da32e13cda7476ffff477fc47e3c53ebad78fc20f47edf6fe3ffa3fffff3ff043afe1edee6b04a600b730c899d05e4d4dffba8ba5f3adab44c59e08ded760e63763eda138901d3c527ffedff09e0854eb3b7ffe3bef09fd013dfb7ffe9be1d7a32430a449f19848276060df0f31fe941ff8a8976a7039b22b8d910300043c1c004254905641cf077c3c9ed77812f89043040be9a437b35b520bf448436f46f48c000401817b8f391571dc96f9f8515c3225034d14963b27feab77e6a3e8e7722e93bf6bda10b439fbee0f8afa2887e21c776f75fb8c50fff9f50caa27ddf2f17de9e690f29a9780eef43e6b031805184fce2e27feb480fb577381cace9e2bbaf378354bd524c3a3c45812dc55528ee47b8a78ab2f228bddf5372c7964bd0781f5cb673f2dbd45cfe8fc00e8675e64aaca76d34cdbaa6993c69c69c5df77bb0cf48a7ba41457cb8f6d42728128ecd69f2d1b7fdbffc89e3ebe78cbbe90bb557dc8fa006e3e8593fb7f5d3b65a8347e7ffd757e21558f4b17ac009c887912807061fdc1d87e56cfffcd951823d6e8d28060f7038a1605115c154bc0bcec0e77cfbc17ae34e6cf9b2b7641dd1f4e3e5dfff0f060a7bf595121372efffdbd2de14a9c908826749655109894930c25b0cb20fc30327a7ffc2b8973fff6e54b221f641354a50ffffe8e7485551a7fffca8c832481117a78fffdb6d05fd3edf171153a44cb24d580c9862259a3152f54e1565d4694eda2a32519e5ffbbfa88afe7cd956bd2f516f74fffa21042c4e12421c2112488a2a11b4da4055a564a7b022561f103175bd441f8f73fc3d4474f8e62d71bc4c1dc6c6cd295df1690870f73aa0efad48c09f7ec5203c0954554ba7f0a312006e3bd03fbacf6ff9518c1ed5bccb3c49106c150b6bc14c5216e9ab42bfb48cb8d958eb59641482a2946928541f04f49fd74e3b4ea8e67b78147940b2d3813f275f5744028cad6a0d27369bd6b8e6ddf4ae5ea34ac977795b69afa9888a2dc7c657b8428e7f510f971c3d035d0ee31ee67a6185555ceb6610c896d16c32cd8c857bedf56aaf58a49a1e68f28875bedf4bd083601f0ada56fffffe7d61d07fd650b7e045246963c6aa9d28ed1ccf9e37c584401664a2f8e92c711f055b7b52d9d89dc02f7e48280553ca1c2d52cf20159a824cb6fb7eb60971384a9ff7b954807714fcb880952c102ed4fd32af30ce6032668ad447dfae2425f10c04dfcfea34116c1565385b99728679581c8d23dbb18bdf90abeae6fbfa94ca18f486feb34d660bec5c5d76b54db986731a0857db65250c82d293b16060802c1c1037464d9b3709ecf5b770ca586800821738c93c4588a64b80d33292b3ec07c461c7e840bda57c18f4403615df6de9012a2b60b7e066105e60f30aee1506dbc2c4f2b8c89201b293a8fa61dd3d3804498c8c48643c80724573fb77238f65116824d336be409c8ec6a290344368394a6bd00a5872d4107ff54b09eb398c061f5e0c81283da0afdbf06686a383fab987254b835d095f2cabcbe0eaae9c4c03d7286ada203e607156d0d3a9b6f9f9a0034211effb7c0392a47214afbef9ffda37102e821292af133105d4c33b5ddbf0b1ba4e609422f878e94831e6f6909391292a41daafd076146581226a148afcfa1395062fa8 |
分隔符前面是 rtp header 后面是 rtp payload 也就是H264的NAL,这部分可能有三种情况:单NAL,聚合NAL,分包NAL
抓包文件在附件中…
tcp追踪流
1 | OPTIONS rtsp://192.168.0.223:554/test/ RTSP/1.0 |
Live555提供HTTP/RTSP协议的多媒体流服务器和RTSP流代理中转。
需要g++编译环境
1 | $ wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz |
用UDP传输
1 | $ ffmpeg -re -i h264.mp4 -vcodec copy -f h264 udp://127.0.0.1:8554 |
在本地用ffplay播放(ffplay是ffmpeg的附带命令行工具)
1 | $ ffplay udp://127.0.0.1:8554 |
由于项目【ijkplayer】提供编译好的库没有支持RTSP,而ijkplayer这个项目比较强大之处就是可以根据需要进行裁剪编译,所以我要自己编译一次Android版本,开启RTSP协议。
编译所需软件大概有这些,引用参考文章的
1 | $ sudo apt install vim openssh-server git curl wget tar unzip |
CD/DVD 驱动器的类型:
CD/DVD 驱动器默认是IDE类型。CD/DVD 驱动器默认是SATA类型。 CD/DVD 驱动器底下有一个“高级”按钮,可以修改驱动器的类型。


VMWare中的Ubuntu虚拟机当初创建时只分配了20G硬盘,结果现在硬盘爆满了,记得VMWare可以加硬盘的,所以给它加了一块虚拟硬盘,记录一下过程。
VM关机,在“编辑虚拟机设置” 中“硬件”给虚拟机实例添加一块硬盘。
查看所有的硬盘,其中 /dev/sdb 是我们的第二块硬盘。
升级到VM15后,在网上下载Windows7 、 XP的Chost镜像,一直提示“CDBOOT: Couldn’t find BOOTMER”,修改VMWare虚拟机的BIOS第一启动项为CD依然不行。
安装Linux系统(Ubuntu 20.04)却很顺利的。
查看下载的镜像文件,原来是没有boot.ini文件
很简单,将虚拟机关机,在菜单栏“启动”绿色按钮旁边的更多三角形按钮,可以看到最底下有一个选项“打开电源时进入固件”,点击就可以进入BIOS啦。

国内 git clone github上的仓库一直不快,但现在很慢,经常超时,发现一个镜像加速站点: github.com.cnpmjs.org。
如:
1 | $ git clone https://github.com/bilibili/ijkplayer.git |
速度体验符合预期!!!
而且 github.com.cnpmjs.org 也可以网页浏览,但不可以登录。
Ubuntu下安装配置Android命令行编译环境,用于Jenkins编译项目和NDK编译第三方so库。
/usr/local/androidsdk cmdline-tools 1 | $ cd cmdline-tools/ |
https://github.com/latelee/H264BSAnalyzer 是一个Win程序,用于分享H264文件,已有打包好exe的文件。
打开一个H264文件,如图
可以看到这个软件已经把每一个Nal解析为一行一行的,H264文件就是以Nal为单位。
一个H264文件,开头的是SPS和PPS,SEI可有可无,然后就是I帧,再就P帧或者B帧。
每一帧都会有一个start code,H264BSAnalyzer 是将 00 00 00 01 + FNRIType(第一个字节) 作为 start code 。
Ubuntu直接下载deb包 ,用 dpkg -i 安装。
注:Ubuntu或者其他版本的linux,也可以下载Linux Static Builds 可执行文件 , 放在
/usr/bin目录下,修改权限为可执行(777)即可。
1 | sudo add-apt-repository ppa:mc3man/trusty-media |
在做Android 系统OTA升级App时,需要在 ‘/cache‘ 目录创建目录和脚本文件,App已经获取到system权限(安装到 /system/priv-app 目录),但是还是在/cache 目录下没有权限。
通过 adb 命令,用system身份执行命令都没有任何问题。
升级命令脚本是:
1 | "mkdir /cache/recovery" |
但建议调用Android的接口 RecoverySystem.installPackage(this,new File("/data/update.zip")); 执行(也是差不多这些命令)