高考考试网
当前位置: 首页 高考资讯

ffmpeg分辨率支持(ffmpeg提高视频清晰度)

时间:2023-08-04 作者: 小编 阅读量: 3 栏目名: 高考资讯

ffmpeg提高视频清晰度关于音视频,相信大家都看过电影(视频),听过音乐(音频),至少应该都知道mp4是视频文件,mp3是音频文件对于一个音视频文件,都有哪些属性呢?以视频为例,我们可以通过ffmpeg-i命令查看媒体文件的。

ffmpeg分辨率支持?关于音视频,相信大家都看过电影(视频),听过音乐(音频),至少应该都知道mp4是视频文件,mp3是音频文件,今天小编就来说说关于ffmpeg分辨率支持?下面更多详细答案一起来看看吧!

ffmpeg分辨率支持

关于音视频,相信大家都看过电影(视频),听过音乐(音频),至少应该都知道mp4是视频文件,mp3是音频文件。

对于一个音视频文件,都有哪些属性呢?以视频为例,我们可以通过 ffmpeg -i 命令查看媒体文件的信息。

» ffmpeg -i r1ori.mp4ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developersbuilt with Apple LLVM version 10.0.0 (clang-1000.10.44.4)configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gpl --enable-l.jpg"3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-chromaprint --enable-frei0r --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libgme --enable-libgsm --enable-libmodplug --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-librsvg --enable-librtmp --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtesseract --enable-libtwolame --enable-libvidstab --enable-libwavpack --enable-li.jpg" --enable-libzmq --enable-opencl --enable-openssl --enable-videotoolbox --enable-libope.jpg" --disable-decoder.jpg"2000 --extra-cflags=-I/usr/local/Cellar/ope.jpg"/2.3.0/include/ope.jpg"-2.3 --enable-nonfreelibavutil56\. 22.100 / 56\. 22.100libavcodec58\. 35.100 / 58\. 35.100libavformat58\. 20.100 / 58\. 20.100libavdevice58\.5.100 / 58\.5.100libavfilter7\. 40.101 /7\. 40.101libavresample4\.0\.0 /4\.0\.0libswscale5\.3.100 /5\.3.100libswresample3\.3.100 /3\.3.100libpostproc55\.3.100 / 55\.3.100Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'r1ori.mp4':Metadata:major_brand: isomminor_version: 512compatible_brands: isomiso2avc1mp41encoder: Lavf58.20.100Duration: 00:00:58.53, start: 0.000000, bitrate: 1870 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 544x960, 1732 kb/s, 29.83 fps, 29.83 tbr, 11456 tbn, 59.67 tbc (default)Metadata:handler_name: VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)Metadata:handler_name: SoundHandler

除了视频的元信息,还包括了更多我们当初编译的配置,你可以选择 -hide_banner 参数来隐藏这些信息,完整的命令如下

»ffmpeg -i r1ori.mp4 -hide_bannerInput #0, mov,mp4,m4a,3gp,3g2,mj2, from 'r1ori.mp4':Metadata:major_brand: isomminor_version: 512compatible_brands: isomiso2avc1mp41encoder: Lavf58.20.100Duration: 00:00:58.53, start: 0.000000, bitrate: 1870 kb/sStream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 544x960, 1732 kb/s, 29.83 fps, 29.83 tbr, 11456 tbn, 59.67 tbc (default)Metadata:handler_name: VideoHandlerStream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 129 kb/s (default)Metadata:handler_name: SoundHandlerAt least one output file must be specified

我们主要看几个数据

  1. Input #0, mov,mp4,m4a,3gp,3g2,mj2, from ‘r1ori.mp4’: # Input #0 表示我们通过ffmpeg -i 参数输入的第一个文件,下标从0开始,也就是说我们可以输入多个文件,实际上ffmpeg还支持输出多个文件
  2. Metadata 表示视频元信息
  3. Duration 这行包含了视频的播放时长是58.53秒,开始播放时间是0,整个文件的比特率是1870kbit/s
  4. Stream #0:0(und): Video: h264,这行表示该文件的第一个流是视频流,编码格式是H264格式(封装格式为AVC1),每一帧的数据表示为yuv420p,分辨率为544×960,视频流的比特率是1732kbit/s,帧率为每秒钟29.83帧。
  5. Stream #0:1(und): Audio: aac,这行表示该文件的第二个流是音频流,编码格式为ACC(封装格式为MP4A),并且采用的Profile是LC规格,采样率是44.1KHz,声道是立体声(stereo),码率是129kbit/s

