1.怎样把视频输出大小变得小点怎么把视频大小变小质量不变
2.FFmpeg 集成 x265 编译及解码
3.我们的源码码流分析软件支持屏幕内容编码SCC显示了!
4.FFmpeg详细安装步骤和使用笔记
5.调试经验Ubuntu FFmpeg开发环境搭建
6.FFmpeg学习(一)开篇
怎样把视频输出大小变得小点怎么把视频大小变小质量不变
一、我们先来了解下主流的下载x和x的区别
1. H.是ITU(International Telecommunication Union,国际通信联盟)和MPEG(Motion Picture Experts Group,源码运动图像专家组)联合制定的下载视频编码标准。
而x是源码一个开源的H./MPEG-4 AVC视频编码函数库,是下载网络节点源码最好的有损视频编码器之一。
H.从年开始,源码到年形成草案,下载最后在年定稿有待核实。源码在ITU的下载标准里称为H.,在MPEG的源码标准里是MPEG-4的一个组成部分--MPEG-4 Part ,又叫Advanced Video Codec,下载因此常常称为MPEG-4 AVC或直接叫AVC。源码 H.编码能实现非常好的下载压缩比,有广泛的源码适用码率(适于从超低码率低延迟的电话会议到高码率的BluRay光盘和HDTV码流),良好的硬件支持(以PSP、iPod和显卡DXVA为代表)和众多强大的厂商作后盾。 x始于年,从当开源社区的MPEG4-ASP编码器Xvid小有所成时开始的,经过几年的开发,特别是Dark Shikari加入开发后,x逐渐成为了最好的视频编码器。
2. x是一个用于编码符合高效率视频编码(HEVC/H.)标准的视频的开源自由软件及函数库。x的开发始于年3月。MulticoreWare于年7月日对外公布了x的源代码。
最新版本(2.8)发布于年5月日。x项目由若干家公司资助,这些公司决定着项目的开发需求,并且享有着在它们的产品中使用x而不需要将产品以GPL 2许可发布的商业授权。x项目亦被授予了使用x中同样可用于HEVC的源代码的权利。
x的源代码使用C++及汇编语言编写。 高效率视频编码(High Efficiency Video Coding,简称HEVC),又称为H.和MPEG-H第2部分,是一种视频压缩标准,被视为是ITU-T H./MPEG-4 AVC标准的继任者。
年开始由ISO/IECMoving Picture Experts Group(MPEG)和ITU-TVideo Coding Experts Group(VCEG)作为ISO/IEC -2MPEG-H Part 2或称作ITU-TH.开始制定。第一版的HEVC/H.视频压缩标准在年4月日被接受为国际电信联盟(ITU-T)的正式标准。HEVC被认为不仅提升视频质量,同时也能达到H./MPEG-4 AVC两倍之压缩率(等同于同样画面质量下位元率减少到了%),可支持4K清晰度甚至到超高清电视(UHDTV),最高清晰度可达到×(8K清晰度)。 数个基于HEVC延伸的编码标准正在进行中,包含range extensions(支持高级的影片格式)、可调式编码和3D视频编码标准。
二、视频二次编码都是有损的,只是没拿放大或者没在寸左右上的屏幕 你很难区分视频的细节部分。只是说可能在一定环境下采取一定的压制参数来达到你的需求片源码率和体积是成正比的,源片源的视频要画面要好,再次编码压制的视频画面才会效果好。
三、我们来看下使用x来对蓝光原盘的编码压制大小,比如 侏罗纪公园2**的4K源碟盘。
它的原始大小为.8GB,哇喔,源码网官方这容量真是大哦,这么大可以收藏好多**姐的 !我想一般影视烧友也是烧不起吧,所以就有了高质量重编码压缩。 那么我们先分离这些视频素材吧。其中主视频也有.6GB, 英语声道音轨也有3.GB
压缩到主视频9GB左右吧,适合在寸以下的屏幕来观看
这个是我Simple x Launcher软件工具压制完的日志,由于家里有功放设备原始音轨就不压缩了。主视频9.GB+音轨3.GB=.GB,节省了很多空间,这样**姐又有地方躺了。
视频的大小取决于视频的编码格式,现阶段使用h能够使用很小的大小就可以有比较高的画质。
H标准的主要特点如下:
1.更高的编码效率:同H.等标准的特率效率相比,能够平均节省大于%的码率。
2.高质量的视频画面:H.能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.的应用亮点。
在专业使用可以使用pr等视频剪辑软件转格式,日常使用的话使用格式工厂就可以了。
需要工具:电脑、格式工厂软件一、安装图一的格式工厂软件。
二、然后点击旁边的webm。
三、点击这个添加。
四、选择下载的需要变小的视频。
五、点击这个确定。
六、接着点击这个开始。
七、在这里看到这个转换的视频的大小了的,只需要等它转换完成。八、然后点击这个输出文件。九、然后就可以看到转换后的视频文件大小。
FFmpeg 集成 x 编译及解码
x 是一个免费开源的视频编码库,支持 H./MPEG-H HEVC 格式,遵循 GNU GPL 许可证。
为了在 FFmpeg 中集成 x,以支持 H. 编解码功能,需先编译 x。然而,并非所有 FFmpeg 版本都能直接使用 x,如在 Android、Windows 和 Linux 平台上使用 Android NDK re 时,可能会遇到符号缺失、无法编译 .S 文件等问题。
一、x 的编译
在进行编译前,请确保系统使用的是 Ubuntu .。编译目录结构应根据平台选择相应的餐具溯源码目录,例如在 Windows 平台下使用 i 或 x_ 目录,Android 则使用 arm 平台的 armeabi-v7a 或 arm-v8a 目录。
编译 x 时,使用特定脚本执行编译过程,如 `build_x.sh`,然后在同级目录下的 build 目录中生成编译产物。
对于 Android 平台,需要使用 Android NDK re 的 Linux 版本。需要调整 `build_x.sh` 脚本中的内容,并修改 x 源代码以支持 NEON 处理。编译 x Release_3.5 版本时,可能遇到 fseeko 和 ftello 符号缺失的问题,这是因为 NDK re 中无法导出这些符号。解决办法是使用 x 2.6 版本,该版本能正常编译。
在 Windows 平台上,可以使用 mingw-w-build 工具来搭建编译环境。对于 Linux 平台,仅需编译 x_ 版本。
二、FFmpeg 集成 x 的编译
在编译 FFmpeg 时,需对脚本进行修改以集成 x。这包括在 Linux 系统上增加特定差异点,确保 FFmpeg 能够成功利用 x 进行 H. 编解码。
我们的码流分析软件支持屏幕内容编码SCC显示了!
HEVC屏幕内容编码技术(SCC)在视频编码标准中得到支持,但市面上大多数普通HEVC解码器不支持SCC,例如ffmpeg和VLC。为了进行SCC码流知识学习和编码码流验证,需使用支持SCC解码的软件,HM参考软件的SCM版本是其中之一。
HM参考软件的SVN源码目录中,HM.0及其后续版本已将RExt扩展部分并入主分支,后缀为SCM的版本包含了SHVC、MV-HEVC、3D-HEVC分支,支持普通H码流及SCC码流解码。已为Gitl HEVC Analyzer添加了HM.版本解码器,可实现SCC码流解码。
要为Gitl HEVC Analyzer增加HM.+SCM8.8版本解码器支持SCC编码技术,首先需了解该软件主要功能:标准解码器对H码流解码并保存信息到txt文件;在解码后,通过正则表达式匹配解析信息并使用QT软件显示。
对于仅需解码和显示SCC H码流,使用HM.+SCM8.8解码器对码流进行解码,然后将YUV文件通过QT软件显示即可。首先使用HM.+SCM8.8编码一段SCC码流。打开VS工程,设置TAppEncoder为启动项目,生成TAppEncoder.exe文件。
新建文件夹并拷贝可执行文件和配置文件.cfg,编写.bat脚本执行编解码器命令,或参照help文档配置参数进行编码。运行.bat脚本开始编码,查看编码过程是否支持SCC技术。编码后得到的SCC码流需使用支持SCC解码的解码器进行解码。
尝试使用VLC、udi溯源码FFMEPG等解码器解码SCC码流,发现图像解码和显示异常。使用升级过的Gitl HEVC Analyzer解码并显示SCC码流,画面显示正常。后续文章将介绍SCC码流的CU划分、MV等信息解析和显示。
FFmpeg详细安装步骤和使用笔记
FFmpeg安装步骤与使用指南
FFmpeg是一款强大的多媒体处理工具,它支持音频、视频、流媒体和图像的跨平台操作,功能涵盖解码、编码、转换、流处理等,适用于多种格式,如MP4、AVI、MKV、MP3等,就像一个多功能的多媒体工具箱。安装版本
FFmpeg提供了GPL许可证和GPL Shared两种版本,GPL适用于要求源代码公开的应用,而GPL Shared则允许以库形式嵌入到专有软件中,无需公开源代码。Windows安装
下载解压到D:\Software\ffmpeg-master-latest-win-gpl
找到bin目录中的ffmpeg、ffplay和ffprobe工具
添加ffmpeg到系统环境变量的path中
验证安装,通过cmd输入ffmpeg -version
Linux安装
在Debian/Ubuntu、Fedora、CentOS和openSUSE等系统中,FFmpeg安装步骤有所不同
使用功能
-
转码视频和音频格式
-
剪切、合并视频
-
查看解码器和编码器列表
-
控制比特率以影响文件大小、质量与传输带宽
硬件加速
利用NVIDIA CUDA、AMD AMF或Intel Quick Sync Video等加速功能提升转码效率常见编码格式对比
H./AVC:普及广泛,兼容性佳
H./HEVC:高效编码,适合高清视频
VP9和AV1:新兴格式,可能需要特定设备支持
其他格式如MPEG-2、MPEG-4等也有适用场景
调试经验Ubuntu FFmpeg开发环境搭建
在Ubuntu ..2 LTS系统上搭建FFmpeg 6.0开发环境的步骤如下:1. 创建项目目录
在项目根目录下创建三个文件夹,可手动或通过终端命令行操作:2. 安装依赖库
确保软件列表是最新的,执行 `sudo apt-get update`。然后,通过终端安装必要库:3. 选择性编译和安装
根据需求选择性安装,例如,若无需libvpx,可跳过相应库的安装。多核系统建议使用`make -j`加速编译,例如`make -j4`。编码库可安装在主目录,但需修改环境变量HOME。NASM
在终端执行相关NASM安装命令。编译特定库
libx: H.编码,配置--enable-gpl --enable-libx,源码编译
libx: H./HEVC编码,配置--enable-gpl --enable-libx,源码编译
libvpx: VP8/VP9编码,配置--enable-libvpx,openai源码前端源码编译
libfdk-aac: AAC音频编码,配置--enable-libfdk-aac(可能需要--enable-nonfree),源码编译
libmp3lame: MP3音频编码,配置--enable-libmp3lame,源码编译
libopus: Opus音频编解码,配置--enable-libopus,源码编译
4. 安装FFmpeg
直接在终端运行FFmpeg编译安装命令,重启后确认安装路径。5. 确认和测试
检查ffmpeg版本和配置,通过`ffplay`命令测试其功能(在Ubuntu图形界面进行)。6. 调试
调试时,需使用包含调试信息的版本ffmpeg_g,通过清理和重新配置config选项启用Debug功能。FFmpeg学习(一)开篇
为什么要学习FFmpeg?本人希望深入研究音视频领域,音视频领域内容丰富,我计划从多个方面逐步学习:FFmpeg常用功能实践、FFmpeg源码研究、OpenGL、OpenGLES、Metal、AR、WebRTC、直播架构等。
当前音视频有哪些应用场景?从众多应用场景可以看出,音视频技术至关重要,尤其在5G时代,网络传输问题得到极大提升,音视频需求将爆发式增长。以下是一个简单播放器架构图:
音频解码和视频解码一般使用FFmpeg解码,iOS8之后提供了VideoToolBox框架支持硬解码。视频渲染通常使用OpenGL直接利用GPU渲染,还有GPUImage、SDL、VLC等第三方框架。
音视频播放中的音视频同步是一项复杂的技术。学习一项技术需要高效的方法,只有不断实践才能深刻理解。学习FFmpeg也需要好的文档,以下列举一些必备的学习文档地址:
以上都是英文文档,如果英文学习困难,可以参考以下中文资料:
此外,推荐两本非常好的书籍:
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~
1. FFmpeg简介:FFmpeg是一套用于记录、转换数字音频、视频并将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但也可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,年至年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
2. FFmpeg能做什么
3. FFmpeg架构模块组成:我们先看一张FFmpeg的架构图:
下载好的源码,我们也可以看到大致的源码结构:
3.1 libavutil
3.2 libavformat
FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。
3.3 libavcodec
AVCodec中实现了目前多媒体绝大多数的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.(AVC)编码,需要使用x编码器;H.(HEVC)编码,需要使用x编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式或硬件编解码,则需要在AVCodec中增加相应的编解码模块。
3.4 libavfilter
3.5 libavdevice
3.6 libswscale
3.7 libpostproc
3.8 libswrressample
3.9 ffmpeg
3. ffsever
3. ffplay
4. FFmpeg安装:下载源码后,我们可以查看一下目录结构:
输入./configure --help命令查看配置信息
内容太多需要分页,输入./configure --help | more
从上面的帮助,我们可以尝试输入:./configure --list-decoders查看所有解码器
接下来我们可以尝试输入:./configure --list-encoders查看所有编码器
接下来我们可以尝试输入:./configure --list-filters查看所有滤镜器
接下来我们可以尝试输入:./configure --list-muxers查看FFmpeg的封装,封装Muxing是指将压缩后的编码封装到一个容器格式中,我们输入./configure --list-muxers来查看FFmpeg支持哪些容器格式:
从上面打印信息来看,FFmpeg支持生成裸流文件,如H.、AAC、PCM,也支持一些常见的格式,如MP3、MP4、FLV、M3U8、WEBM等。
从上面解封装又称为解复用格式的支持信息中可以看到,FFmpeg支持的demuxter非常多,包含image、MP3、FLV、MP4、MOV、AVI等。
从支持的协议列表中可以看到,FFmpeg支持的流媒体协议比较多,包括MMS、HTTP、HTTPS、HLS、RTMP、RTP,甚至支持TCP、UDP,它还支持使用file协议的本地文件操作和使用concat协议支持的多个文件串流操作。
接下来我们可以尝试输入:./configure --list-parsers查看FFmpeg支持的解析器
接下来我们可以尝试输入:./configure --list-bsfs查看FFmpeg支持的字节流过滤器
接下来我们可以尝试输入:./configure --list-indevs查看有效的输入设备
接下来我们可以尝试输入:./configure --list-outdevs查看有效的输出设备
如何在PC上正确播放4K HDR视频
在探讨如何在个人电脑上正确播放4K HDR视频之前,首先需要了解如何分辨一部视频是否为真正的HDR内容。通过使用Mideainfo软件并检查HEVC编码、HDR、PQ、bit、BT.等描述,可以断定视频为HDR格式,最高画面亮度需求可达nit。面对颜色淡、亮度不足的问题,正确的解决方案是使用Madvr滤镜,以确保HDR内容的正确映射。对于Windows用户,开启HDR开关后,MPV、VLC、Kodi等播放器以及使用MadVR滤镜的Potplayer、MPC-HC等工具可以正确播放HDR格式的片源。此外,VLC还支持HLG格式片源的正确播放和显示。
随着科技的进步,播放器功能的增强,MPC VR滤镜被完美解码集成,使得HDR播放体验更加流畅。如果你的PC配备了支持HDR的显示器,连接并开启HDR模式,可以充分利用显示器的高亮度和广色域特性,享受更佳的视觉体验。连接电视时,确保使用支持HDR的HDMI端口,并在设置中开启相应的增强模式。在Windows系统中,通过设置播放HDR游戏和应用,可以激活HDR模式,使用PQ感知量化曲线和BT色彩空间,以替代传统2.2伽马的sRGB模式。在Windows HD Color设置中,确保播放HDR游戏和应用以及流式传输HDR的开关打开,非HDR画面在显示器上的亮度设置可以根据显示器的HDR等级进行调整。开启Windows HDR开关后,显示设备的亮度会自动设为最大值,SDR内容则受到限制以避免过亮。
为了验证播放软件是否正在输出HDR画面内容,可以使用截图软件截图,图像高亮部分为白色即代表为HDR状态。SDR内容未经限制直接以高亮度显示可能会导致视觉不适,而HDR视频则遵循特定的亮度规则。在Windows 系统中,无需特别开启HDR开关,使用Madvr作为渲染器,全屏播放即可自动输出HDR,并激活电视的HDR状态。此外,Windows自带的“**和电视”播放器,通过购买HEVC解码器,提供了流畅的操作和媲美索尼内置播放器的画质,支持MKV的内置字幕和音轨,以及选择外挂字幕。在连接支持HDR的显示器或电视时,播放器可以完美实现包括DTS、DTS HD、TrueHD、DD+(EAC3)的源码输出,对于杜比ATOMS音轨的源码输出,可能至少正确输出了其中的TrueHD,但具体情况还需进一步验证。
对于杜比视界profile 5.0的MP4格式,即WebDL类流媒体所用的单层杜比视界片源,在Windows 下可以安装dolby vision+hdr.appxbundle插件来解决偏色问题,但只能使用**与电视播放器播放,且需要先安装HEVC解码器,开启win HDR开关后,可以得到HDR图像观感。此外,Kodi播放器现在支持HDR和4K原盘导航,搭配个人电脑(HTPC)使用,体验更加流畅。对于连接支持HDR的电视时,确保在电视端也开启HDR模式,以实现完整的HDR体验。总体而言,通过正确的设备配置和软件选择,用户可以在个人电脑上轻松播放和欣赏4K HDR视频,享受更佳的视觉效果。
在电脑上怎么播放4K**视频新手教程
随着UHD蓝光碟片发行渐入佳境,网络视频发行也迎来高速发展,4K UHD HDR规格的影视剧片源真的越来越多了,如果你是个下载党,或者朋友丢给你个Net Flix最新剧集,一看是4K HDR,一定非常卡新。当然首先要确定这到底是不是一部真正的HDR视频,这时我们需要Mideainfo这个软件,这里强烈建议直接安装Klite Code Pack 的Mega版本,里面包含的不少东西像LAV和MadVR后面会用到。
1、MKV文件右键选择MediaInfo,当看到HEVC编码、HDR、PQ、bit、BT.这些描述,就可以断定是一部HDR格式的UHD视频了,而且能看到最高画面亮度需求为nit。
2、显示器开启HDR,接着在win桌面点右键,选择显示设置。
3、点开播放HDR游戏和应用的开关,屏幕黑一下,恭喜你开启了windows的HDR模式,这个模式专门为游戏和HDR视频准备,其他内容和界面颜色感觉有点怪怪的,可能因为我这台显示器并非广色域的缘故。接着点击Windows HD Color设置。
4、HDR UHD播放器推荐DVDFabPlayer5是我个人以及圈内达人普遍推荐的UHD播放器,支持HDR-SDR转换,完美实现HDR图像的还原,支持字幕、高规格无损音轨的本机解码或源码输出,基本上是全能的。当然PotPLayer+LAV+MadVR也可以用,但如果以索尼电视作为HDR还原图像参考的话,个人感觉比不上DVDFab。DVDFab虽好,但是不免费。
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视频序列。我们使用的是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中,以相同方式进行编码,即可正常播放视频。