自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

静影沉璧

音视频多媒体开发。微信公众号:陈知许 个人独立博客:http://blog.ichen.win

  • 博客(88)
  • 收藏
  • 关注

原创 ZLMediaKit源码分析一:代码目录总览

ZLMediaKit源码分析一:代码目录总览

2023-11-03 11:04:07 534 1

原创 FFmpeg解析TS私有文本流

本文在FFmpeg 4.3.2的基础上修改avformat/mpegts.c中的handle_packet函数,添加了从188个字节的TS包中解析出,pid为0x12的私有流信息。代码做的事情主要是:跳过TS头部4个字节,跳过adaptation填充字节,然后跳过PES的头部,最后找到ES的Payload。

2023-05-04 10:59:42 486

原创 FFmpeg源码解析:mpegts_read_header函数代码走读

在 `handle_packets` 函数内部,会循环调用 `mpegts_read_packet` 函数读取 TS 数据包,并对其进行处理,包括调用相应的回调函数、更新 PTS/DTS 以及处理 H.264、H.265 等视频流的 SPS/PPS。然后通过调用 `mpegts_open_section_filter` 函数,对 `SDT_PID`、`PAT_PID` 和 `EIT_PID` 三个 PID 打开节目号表、节目关联表和事件信息表的过滤器。

2023-04-25 17:06:41 505

原创 用python把所有出现snprintf的c文件添加_snprintf

该py脚本的作用:扫描目录下所有C文件,查找文件中是否含有snprintf,若有,则在文件开头添加上述宏定义。用VS2013编译ffmpeg时,报snprintf找不到的错误。

2022-09-15 18:46:04 306

原创 Win10的WSL子系统修改主机名hostname,不修改Windows主机名

在wsl子系统的/etc/wsl.conf里面[network]下面加一行"hostname=wsl",这样就能修改WSL的主机名,也不用修改Windows主机名字。如果没有/etc/wsl.conf文件,就新建一个。我的配置文件如下,可参考:[user]default=wayne[network]generateResolvConf=falsehostname=wsl...

2022-05-28 15:13:00 2889

原创 FFmpeg&SDL教程:用不到1000行代码写一个播放器

更新:本教程最近一次更新于2015年2月。FFmpeg是一个创建视频应用,甚至更通用程序的强大音视频工具库。FFmpeg能够完成视频处理过程中解码,编码,封装和解封装所有这些棘手工作。借助它,可以大大简化媒体应用程序的开发。它的代码非常精简,使用C语言开发,效率极高。并且可以解码几乎所有流行的视频压缩格式,也可以用来编码大多数视频格式。但是,因为音视频的门槛较高,网上这方面的文档资料比较少。早年雷霄骅大神有过很多分析播客。而国外有些博客介绍FFmpeg,但都是英文。从事了这么多年音视频工作,现在想将

2022-04-21 10:21:14 2499

原创 iOS报错:resourceOptions (0x10) must match backing buffer resource options