开始出现了一些陌生的名词,我们依次介绍下。

容器

像上面这个视频文件一样,把不同的数据流(视频流、音频流,有的还有字幕流等)封装在一个文件中,我们称之为容器。像我们熟悉的mp4、avi、rmvb等等都是多媒体容器格式,一般情况下,多媒体文件的后缀就是它的容器格式。

我们可以把容器理解为一个瓶子、罐子之类的东西。

编码和解码(codec)

编码:将视频、音频用某种格式或规范记录下来并存储,称为编码(codec)。编码可以理解成是对容器内的东西的加工处理。

常见的视频编码格式有 h264、h265等,常见的音频编码格式有 mp3、aac等。

解码:就是将视频、音频压缩的编码数据,解码成为非压缩的视频、音频原始数据。比如我们要对一段音频增加回声,就需要先对音频文件先解码再编码。

软解:即软件解码,通过软件让CPU对视频文件进行解码操作。

硬解:即硬件解码,为了减轻CPU的压力,采用GPU来处理原来全部让CPU处理的部分视频数据。

软解需要对大量的视频信息进行处理,所以软解非常吃CPU,一条FFmpeg的命令都有可能把CPU干趴下了。

相比而言,硬解的效率非常高,但是硬解的缺点也显而易见,它不能像软解那样,对字幕、画质等的处理效果都不是很好。如果我没记错的话,七牛云平台(一个相对专业的音视频平台)现在还不支持硬解。

ffmpeg是最常见的软解码开源库,它实际是通过比如 H264、H265、MPEG-4等编解码算法进行软解。

在现如今的音视频领域,ffmpeg 几乎支持所有音视频的编解码,非常强大。

转码:即编码转换,是将视频从一种格式转换为另一种格式。比如将一个flv文件转换为mp4文件。

ffmpeg -i input.flv output.mp4

比特率

比特率又称码率,表示编码器每秒输出的字节数,单位是 Kbps,b 为 比特(bit) 这个就是电脑文件大小的计量单位,1KB=8Kb,区分大小写,s 为 秒(second) p 为 每(per) 。

比如

在相同的压缩算法下(后面我们会介绍若干不同的压缩算法),码率越高,视频的质量也就越高。

对于压缩文件,按照上面的理解,码率的粗略计算方式=文件大小/时长。

比如 r1ori.mp4 的大小是 13.7兆,时长约59秒,那么它的码率大约等于 (13.7 x 1024 x 8) / 59 = 1900 kb/s

公式:1MB=8Mb=1024KB=8192Kb

因为还有一些参数的影响,所以这个码率我们也只能得到一个大约的数值。

固定码率和可变码率

早些年的时候,音频编码的时候选择的都是固定码率(Constant Bitrate, CBR),后面出现了可变码率(Variable Bitrate, VBR),固定码率指的是编码器输出的码率固定,这样就很难均衡“平静的画面”和“剧烈的画面”,相对而言,可变码率就可以很好的控制编码器,在细节比较多,画面相对剧烈的时候使用更多的比特位,对于相对平静的画面,使用更低的比特位。如此一来,在输出质量一定的情况下,VBR更具优势,存储的话我们也会优先选择可变码率。

帧和帧率

帧指的是一个画面。

帧率(frames per second, fps),即每秒输出多少帧,你也可以理解画面每秒输出多少次。

大家在玩游戏的时候一定深有体验,游戏卡顿的时候,画面都是帧与帧之间跳动的,非常的不顺畅。

帧率影响画面的流畅度,帧率越高,画面也就越流畅。

