本文将详细介绍如何使用 FFmpeg 进行视频压缩,教你掌握视频压缩的核心技巧。什么是视频压缩?视频压缩,顾名思义,就是通过某种技术手段将视频文件体积变小。...码率越高,视频的质量越好,但文件大小也越大。视频压缩时,调整码率是最常用的手段之一。分辨率(Resolution):分辨率是指视频的像素宽度和高度。降低分辨率可以有效减少文件大小,但同时也会影响画质。...以下是一个将视频分辨率调整为 720p 的例子:ffmpeg -i input.mp4 -vf scale=1280:720 output_720p.mp4-vf scale=1280:720:指定将视频的分辨率调整为...分别表示原视频的宽度和高度,iw/2:ih/2 则表示将视频的宽度和高度分别缩小一半。...无论是上传社交媒体、嵌入网页,还是保存高质量的档案视频,FFmpeg 都能为你提供解决方案。本文详细介绍了如何使用 FFmpeg 进行视频压缩,希望你现在对视频压缩的原理和操作有了更清晰的了解。
引言 FFmpeg是音视频处理领域,应用范围最广的一个项目。 我们日常使用的大小桌面版视频播放器,或者命令行使用的播放器,大多数是基于 ffmpeg 开发的。...如果说它是音视频编解码处理中的老大哥,这一点都不为过。 本文主要从一个小知识点作为切入面,深入介绍一下,如何有效地压缩和降低视频文件的体积。 ?...问题的提出 有一位题主遇到下面的情况,他有一个视频文件,宽高比是 1024x576,现在想要将尺寸调整为 720x480,应该怎么办? 当然了,这对于 ffmpeg 应用程序来说是小菜一碟。...你可以告诉Scale为给定高度选择偶数值(在本例中为720): scale="trunc(oh*a/2)*2:720" 或者指定高度, scale="1280:trunc(ow/a/2)*2" 引申讨论...iw:输入文件的画面宽度 ih:输入文件的画面高度 这两个是系统的常量,可以拿来直接使用。 写在最后 其实 ffmpeg 所提供的过滤器功能十分复杂,而且功能十分强大。
slice: slice 是 FFmpeg 中使用的一个内部结构,在 codec、filter 中常有涉及,通常指图像中一片连续的行,表示将一帧图像分成多个片段。...U 分量和 V 分量垂直采样因子也是 2,因此 U 分量和 V 分量的行数少了,只有图像高度的一半,但垂直方向的采样率并不影响一个 plane 的 stride 值,因为 stride 的定义决定了其值只取决于水平方向的采样率...若源图像像素格式是 yuv420p(有 Y、U、V 三个 plane),位深是 8(每一个Y样本、U样本、V样本所占位宽度是 8 位),分辨率是 1280x720,则在 Y plane 的一行数据中,...对于 BICUBIC 算法,param[0] 和 param[1] 调整基函数的形状,param[0] 调整 f(1),param[1] 调整 f´(1)。...对于 GAUSS 算法,param[0] 调整指数,从而调整了截止频率。 对于 LANCZOS 算法,param[0] 调整窗口函数的宽度。
-filter: 视频过滤器,如 -filter:v "crop=w:h:x:y"用过滤器v裁剪视频 w - 源视频中裁剪的矩形的宽度 h – 矩形的高度。...命令处理流程 我们还是以这条命令为例,分析FFmpeg命令对视频的处理经过哪些流程 ffmpeg -y -i input.mp4 -acodec copy -vcodec libx264 -s 720x1280...720 * 1280 重新编码:编码器libx264重新把数据帧编码成编码的数据包; 复用:把数据包按格式avi封装; 这个简单流程比较重要,要了然于心; FFmpeg常用命令 打印视频基本信息 $ ffmpeg...w – 我们想自源视频中裁剪的矩形的宽度。 h – 矩形的高度。 x – 我们想自源视频中裁剪的矩形的 x 坐标 。 y – 矩形的 y 坐标。...-c copy output.mkv 是字幕文件,然后这里选用的是软字幕方式比较快 总结 根据项目需要,简单学习了下音视频的非常基本的概念和FFmpeg的基本使用,留个记录;
FFMPEG是特别强大的专门用于处理音视频的开源库,既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。...我们在开发TSINGSEE青犀视频产品过程中也会采用FFMPEG来对现有的系统进行简单的编译及调整,比如TSINGSEE青犀视频通道FFmpeg获取视频片段。...本文将简要介绍一下 FFMPEG 库的基本目录结构及其功能,然后详细介绍一下我们在日常工作中,如何使用 ffmpeg 提供的工具来处理音视频文件。...rtmp://server/live/streamName视频流保存为dump.flv文件 实时推流命令 ffmpeg -framerate 15 -f avfoundation -i “1” -s 1280x720...在部分常见的应用场景中,由于ffmpeg的领先性、包容性,并且还具有高度的便携性,很多客户都会使用ffmpeg来进行视频的处理,通过ffmpeg推流到视频服务器,如果大家对ffmpeg推流比较感兴趣,也可以和我们交流
今天主要还是分享ffmpeg命令的一些操作:提前像素格式和PCM数据、如何利用ffmpeg进行命令转封装。...一、利用ffmpeg提取像素格式和PCM数据 1、提取YUV: 提取流媒体文件3秒数据,分变率和源视频一样: ffmepg -i test_1280x720.mp4 -t 3 -pix_fmt yuv420p...yuv420P_orig.yuv 效果如下: 播放花屏,主要是分辨率不对 修改一下: 现在就播放正常了 现在我们来转换成指定大小的像素格式大小的yuv格式 ffmpeg -i test_1280x720...3、rgb和yuv之间的转换: ffmpeg -s 1280x720 -pix_fmt yuv420p -i yuv420p_1280x720.yuv -pix_fmt rgb24 rgb24_1280x720...: 输出格式为s16(效果差不多和s16le): 输出格式为pcm_s16le: 二、如何利用ffmpeg进行命令转封装 1、保持编码格式: ffmpeg -i test.mp4 -t 60
常用的文件分辨率有 320*240 640*480 800*600 1280*720 1920x1080 先安装ffmpeg,然后利用ffmpeg将对应的MP4文件解封装为H264,再将对应的H264...解码为YUV,也可以使用ffmpeg转分辨率,或者转封装。.../ffmpeg -r 18 -i 640x480.h264 -vf scale=1280:720 1280x720.h264 mp4文件改变分辨率: ..../ffmpeg -i 640x480.mp4 -vf scale=1280:720 1280x720.mp4 将yuv编码为H264: ....-r 18是因为之前的H264的帧率就是18,根据真实文件的帧率进行调整。 在用ffmpeg查看h264文件的时候可以看到文件的参数,帧率也在其中:.
解封装 将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据 封装格式种类很多,例如 MP4,MKV,RMVB,TS,FLV,AVI 等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起...音视频同步 根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。...2、ffmpeg 添加水印基本流程 这里主要讲述如何利用 ffmpeg 向视频文件添加水印这一功能,文中最后会给出源代码下载地址以及视频下载地址,视频除了讲述添加水印的基本原理以及代码实现,还提到了要注意的一些地方...基本的流程如下图所示: 3、ffmpeg 向视频中添加文字 ffmpeg 支持添加文字能,具体如何将文字叠加到视频中的每一张图片,ffmpeg 调用了文字库 FreeSerif.ttf。...ffmpeg -ss 0 -t 10 -i SampleVideo_1280x720_20mb.flv -c copy -f flv -y SampleVideo_1280x720_20mb_10s.flv
在实际工作中,通常需要ffmpeg作为工具来验证一个问题,比如播放一个视频,提取一个码流,转码视频,转封格式等,用的时候才发现忘记了相关命令,Google一番花老大的力气才找到自己需要的命令行...本文总结常用的命令,并演示如何通过命令行的help用法去构建新的命令。... -i CCTV-2-dszg-1.mp4 -an -y -acodec copy video.h264 //提取视频 转码和转封 ffmpeg -i test_1920x1080.mp4 -acodec...copy -vcodec libx264 -s 1280x720 test_1280x720.ts 播放 播放编码后或封装后的数据 ffplay –x 800 –y 400 test.mp4 –autoexit...-i test_1280x720.mp4 -t 3 -pix_fmt yuv420p yuv420p_orig.yuv 提取RGB ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24
使用FFmpeg的好处在于:你可以在不离开命令行的情况下,执行提取视频、调整视频尺寸、转码、打包以及传输视频的所有操作。...使用FFmpeg进行HLS打包的基础步骤 好,现在让我们看下使用HLS打包点播文件的基础步骤: 从磁盘读取输入视频 将视频缩放/调整(scale/resize)为所需的多种分辨率版本 将每个缩放后的视频转码到所需码率...FFmpeg将视频调整为多种分辨率版本 第一步和第二步包括从磁盘中读取视频,然后将其调整为多种分辨率。...在我们的例子中,只有一个视频流,它被分成3个输出[v1]、[v2]、[v3]。它们每一个都作为FFmpeg缩放函数的输入,该缩放函数接受一个高度和宽度数值用于执行缩放。...这里,我们将输入视频调整为1080p、720p和360p。 这里的[v1out]、[v2out]、[v3out]是包含缩放过程的输出变量。
前言 大家在刷抖音或者B站视频时,视频都带有抖音和B站的标示。在腾讯视频、芒果TV等视频网站里观看视频时同样可以找到他们独特的标示。...Height设置为100%即水印高度取720,宽度则按比例缩放为1920*720/1080=1280,1280大于直播流宽度1152,因此水印会部分超出画面,可以结合下图理解。...如果继续使用API AddLiveWatermark接口添加的自定义水印模版的话,可以使用XPosition和YPosition这两个参数,分别对应X轴和Y轴的偏移,单位是百分比,需要根据水印图片和视频的分辨率...将水印拖到右上角,可以看到系统自动计算了X轴的百分比为80%,这里统计的是水印图片左边框线以左的宽度占整个视频窗口宽度的百分比,即剩下的宽度20%为柯南水印的宽度百分比,如下: image.png 如果这里...好吧,例子中的水印高度超过视频的三分之一,确实有点喧宾夺主。没关系,可以鼠标选中水印后缩放,改变水印大小,对应的XPosition和YPosition也会动态调整。
所用的工程基于上个博客编译成功的工程:使用FFmpeg4.3.1的SDK官方开发包编译ffmpeg.c 一、需求 使用 ffmepg 对音视频文件进行转码的时候可以看到其详细的进度。...\ffmpeg431_test.exe - i "SampleVideo_1280x720_20mb.mp4" - vcodec libx264 - acodec copy - y SampleVideo..._1280x720_20mb.flv 可以看到下面的相关信息: 但是我们看不到还有多久可以转码结束,以及当前已完成的进度为整体的多少。...二、实现获取 ffmpeg 转码的实时进度 1、思路梳理 ffmpeg_parse_options() 函数用来实现解析参数,并且打开输入输出文件功能,当打开输入文件时就可以从其中获取到音视频总时长,因此修改其内部的...2、源码修改 ①、在 ffmepg.h 文件里新增两个全局变量和一个声明一个获取实时的转码进度函数 int64_t __g_total_duration; // 音视频总时长 int64_t __g_tc_cur_pts
作为红利,我们还将学习FFmpeg在Ubuntu、Mac和Windows上的安装,并使用FFmpeg将AVI无损转换为MP4。 视频爱好者在网上最常问的问题就是:“如何将AVI转换为MP4?”...这里需要注意的关键点是:除非你告知FFmpeg不要重新编码,否则它将重新编码内容。无论如何一定要记住这一点!重新编码是默认设置。 这也是在文章开头我们指示FFmpeg只复制音频和视频的原因。...视频分辨率是1280x720、30fps,视频编码方式为High Profile的H.264/AVC,其码率为234 kbps。音频使用aac ,其码率为139 kbps,采样率为48 KHz。...红利:FFmpeg安装指南 1、如何在Windows上安装FFmpeg? 如果你不是程序员,且无法使用编码工具,那么在Windows上编译和安装FFmpeg对你来说将是一个复杂的过程。...下面是在Mac上安装FFmpeg的命令行(在Cataline v 10.15.5上测试和使用): brew install ffmpeg 3、如何在Ubuntu上安装FFmpeg?
文章目录 前言 一、需求 二、源码 三、运行结果 前言 本文记录用 FFmpeg 获取视频流+音频流的信息(编码格式、分辨率、帧率、播放时长…),所用的工程基于上个博客编译成功的工程:使用FFmpeg4.3.1...的SDK官方开发包编译ffmpeg.c 一、需求 我们经常需要知道一个媒体文件所包含的媒体流的信息,比如文件格式、播放时长、码率、视音频编码格式,视频分辨率,帧率,音频属性等信息。...如何使用 FFmpeg API 获取这些信息呢?..."); delete avmi; avmi = NULL; } } 三、运行结果 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'SampleVideo_1280x720...= AAC (Advanced Audio Coding) 使用 MediaInfo 打开 SampleVideo_1280x720_20mb.mp4 可以看到与上面打印对应的参数
在我们的实例中,它是 mp3 格式 4、更改视频文件的分辨率 ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4 或, ffmpeg...-i input.mp4 -s 1280x720 -c:a copy output.mp4 5、压缩视频文件 ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264...-filter:v – 表示视频过滤器。 crop – 表示裁剪过滤器。 w – 我们想自源视频中裁剪的矩形的宽度。 h – 矩形的高度。 x – 我们想自源视频中裁剪的矩形的 x 坐标 。...比如说你想要一个来自视频的位置 (200,150),且具有 640 像素宽度和 480 像素高度的视频,命令应该是: $ ffmpeg -i input.mp4 -filter:v "crop=640...-shortest output.mp4 14、使用开始和停止时间剪下一段媒体文件 可以使用开始和停止时间来剪下一段视频为小段剪辑,我们可以使用下面的命令。
# 03-ffmpeg音视频处理流程 先看两条命令 ffmpeg -i test_1920x1080.mp4 -acodeccopy -vcodeclibx264 -s 1280x720test_1280x720....flv ffmpeg -i test_1920x1080.mp4 -acodeccopy -vcodeclibx265 -s1280x720test_1280x720.mkv 该命令的具体含义如下:...-s选项:指定输出视频的分辨率大小。 6.test_1280x720.flv和test_1280x720.mkv:指定输出文件名和格式。...4.封装:将编码后的音频流和视频流重新封装为FLV或MKV等格式,并写入输出文件(test_1280x720.flv或test_1280x720.mkv)中。...调整音频播放速率) ● ffmpeg -h encoder=libx264 通过查看特定分类下的参数列表,可以了解当前安装的FFmpeg支持哪些常见的参数选项以及它们的用途和使用方法等详细信息。
为了使得控件在不同分辨率的设备下展现合适的外观,开发者设计XAML布局的时候,不要设置固定的高度和宽度值。...例如,为了创建一个自适应的控件布局界面,开发者可以使用类似Grid的容器,将其他控件放入该容器,并将其行和列的高度和宽度值设置为“*”和“Auto”。...这样,应用程序会根据用户设备的实际分辨率对UI界面元素进行自适应拉伸。相反,若在代码中将控件的宽度和高度设置为固定值,那么界面布局就不会根据设备的实际分辨率进行自适应调整了。 ...另外,开发者可以使用MinHeight 和MaxHeight属性来设置控件的最小高度和最大高度,因为高度小于8mm时,应用程序接收用户的指尖操作就有可能会变得不可靠。 4....一般来说,我们可以使用一个WXGA分辨率的图片(768 x 1280)来作为splash screen,因为对于其他两种分辨率的设备(WVGA和720p)来讲,应用程序会自动对图片进行拉伸,使其合适该屏幕
在摄像机的预览回调onPreviewFrame()中,获取到 NV21 格式的视频数据,然后将 NV21 格式转码为 I420 格式,再使用 sendCustomVideoData 向SDK填充您采集和处理后的...) { // 假设摄像机获取的视频格式是 NV21, 预览画面大小为 1280X720 // 即宽度 mPreviewWidth 值为1280,高度 mPreviewHeight 值为...sendCustomVideoData 方法最后两个参数是摄像机预览画面的宽度和高度,必需保持一致,不然会报出 -4 的错误。...指定推流分辨率(setVideoResolution)的宽度(高度)一定要小于或者等于摄像机预览画面的宽度(高度)。例如预览分辨率是960x720,设置推流的分辨率可以 960x540。...540P)、540x960、1280x720(720P)、720x1280这6种分辨率 iOS移动直播,自定义采集视频数据推流
在这片文章中,我们会弄清楚为什么桌子被压扁了,以及如何使用投影解决这个问题。 ...不幸的是,由于它独立于实际的屏幕尺寸和形状,我们直接使用就会出现问题,例如横屏模式下桌子被压扁了。 ...我们现在假设设备的分辨率是1280x720,并且OpenGL占据整个屏幕,那么[-1,1]的范围对应1280像素的高,却只有720像素的宽,图像在x轴上就会显得扁平,同样的问题在y轴上也会发生。...举例来说,在竖屏模式下,可以把宽度限制在[-1,1]内,把高度限制在[-1280/720,1280/720]内。...同理,在横屏模式下,可以将高度限制在[-1,1]中,而把高度限制在[-1280/720,1280/720]中。
720p 视频,yadif 让视频使用逐行扫描 hls 支持自动适应码率,根据当前网络状态自动切换清晰度,我们可以制作多种不同码率的视频来让 hls 自动切换。...更好的兼容性,有些设备播放包含视频和音频的文件会出现一些问题,比如没声音 但是分量音视频也大大提高了复杂性,比如如何选择适合码率的音频和视频,还有播放时的音视频同步 视频有 DTS(解码时间戳,诉播放器该在什么时候解码这一帧的数据...所以需要控制视频和音频的播放,不然就会发生声画不 ffmpeg -threads 0 -vsync 1 -i ....seek 和视频 buffer 都没有问题,就和使用普通视频文件一样正常播放。...DASH 和 HLS 非常相似都是使用 manifest 描述视频信息和播放列表,然后通过 HTTP 自适应的请求合适的片段。 与 HLS 不同的是 DASH 是 国际标准,而 HLS 属于苹果公司。
领取专属 10元无门槛券
手把手带您无忧上云