2018年,在苹果WWDC2018开发者大会上,苹果宣布弃用OpenGL,改而启用自家的Metal图形库。由此,很多原本使用OpenGL的iOS项目,出现的兼容性问题。最近,笔者开发的播放器也出现了类似问题,在调用OpenGL的渲染接口(presentRenderbuffer)时,App卡住,报以下错误:-[MTLDebugBuffer newTextureWithDescriptor:offset:bytesPerRow:]:326: failed assertion `resourceOpti

2021-11-24 19:27:53 1681

原创 H.264分隔符AUD误用导致iOS设备无法播放H.265视频的问题解决

AUD,全称Access Unit Delimiter,它是H.264接入单元(Access Unit,AU)的分隔符。AU定义为多个按解码顺序排列的NALU,这些NALU解码正好生成一个图像。AU可以看成压缩视频比特流的基本单位,压缩视频流有多个按顺序排列的AU组成。每个NALU都会属于某个AU单元,压缩视频流的第一个NALU则为第一个AU的第一个NALU。AUD是个特殊的NALU,它用来分隔AU,虽然AUD在编码标准中是可选的,但有的播放器会要求必须携带AUD,它才能识别一整幅图像,才能正确解码

2021-11-23 17:17:26 2329

原创 H265 NALU类型详细解析

1. H265 NALU类型解析F: 禁止位,必须为0,表示有效;为1的话表示无效。Type: 6-bits NALType 确定NAL的类型,其中VCL NAL和non-VCL NAL各有32类。0-31是vcl nal单元;32-63,是非vcl nal单元。VCL是指携带编码数据的数据流,而non-VCL则是控制数据流。vcl nal单元的类型(0-31)如下表:non-vcl nal单元的类型(32-63)如下表:Non-VCL NAL Type:No...

2021-11-17 19:32:57 7599

原创 使用libx264静态编译库编译FFmpeg

Get the latest FFMPEG source code.Rename ffmpeg directory to something you will remember like ffmpeg_gpl. Try avoiding making changes in your already compiled FFMPEG. You may want to keep two version of FFMPEG one LGPL version and other GPL version. I..

2021-09-14 10:35:39 1119

原创 Ubuntu 安装 Samba 服务,与 Windows 共享文件夹

samba 服务安装Ubuntu 16 以后执行以下命令安装:sudo apt updatesudo apt install samba检查是否安装成功:whereis samba应该能看到以下输出:samba: /usr/sbin/samba /usr/lib/samba /etc/samba /usr/share/samba /usr/share/man/man7/samba.7.gz /usr/share/man/man8/samba.8.gz配置 Samba创建一个文件.

2021-05-14 09:43:09 248

原创 【保姆级教程】ffmpeg通过源码编译,并开启x264、fdk-aac

安装相关工具:sudo apt-get install -y autoconf automake build-essential git libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev .

2020-09-26 00:57:26 541 1

原创 AV1编码技术分析

av1是一种新兴的开源、版权免费的视频压缩格式,由开放媒体联盟(AOMedia)行业联盟于2018年初联合开发并最终定稿。AV1开发的主要目标是在当前的编解码器基础上获得可观的压缩率提升,同时确保解码的复杂性和硬件的实际可行性。本文简要介绍了AV1中的关键编码技术,并与VP9和HEVC进行了初步的压缩性能比较。索引:视频压缩,AV1,开放媒体联盟,开源视频编码一、引言在过去的十年里,智能设备...

2020-04-12 16:27:04 43248

原创 AV1源码分析(一)

AOM 工程AOMedia Video 1是一个开放、免专利的影片编码格式,专为通过网络进行流传输而设计。它由开放媒体联盟开发,该联盟由半导体企业、视频点播供应商和网页浏览器开发商于2015年成立。互联网工程任务组也将这项工作标准化为互联网视频编解码器(NetVC)。AV1的目标是取代其前身,即由谷歌开发的VP9视频压缩格式,并与动态图像专家组(MPEG)领导开发的高效率视频编码(HEVC)以...

2020-03-16 23:16:03 7762

原创 PS封装格式:GB28181协议RTP传输

PS封装格式:GB28181协议RTP传输1. GB28181要求的RTP流格式2. 头部信息    在安防行业,有个协议是无论如何都要适配的,因为公安监控网络用的就是它,它就是:GB28181。而这份协议主要由海康制定,所以除了海康其他厂商想要适配都会少许有点儿麻烦。题主前东家便是海康,这里稍微分析下该协议几个容易搞混的细节,记录在此,方便以后自己查阅,也方便诸位。1. GB28181要求的...

2019-08-26 22:06:54 17793 14

原创 FFmpeg 开发环境搭建及第一个程序 Hello FFmpeg 编写

1. ffmpeg 的安装./configuremakemake install默认会将ffmpeg安装至/usr/local目录下(可通过configure使用“-prefix=目录”修改安装目录),安装完成后分别会在/usr/local下的bin、include、lib、share四个目录下生成ffmpeg的二进制可执行文件、头文件、编译链接库、文档。后面开发我们会用到inclu...

2019-04-24 10:42:16 1026 2

原创 VLC中用到的YUV格式

2019-01-18 20:11:27 1024

原创 H264编码之宽高比:DAR、SAR、PAR之间的关系

一次写播放器,基于ijkplayer。在播放一些网络视频的时候,发现无论怎么转码,视频比例始终不对。即便获取了分辨率,但是播放的时候,view不是分辨率比例的那个长宽比。使用ffmpeg查看了一下属性,见下图:原来有几个参数,之前都没有认真对待的。SAR 2:1 DAR 32:9视频本身的分辨率是1080P,即 1920x1080查资料才发现,视频在使用264编码的时候,使用了sar和...

2018-12-24 10:16:18 7177 2

原创 PES包结构解析

PES包结构图解:PES前面几个字段填写方法:// 生成 pes 头数据 buffer[0] = 0x00; buffer[1] = 0x00; buffer[2] = 0x01; buffer[3] = (unsigned char)(pes->stream_id); buffer[4] = (unsigned char)((pe...

2018-12-10 20:56:34 6060 1

原创 通过ffprobe分析mp4 媒体信息

查看mp4的包信息:ffprobe -i 396025.MP4 -show_packets···$ ffprobe -i ch01_00000000049000000.mp4 -show_packets[PACKET]codec_type=audiostream_index=1pts=7568010pts_time=84.089000dts=7568010dts_time=84...

2018-12-06 11:50:36 3064

原创 AMD主机上使用Android Studio emulator虚拟机

2018年5月8日 微软官方发布更新,更新后在CPU为AMD的主机上也能使用Android Studio emulator虚拟机。具体步骤: 1. 开启Hyper-V和Windows虚拟机监控程序平台功能,并重启 2. 确保安卓模拟器 Android Emulator版本在27.2.7以上: 3. 安卓模拟器在27.2.8之后的版本,还需要添加一个标志位。创建或打开以下文件C...

2018-07-14 03:10:40 20265 22

转载 在Ubuntu上安装CMU Sphinx语音识别引擎

Some BackgroundI recently installed Ubuntu 14.04 on my Lenovo Yoga, and it’s time to reinstall SPHINX. When I installed SPHINX for the first time in September 2015, it was not a fun experience. I ...

2018-07-01 00:18:30 2529

原创 超级账本 0.1 Fabric 示例 部署

Hyperledger Fabric 示例 注意:如果您在 Windows 上运行,您将需要使用 the Docker Quickstart Terminal 来获取将来发布的终端命令。如果您以前没有安装它,请完成准备工作。 如果您在Windows 7或macOS上使用Docker Toolbox,则在安装和运行示例时,您需要使用C:\Users(Windows 7)或/Users(macOS...

2018-04-29 01:04:25 782

转载 Linux音频ALSA编程

前序:这里了解一下各个参数的含义以及一些基本概念。样本长度(sample):样本是记录音频数据最基本的单位,常见的有8位和16位。通道数(channel):该参数为1表示单声道,2则是立体声。帧(frame):帧记录了一个声音单元,其长度为样本长度与通道数的乘积。采样率(saampleRate):每秒钟采样次数,该次数是针对帧而言。周期(period):音频设备一次处理所需要的帧数,对...

2018-04-29 00:32:28 759

原创 ffmpeg常用命令

剪辑视频ffmpeg -ss 00:00:02 -t 00:00:15 -i input.mp4 -vcodec copy -acodec copy output.mp4添加背景音乐ffmpeg -y -i video.mp4 -i bgm.mp3 output.mp4剔除背景音乐ffmpeg -i input.mp4 -vcodec copy -an output.mp4...

2018-02-15 13:56:47 266

转载 linux-Centos7安装python3并与python2共存

原文:http://www.cnblogs.com/JahanGu/p/7452527.html查看是否已经安装Python CentOS 7.2 默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5。 使用 python -V 命令查看一下是否安装Python 然后使用命令 which python 查看一下Python可执行文件的位置

2018-01-14 01:12:55 682

原创 VMWare里CentOS7与win10共享文件

第一步 CentOS关机,打开虚拟机设置 第二步,选择win10下一个用于共享的文件夹 CentOS开机,安装VMWare tools 挂载VMWare tools,拷贝至个人home目录,解压sudo mkdir /mnt/cdromsudo mount /dev/cdrom /mnt/cdromcp /mnt/cdrom/VMwareTools-10.1.6-5214329.tar.gz

2017-11-26 00:16:08 10705 1

原创 CentOS 7下 ifconfig command not found

yum upgradeyum install net-tools

2017-11-25 23:57:36 469

原创 GPT+UEFI双硬盘双系统安装

刻win10盘,开机启动。进入安装界面,shift+F10进cmd: 进入CMD程序后,依次输入以下命令: 1).diskpart(启动Diskpart程序) 2).list disk (查看电脑中有哪些磁盘) 3).select disk 0(选中编号为0的磁盘) 4).clean(清除磁盘所有分区) 5).convert gpt(将磁盘转换成GPT格式) 6).list part

2017-09-09 00:33:39 6124

原创 Tesseract 4.0的安装

在macOS上,homebrew默认给我们安装的是3.0.5(2017年6月)。 想要用4.0版还需要自己编译,官方教程:Compiling Tesseract 4.0 而官方教程中,macOS用homebrew安装依赖的时候,brew install gcc默认给我们安装的是gcc7.1. 而教程接下来用到的gcc/g++编译器是gcc6,为了完成安装,于是又编译安装了gcc6,需要用到的是

2017-07-10 18:07:44 3948

原创 OCR开源库Tesseract汉字识别训练

先用英文做个示例: 1. 拿到一张chi.pingfang.exp0.jpg: 2. 将它转化为tif:http://image.online-convert.com/convert-to-tiff 3. 拿到chi.pingfang.exp0.tif之后,开始训练。第一步,生成box文件。//由tif图片生成box文件tesseract chi.pingfang.exp0.tif ch......

2017-07-06 17:38:54 11317 2

原创 pod安装与更新

pod安装和更新有时很慢,卡在不必要的环节上,可以使用以下两条命令,跳过无更新的框架,大大缩减安装时间:pod install --verbose --no-repo-update或pod update --verbose --no-repo-update

2017-06-23 17:12:42 857

原创 iOS二维码扫描

导入AVFoundation库,并将它加入.pch预编译文件给相机预览控制器DTCameraPreviewController添加四个私有成员,获取AVFoundation的“终端”、“输入”、“输出”、“管理员”对象:@implementation DTCameraPreviewController{ AVCaptureDevice *_camera; AVCaptureDevice

2017-06-18 18:20:34 44166

原创 导出CSDN文章,并转成Hexo要求的样式,博客迁移

想把CSDN博客同步到拿GitHub Page搭的独立博客上去,找了下,发现有人用Python写了个工具,可以将博客导出为Markdown和HTML格式:csdn-blog-export把它搬到了百度盘,链接: http://pan.baidu.com/s/1o8fpxGI 密码: pgbb用法很简单(注意:博客主题需切回“碧海蓝”,我的“极客世界”主题失效): ./main.py -u CSDN

2017-06-03 13:07:35 3799 14

原创 给UIView/UIButton添加虚线边框

要给UIButton等视图加一圈虚线边框,这里是其中一种方法,就是在原来的视图的layer上再添加一层CAShapeLayer,在这一层中使用贝塞尔曲线UIBezierPath的lineDashPattern创建虚线边框。

2017-05-22 14:34:46 4542

原创 NavigationBar返回按钮设置

NavigationBar中返回按钮的设置,要在父视图中完成,假设A视图(AViewController)包裹在导航视图中(NavigationVC),它通过pushViewController将B视图(BViewController)压入栈中,要想更改B视图的返回按钮,需在A视图中添加设置代码:UIBarButtonItem *backItem = [[UIBarButtonItem alloc

2017-05-19 16:25:21 3820

原创 iOS系统音量控制——MPVolumeView

iOS的音量控制接口在MediaPlayer库中, 1. 首先要将该库导入: 2. 然后在用到的地方引入MPVolumeView的头文件: #import 3. 而MPVolumeView中负责控制音量的是它的子视图MPVolumeSlider,而这个类并未对外公开,所以要去控制它,需要遍历volumeView的子视图,把它找出来

2017-05-15 17:39:50 8296

原创 PC上浏览微信文章

电脑上有时会有打不开微信文章的问题,提示“请在微信客户端打开链接。”。 在chrome中,F12打开调试窗口,切换至手机版,新添加一手机模拟器,在User Agent String框里面填写以下信息 :"Mozilla/5.0 (linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML,

2017-04-20 07:53:31 1216

原创 python读取csv文件

读取.csv文件,获取Email地址,用逗号串联,存入文本文件。最后统计取得的Email个数:#!/usr/bin/env python# -*- coding: utf-8 -*-import csvoutput = open('out.txt', 'wb')with open('contact.csv', 'rb') as csvfile: spamreader = csv.rea

2017-04-18 13:55:21 683

转载 JavaScript学习笔记

引自廖雪峰老师的教程:JavaScript教程1. 基本语法(1).JavaScript代码通常放在<head>标签中,可以直接放在<script>标签里:<html><head> <script> alert('Hello, world'); </script></head><body> ...</body></html>或者把JavaScript代码

2017-04-09 15:51:31 385

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除