由于视觉暂留现象(即当物体在快速运动时, 人眼所看到的影像消失后,人眼仍能继续保留其影像1/24秒左右的图像)的存在,所以对于一般的电影视频,要求最低帧率是24,也就是每帧曝光1/24 = 0.042秒。

分辨率

分辨率大家应该都不陌生,比如某视频网站常见的蓝光1080P,超清720P,高清540P。

分辨率可以理解为视频画面的大小,即视频的宽度和高度。720P指的就是高度是720像素。

了解过码率和帧率我们发现,不能绝对的说分辨率越高视频越清晰,更重要的是如何平衡好码率、帧率以及分辨率三者的关系。

总的来说,我们更愿意接受视频体积越小,清晰度越高的视频,一来是存储方便,二来是看起来爽。

有损和无损

首先我们说一下什么是音视频的原始数据?原始数据指的是通过音视频设备采集的、没有经过任何加工的数据。音频的原始数据是pcm格式,视频的原始数据是yuv格式。

有损和无损,即有没有损失,这里针对的是多媒体数据压缩的一种说法。有损压缩又称之为破坏性压缩,当然并不是说压缩之后无法解压的那种破坏。比如我们常见的mp3、mp4文件都是有损压缩。

以音频编码为例,音频里面的声音来源于自然界,我们通过技术方案捕获到声音,然后根据一定的算法进行存储。

在现阶段,我们存储下来的声音不能完全还原为自然界的声音,任何音频编码都是有损的。

有同学可能要提出疑问了,我看有文章介绍,音频的原始数据不是pcm格式的吗?

其实pcm编码也只是无限接近于无损,它能够达到信号的最高保真,因此,pcm编码才被约定为无损压缩。

好好的音频,我想听最真实的从自然界采集的声音,为什么要压缩呢?

原始数据太大,不方便存储

即使存储下来了,也不方便传输,需要极大的带宽

现在视频的压缩比很高,比如现如今大家耳熟能详的4k 8k,看起来完全能满足需要

复用器和解复用器

对于容器而言,注意这里针对的是容器,我们经常会有两种频繁的操作。

取出容器内的音视频数据,我们称之为解封装,由demuxer解封装器(又称之为解复用器)完成。

把处理好的音视频数据装进容器内称之为封装,由muxer封装器(又称之为复用器)完成。

