1.HEVC开源编解码器HM编译及使用方法
2.FFmpeg三大工具--ffmpeg
3.如何使用MediaCoder无损转换格式
4.超级好用的源码C++实用库之Base64编解码
5.Android 抖音常用反编译工具,抖音API接口数据采集教程
6.FFmpeg之ffprobe ffmpeg提供的解码三大工具之一
HEVC开源编解码器HM编译及使用方法
HM (HEVC Test Model)是一个开源软件,用于帮助我们理解HEVC编码标准。工具它包括编码器TAppEncoder和解码器TAppDecoder,源码能实现HEVC标准中的解码所有功能,但性能不如商用编码器。工具短信登录界面源码该项目由JVET维护。源码本文记录了笔者在Ubuntu下根据HM项目的解码README,编译并运行一个小demo的工具过程。
JVET并未将HM托管到GitHub,源码而是解码将其托管在gitlab仓库vcgit.hhi.fraunhofer.de...中。我们可以在该页面找到仓库的工具git URL,然后在Ubuntu中使用git clone命令克隆源代码:
进入代码目录后,源码创建名为build的解码文件夹,并进入该文件夹:
在build目录下运行以下指令:
注意,工具执行上述指令前需要预先安装cmake工具。
执行cmake后,在当前目录下应该会看到一个Makefile,然后我们可以使用make进行编译:
编译过程可能较长:
编译过程中,如果没有错误,几分钟内即可完成。如果读者在编译过程中遇到依赖问题,可以自行搜索并安装,HM的编译过程相对顺利,没有太多难点。
当make的进度达到%时,说明编译完成。最后几行输出表明编译出的可执行文件位于相应位置,可以在“HM/bin/umake/gcc-9.4/x_/release”目录下找到“MCTSExtractor”“parcat”“SEIRemovalApp”“TAppDecoder”“TAppDecoderAnalyser”“TAppEncoder”等可执行文件。
接下来,我们使用TAppEncoder进行测试,将一个未压缩的yuv序列编码成HEVC视频序列。我们使用的puppet 4.0源码安装是Derf's Test Media Collection数据集中的akiyo视频序列。下载akiyo_cif.y4m文件后,将其与TAppEncoder可执行文件放在同一文件夹中。
在HM项目的doc目录下,有一个名为software-manual.pdf的说明文档,详细介绍了HM软件的使用方法。通过阅读该文档,我们可以了解TAppEncoder通过-c参数指定配置文件,并在项目的cfg目录下找到示例配置文件。我们将其中一个配置文件拷贝到工作目录下,并执行代码。如果出现错误,可能是因为配置文件中没有指定帧率和编码总帧数。这是一个HM项目的小坑,需要仔细调试。
修改配置文件后,再次执行指令,即可正常编码。编码完成后,可以在当前目录下找到输出文件akiyo_hevc.bin,使用PotPlayer播放,显示输入格式为HEVC。但可能存在一些播放异常,需要进一步检查。
我们可以使用开源软件GitlHEVCAnalyzer对akiyo_hevc.bin进行分析,该软件可以显示视频中的CU、PU等单元以及分块信息。
--更新:使用HM的TAppEncoder对akiyo_cif.y4m进行编码时,编码后的视频画面会发生色彩异常和抖动异常。目前,已找到原因并成功解决。在解决此问题之前,我们需要了解y4m文件格式。脚本语言源码Y4M是一种保存原始YUV序列的文件封装格式,包含视频属性信息。而HM的TAppEncoder编码器需要接收仅由视频帧组成的像素矩阵数据。因此,直接将akiyo_cif.y4m文件输入到HM编码器中可能导致帧不对齐,造成抖动。解决方法是提取视频每一帧像素矩阵,丢弃视频属性信息,并将它们写入新文件。使用ffmpeg进行视频内容提取后,将得到的akiyo_yuv.yuv文件输入到TAppEncoder中,以相同方式进行编码,即可正常播放视频。
FFmpeg三大工具--ffmpeg
FFmpeg三大核心工具详解
FFmpeg的静态版本bin文件夹内,主要包含ffmpeg.exe、ffplay.exe和ffprobe.exe三个可执行文件,这些是通过源代码编译后的产物,它们构成了FFmpeg的核心工具。本文将主要聚焦ffmpeg,深入探讨其功能和使用。 ffmpeg的核心功能在于编解码,其工作流程相对直观。通过ffmpeg命令,我们可以执行各种操作。首先,执行`ffmpeg --help`可以查看其常用命令,大致分为音频、视频、字幕等六个部分,提供了丰富的选项和功能说明。 对于命令查询,有如`ffmpeg -formats`用于查看编码器列表,react redux项目源码它包括编码类型、多线程支持、试验版本信息以及渲染模式等详细信息。同样,`ffmpeg -filters`用于查看滤波器列表,帮助用户进行视频处理和分析。 想要实践操作,可以先在需要的文件夹中打开命令行窗口。例如,键入命令后,用户可以开始执行具体任务,进一步掌握ffmpeg的实用技巧。如何使用MediaCoder无损转换格式
MediaCoder是一个通用音频/视频批量转码工具,整合了众多优秀音频视频编解码器和工具。该软件曾是基于GPL协议的自由软件,后由黄轶纯封闭源代码,改以MediaCoder EULA协议发布,并移出Sourceforge。本文将介绍MediaCoder如何无损转换格式的步骤。
步骤一:将需要转换格式的视频文件拖入MediaCoder界面。
步骤二:调整设置。在视频选项卡中,勾选红色箭头所指的复选框。在音频和容器选项卡中,设置输出文件格式和编码器,例如选择H.格式及相应的编码器。在容器选项卡中设定目标输出格式。
步骤三:点击开始按钮,执行转换任务。转换过程简单快速,本质上是更换容器,理论上几乎立即完成。python源码添加xmlrpc
在转换封装格式时,通过视频导出选项可以设置码率,追求品质时可选择最高码率。选择需要的封装格式,如H.,设置编码器和容器,最后点击开始按钮启动任务队列。
下载链接:pan.baidu.com/s/1ZIl3WQ... 提取码:
超级好用的C++实用库之Base编解码
对于寻求C++实用库的开发者,可以访问微信公众号“希望睿智”。只需添加关注并发送消息“超级好用的C++实用库”,即可获取Base编解码库的源码链接。
Base编码是一种关键的编码技术,它将二进制数据转化为可打印的ASCII字符,常用于在HTTP等协议中传输、音频、视频等非文本数据。编码过程基于每3个字节(位)转换为4个ASCII字符(6位)的规则,使用个字符,包括字母、数字以及特殊符号+和/。
编码时,如果原始数据长度不是3的倍数,会用填充字符(=)进行调整,确保编码后的字符串长度为4的倍数。解码则是相反的过程,去除填充字符后,将4个Base字符还原为3字节的二进制数据。
我们的CHP_Base库提供了一组简洁的接口:GetEncodeLen用于计算编码后字符串的预期长度,Encode负责实际编码操作;GetDecodeLen则预估解码后数据的大小,Decode执行解码。这些接口都是静态函数,无需实例化。
尽管Base编码增强了数据的可读性,但它并非加密手段,不能保障数据安全。在处理敏感信息时,应采用专门的加密技术。此外,编码过程会增加约%的数据大小,因此在传输或存储大数据时,要考虑带宽和存储空间的需求。
总的来说,Base编解码是一个实用且易用的工具,适用于多种数据传输和存储场景,尽管在效率和安全性上有所牺牲,但对于常规应用来说,它提供了便利性。
Android 抖音常用反编译工具,抖音API接口数据采集教程
Android 抖音常用反编译工具,抖音API接口数据采集教程
在进行Android抖音应用的数据采集和分析时,反编译工具成为了解密和操作应用内部逻辑的关键。以下介绍了一些常用的反编译工具,它们各自有着独特的功能和适用场景。
apktool - 反编译apk,重构资源与代码。主要功能在于将资源解码,并在修改后可以重新构建apk。下载地址:ibotpeaches.github.io/A...
dex2jar - 反编译apk,解压classes.dex文件。2.1版本支持多级dex反编译,2.0及之前版本不支持此操作。下载地址:down.pojie.cn/Tools/A...
JD-GUI - 将class文件反编译成java源代码,支持图形化界面,交互式操作较为简单。下载地址:down.pojie.cn/Tools/A...
AndroidKiller - 提供可视化、全自动的反编译、编译、签名功能,支持批量编译APK,操作界面友好。下载地址:down.pojie.cn/Tools/A...
AndroidCrackTool - 专为Mac用户设计的反编译工具,提供下载链接:pan.baidu.com/s/1efZuAM... 提取码: h8je,GitHub链接:github.com/Jermic/Andro...
GDA - 作为一款国产交互式反编译器,除了反编译功能外,还提供包过滤的分析功能、算法工具、文件转换工具等。下载地址:github.com/charles2gan/...
jadx - 反编译利器,支持命令行和图形界面操作,适用于命令行和图形界面环境。下载地址:github.com/skylot/jadx
autosign - 用于打包签名的软件,需配置好java环境以确保正常使用。专门针对签名操作设计。
Xposed - hook框架,允许在不修改APK的情况下影响程序运行,修改系统的框架服务。下载链接:pan.baidu.com/s/WnJD8... 提取码: 7sgb
IDAPro - 静态逆向工具,用于反汇编专业操作,适用于Windows版本。IDA Pro 7.0是世界范围内的顶级交互式反汇编专业工具之一。
Unidbg - Java Hook框架,能在pc端直接调用so文件中的函数,提供下载链接:github.com/zhkl/uni...
这些工具在Android应用开发、逆向工程、API接口数据采集等领域发挥着重要作用,帮助开发者深入理解应用内部逻辑,实现数据的获取与利用。在选择工具时,应根据具体需求和应用场景进行合理选择。
FFmpeg之ffprobe ffmpeg提供的三大工具之一
ffprobe是ffmpeg工具之一,专门用于解析音视频文件,获取封装格式、音频/视频流信息、数据包信息和帧信息等。其源码位于ffprobe.c,开发时可通过分析源码获取所需字段信息。
查看文件的封装格式,可输出包含格式类型、文件大小、编码器等信息。了解流信息时,将展示音频/视频编码、比特率、帧率等。
封装格式、流信息之间存在关联,如PAR(像素宽比)、SAR(样本宽比)与DAR(显示宽比)之间的等式关系:PAR * SAR = DAR。以一个5:4像素宽比为例,若显示宽为,高为,则计算得出SAR为:,表示像素方格呈长方形。
ffmpeg提供了多种SAR,用于精确解析数据包信息。查看音视频文件的数据包时,将对比第一、第二个包的大小、时间戳、类型等数据。
对于解码后的帧,同样会提供详细信息,包括视频流的第一、二帧与音频流的第一、二帧的帧率、尺寸、类型等。
总之,ffprobe作为ffmpeg的重要组成部分,帮助开发者深入理解音视频文件结构,提供全面的解析信息,助力音视频开发与优化。
ijkplayer源码分析 视频解码流程
深入ijkplayer源码,本文聚焦视频解码流程。在video_thread中,我们首先审视IJKFF_Pipenode结构体,定义于ff_ffpipenode.h和ff_ffpipenode.c。pipenode封装软解与硬解功能,初始化流程在stream_component_open中启动,调用pipeline.ffpipeline_open_video_decoder实现。
在视频解码流程中,视频帧处理在video_thread线程下进行。从packet_queue读取视频packet,然后通过软/硬解码,最终将解码结果放入frame_queue。软解通过ffpipenode_ffplay_vdec.c实现,硬解则在ffpipenode_android_mediacodec_vdec.c中执行。不论软解还是硬解,解码后的结果均被引导至ff_ffplay.c#queue_picture进行队列化,准备渲染。
对于LinuxC++音视频开发者,学习资源尤为关键。免费音视频开发资料、视频、学习路线图以及面试题,涵盖C/C++、Linux、FFmpeg、WebRTC、RTMP、NDK和Android音视频流媒体高级开发,免费提供给有需求者。学习交流君羊群,点击加入即可获取资料。
最后,渲染流程在stream_open方法中启动,创建video_refresh_thread线程。此线程从frame_queue中读取视频帧,进行音视频同步后,完成渲染。此环节聚焦渲染流程,音视频同步细节暂不展开。