`
csstome
  • 浏览: 1531335 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

将H.264采集卡的输出格式,转换为标准H.264

 
阅读更多

市面上有很多种H.264硬压采集, 海康/大华/等等等等

找了半天发现所有的卡接口及其相似,在开发包中都是使用 RegisterStreamDirectReadCallback 注册回调函数来获取压缩后的数据流。

在它的回调函数中输出的码流不知道是啥子格式,而我需要标准的H.264码流,保存成flv并同时使用RTMP发布。如果解码后重新编码加重了CPU的负担,不符合要求。难道这就是传说中的海康码?

找啊找啊找啊找,在几乎绝望的情况下发现大华的工具里面居然有一个将 采集卡的录像文件 转换成 标准AVI 的小工具 StreamToAVI.exe。

马上一试,输出的AVI能够被MediaInfo识别,且显示AVI容器的 codec 是 AVC, Main profile. 哟西,看来还是标准的H.264码流啊。

只要能够反向这个工具就能够解析出可爱的NALU了。

打开IDA,首先盯上的就是ReadFile API调用

每次读取长度为0x10000 的文件块到内存,然后就callsub_401E30进行处理, 看来401E30这个函数就是要反向的目标

这个函数是某个类的成员函数,成员变量是由ebp寄存器(this指针)加上偏移量进行操作,看起来真头疼啊

理清类的内存布局以及推测其中某些变量含义,花了3天时间, 虽然人是笨了点,不过好在有耐心。再结合调试跟踪,又花了一个周末的时间摸清了基本的来龙去脉。终于搞出点东西来了!

这个1FD 1FC 1FB 1FA 1F0 应该是类型字段,标明当前的数据类型

1F0 是音频编码,略过, 不感兴趣

1FD 和 1FC 是 H.264编码 , 1FD应该是 I帧

1FB 和 1FA 不知道是什么,调试中发现, 我的录像文件从不进入这个分支执行,它应该是另一种编码类型(0x3447504D?),可能是为其它某种型号的硬件准备的。这个就略过了,反正没用。

在0x403030处发现一个重要函数

这个函数的特征太明显了,连续设置0x00 0x00 0x00 0x01 以及 连续2个零后小于3做处理。

一眼就认出0x40303这个函数肯定是转换成H.264 Annex B format输出

围绕这个函数分析,发现卡输出的H.264分2种, 一种就是H.264 Annex B, 还一种就是普通的NALU

试着自己写了个解析程序,成功地转换了录像文件。

明天继续,离球门不远了 :)

分享到:
评论

相关推荐

    老款采集卡Techwell TW6805a采集卡和软件

    这个软件可能包含了设置分辨率、帧率、色彩平衡等功能,并可能支持多种视频编码格式,如MPEG-1、MPEG-2或H.264。由于是老款设备,确保软件与当前操作系统(如Windows 10)的兼容性至关重要,可能需要查找更新或者第...

    基于ARM平台的监控系统 使用V4L2框架采集视频数据;经过H264编码压缩;然后通过RTMP协议推流至服务器.zip

    在基于ARM平台的监控系统中,使用V4L2(Video for Linux Two)框架采集视频数据,然后通过H264编码压缩,并最终利用RTMP(Real-Time Messaging Protocol)协议将流媒体推送到服务器,这一过程涉及多个关键知识点。...

    研华 数据采集卡应用与编程

    首先,数据采集卡的核心功能在于将物理信号转换为数字信号,以便计算机能够处理和分析。这通常涉及到模数转换(ADC)、计时器/计数器、数字输入/输出(DIO)等功能。研华数据采集卡提供了丰富的接口,包括模拟输入、...

    锦铭S6014音视频采集卡驱动

    3. 多格式兼容:支持多种视频编码格式(如H.264、MPEG-2)和音频编码格式(如AAC、MP3),适应不同的应用需求。 4. 输入接口多样:可能配备有复合视频、S端子、分量视频等多种输入接口,以连接不同类型的音视频源。 ...

    天敏采集卡DVS4000驱动+软件

    驱动程序通常包括设备配置、数据传输、错误处理等功能,确保采集卡能正确接收和处理来自各种视频源的信号,同时将这些信号转换为数字格式供计算机处理。 天敏采集卡DVS4000的驱动程序可能包含以下关键组件: 1. ...

    万能采集卡驱动

    同时,它还可能支持各种编码格式,如MPEG-2、H.264等,以满足不同场景下的需求。 总的来说,"万能采集卡驱动"是一个跨多平台、兼容性强的驱动解决方案,对于拥有不同操作系统且需要进行音视频采集的用户来说,无疑...

    天敏VC4000采集卡驱动

    6. **多格式编码**:驱动可能支持多种视频编码格式,如MPEG-1、MPEG-2、MPEG-4、H.264等,便于用户根据需求选择合适的编码方式。 7. **用户界面友好**:驱动程序通常带有用户界面,提供直观的操作选项,使得设置和...

    NET2801H数据采集卡使用.pdf

    这款数据采集卡具备模拟量输入功能,能够将连续变化的模拟信号转换为数字信号,以供后续处理和分析。其输入通道可能包括多个,支持不同范围的电压或电流输入,具有高分辨率和低噪声特性。 3. **DI数字量输入功能**...

    AOP-7104B\AOP-7108B 视频采集卡

    视频采集卡是计算机硬件的一种,其核心功能是将模拟视频信号转化为数字格式,以便于在电脑上进行编辑、存储和播放。这两款型号的采集卡可能具有不同的性能特征,如分辨率、帧率、色彩深度等,适应不同用户的需求。 ...

    32位的支持h265的rtmp推流的ffmpeg6.0.zip

    HEVC(High Efficiency Video Coding),也称为H.265,是目前广泛使用的视频编码标准,旨在提供与H.264相同的视频质量,但数据压缩率更高,这意味着可以以更小的文件大小传输相同质量的视频,节省存储空间和带宽资源...

    USB2851H.pdf

    USB2851H.pdf是一份关于阿尔泰公司生产的数据采集卡USB2851的硬件使用说明书。USB数据采集卡是一种能够通过USB接口将外部模拟或数字信号输入计算机,并进行处理的电子设备。在工业自动化、数据记录、信号监测等领域...

    VC++ 基于picolo图像采集卡 实现视频图像的捕获及位图输出

    picolo图像采集卡是一种常见的硬件设备,用于从摄像头或其他视频源获取实时图像数据,并将其转换为计算机可处理的形式。通过VC++,我们可以编写软件应用程序来控制这个过程,实现多样化的图像处理和输出功能。 首先...

    A/D数据采集卡设计

    1. **A/D转换**:A/D(Analog-to-Digital)转换是将模拟信号转化为数字信号的过程,是数字系统与模拟世界之间的桥梁。在这个设计中,使用了逐次逼近式A/D转换器ADC0809。 2. **ADC0809**:ADC0809是一款8通道、8位...

    自制DV实现视频采集源码

    DirectShow支持多种编码器,如MPEG-4、H.264等。开发者需要熟悉如何配置和使用这些编码器将数据写入文件。 6. 实时预览: 在开发过程中,实时预览功能是必不可少的,它可以帮助调试和验证视频采集的效果。这通常...

    ADHC 8000(米卡MC8000)视频采集卡驱动

    在IT领域,视频采集卡是一种至关重要的硬件设备,它能够将模拟视频信号转换为数字格式,以便在计算机上进行编辑、存储和播放。ADHC 8000(米卡MC8000)视频采集卡是这样一种专门设计用于高清晰度视频处理的专业级...

    基于LabVIEW的通用数据采集卡的驱动.pdf

    MS-1229采集卡的板基地址通常设置为0310H,通过十根地址线进行操作。 #### CIN驱动设计 为了实现LabVIEW与MS-1229采集卡之间的有效通信,作者采用了CIN机制。CIN是一种LabVIEW与外部代码(如C语言)交互的接口,...

    基于DirectShow的视频采集和传输

    综上所述,基于DirectShow的视频采集和传输系统充分利用了DirectShow的强大功能,结合高效的H.264视频编码标准和实时的Socket通信机制,实现了高质量的视频采集、压缩及网络传输。这种方法不仅克服了传统视频采集...

Global site tag (gtag.js) - Google Analytics