我们会在这边文章下面持续更新音视频相关的概念,如果你觉得有什么概念不好理解,可以给我留言,我会再收集并作补充。

    推荐阅读
  • 当失去才知道爱你的天蝎座(多数人并不知道)

    01天蝎座的脑海里善于遗忘,而非记得天蝎座的人往往属于内心比较有骨气的类型,无论在感情还是生活中,天蝎座都不习惯对一个人过于耿耿于怀。只能说,天蝎座的决绝只会在放下的那一瞬间,之后,就是海阔天空。他们不愿做出什么不友好的举动,所以,只能用无言来对抗,可以说,天蝎座的转身离开,往往是彻底的放下。意思就是,天蝎座往往一直在与过去的自己挥别,一直在不断蜕变,就好像不断重启的人生。

  • 国分佐智子下海叫什么(国分佐智子下海是什么)

    国分佐智子下海叫什么?接下来我们就一起去研究一下吧!2011年国分佐智子宣布与落语家林家三平结婚,期间虽然因为日本大地震的缘故导致婚期推迟,不过最后两个人还是磕磕绊绊的结了婚,婚后有一个孩子,结婚前国分佐智子的人气就已经慢慢走下坡路了,结婚后她干脆直接做起了家庭主妇,鲜少出现在荧幕面前,搞得大家还蛮想念这位美女的,不知道国分佐智子的近况如何,想来应该是在家相夫教子度过美好的幸福人生。

  • 菠萝蜜怎么挑选(菠萝蜜挑选的方法)

    以下内容希望对你有帮助!菠萝蜜怎么挑选观察颜色:成熟菠萝蜜,是金黄色,没熟透的带一点青绿色。

  • 关于山的作文唯美素材(作文素材积累描写山的好词)

    一路上只见漓江两边有数不尽的奇峰异岭,它们一座座拔地而起,各自独立,形态万千。岭南这一带的山海拔不算高,西樵山的最高峰海拔才300多米。这是梁大山给予乡亲们的厚重酬报。梁大山是一部辞典,年轻时读它薄,年长时读它厚。梁大山依然那样虚怀若谷,梁大山总是乐于把丰富的宝藏奉献给热爱它的人们。搜寻世上所有的形容词不足以涵括梁大山的睿智。

  • 面膜要如何敷才会有更好的效果(面膜可以天天敷吗)

    后面跟着的如果有:黄原胶或者卡波姆这两个成分中的任何一个,那么这款面膜妥妥就是粘稠液面膜,是一款垃圾面膜,可以扔掉了,不要敷。因为卡波姆和黄原胶都是粘稠液,他们在成分表中排名这么靠前,就是面膜的主要成分。这也是现在面膜价格,千差万别的原因之一。如果天天敷面膜,甚至有人一天两次敷面膜,就会让皮肤长期处于这样的压力下,皮肤的耐受力降低。所以,正常的敷面膜时间,应该是3天左右敷一次。

  • 海上牧云记原著谁最美(我们该如何看海上牧云记的世界构架与情节设计)

    还有穆如朔,身为大将军,执掌天下兵权,与牧云一族共有天下。在权力制衡方面,没有实质性的制约,而是将所有制衡,归结于三百年前,牧云家和穆如的一个誓言,如同儿戏。地之所载,六合之间,四海之内,有仙洲名云荒。

  • 怀孕后可以把员工开除吗(怀孕即自动离职)

    可见,“怀孕即自动离职”明显与法律的规定和要求相悖。因为根据劳动法、劳动合同法的规定,用人单位免除自己的法定责任、排除劳动者权利的,或者违反法律、行政法规强制性规定的合同内容无效,且由于用人单位的原因导致合同内容无效的,用人单位应承担赔偿责任。劳动监察部门也应强化执法监督,对辞退怀孕女职工等侵权行为及时阻止、叫停。

  • 王者吃鸡好听的名字(好听的四个字吃鸡游戏名)

    感情废物往昔已逝,现在小编就来说说关于王者吃鸡好听的名字?下面内容希望能帮助到你,我们来一起看看吧!王者吃鸡好听的名字感情废物往昔已逝踏雪无痕迷途知返花城旧牢摩西摩西稚气未脱爱之入骨一生醉笑暴走御姐明月清风傲雪凌霜离人怎挽凡若晨曦一腔孤勇彼此守候堇色素颜吊儿郎当女人似毒掩于岁月薄荷加冰爱与自由柠夏初开隔壁少女一個人醉万千宠爱半生战骨暂无爱人可乐加冰南笙几梦终享孤独十字路口

  • 绿色显白还是显黑(各自有什么特点)

    白色和墨绿色各自所占的比例不同,呈现出来的风格也不一样。如果白色为主,墨绿色为辅的,视觉上会很清爽。反过来,墨绿色占大面积的,则更有复古感。搭配的单品款式比较硬朗的话,气质上也会更成熟帅气一些。既凸显了墨绿的复古感,还不失青春感。不过要搭配墨绿色的话,暗红色会更美。

  • 宫廷秘传最厉害的伙伴(宫廷秘传最强伙伴选择)

    每当你完成一定数量的主线任务的时候系统会自动赠送伙伴通过冲榜活动,获得招募令,也可伙伴招募伙伴首冲只需6元就能获得庄亲王了,还是很蛮不错的,我来为大家科普一下关于宫廷秘传最厉害的伙伴?首冲只需6元就能获得庄亲王了,还是很蛮不错的每个伙伴都具备不同类型的属性,资质也会不一样,建议什么属性的伙伴,着重培养相对应的属性。当然,政略和魅力是具备相互性的,二者相差过大的话,少的那部份,便无法收获。