ffmpeg:处理视频编码以及视频格式


Fast Forward MPEG (ffmpeg) 使用汇总

靠,我当初用ffmpeg只是因为想转B站的视频,谁他妈能想到我会再搞实验室的事情的时候再次用到这玩意,顺带还学一把视频编码等相关的知识啊。
但是这个东西嘛,真的就很好用。

ffmpeg的全程是Fast Forward MPEG , 而MEPG的又是Moving Picture Experts Group。的缩写我总是记不住这个命令的正确拼写格式,所以记一下全程帮助记忆。

基本概念与用法

基本用法介绍可以参考 ffmpeg基本用法 是一篇简书博文,我后面的内容基本上也是转载于这篇博文

1.基本工作流

 The transcoding process in ffmpeg for each output can be described by the following diagram:

                _______              ______________
               |       |            |              |
               | input |  demuxer   | encoded data |   decoder
               | file  | ---------> | packets      | -----+
               |_______|            |______________|      |
                                                          v
                                                      _________
                                                     |         |
                                                     | decoded |
                                                     | frames  |
                                                     |_________|
                ________             ______________       |
               |        |           |              |      |
               | output | <-------- | encoded data | <----+
               | file   |   muxer   | packets      |   encoder
               |________|           |______________|
# 主要处理流程。
#1.解复用器demuxer和解码器decoder用来解码,得到未被压缩的帧
#2.编码器encoder将数据帧重新编码
#3.新的编码包经过muxer写入用户想要的outputfile

2.相关概念介绍

过滤器(Filter)

在多媒体处理中,filter的意思是被编码到输出文件之前用来修改输入文件内容的一个软件工具。如:视频翻转,旋转,缩放等。
语法:[input_link_label1]… filter_name=parameters [output_link_label1]…
1、视频过滤器 -vf
如input.mp4视频按顺时针方向旋转90度
ffplay -i input.mp4 -vf transpose=1
如input.mp4视频水平翻转(左右翻转)
ffplay -i input.mp4 -vf hflip
2、音频过滤器 -af
实现慢速播放,声音速度是原始速度的50%
offplay input.mp3 -af atempo=0.5

基本参数介绍

ffmpeg -i "imput.mp4" #查看相关信息
ffmpeg –i input.mp4 –r fps output.mp4 #修改帧率 使用-r参数
ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm #修改帧率 使用fps filter

导出AVI rawvideo供imageJ使用

 ffmpeg -i "m3v1mp4.mp4" -vcodec rawvideo -pix_fmt uyvy422  -acodec $audio-codec "m3v1mp4.avi"
 ffmpeg -i "m3v1mp4.mp4" -vcodec rawvideo -pix_fmt uyvy422  "m3v1mp4.avi" #上面那个会报错

移除音轨

删除根据流号删除
识别流号码

$ ffmpeg -i in.mp4
   ...
   Stream #0:0: Video: ...
   Stream #0:1: Audio: ...
   Stream #0:2: Audio: ...
使用-map _file_:_stream_选择要处理和输出的流

$ ffmpeg -i in.mp4 -map 0:0 -map 0:2 -vcodec copy -acodec copy out.mp4
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4 #查看视频帧数 (当然- - 你也可以直接用-i看fps就好了,这个要解码视频还是挺慢的)

> -v error:这隐藏了“info”输出(版本信息等),使解析更容易。
> -count_frames:计算每个流的帧数,并在相应的流部分中报告。
> -select_streams v:0 :仅选择视频流。
> -show_entries stream = nb_read_frames :只显示读取的帧数。
> -of default = nokey = 1:noprint_wrappers = 1 :将输出格式(也称为“writer”)设置为默认值,不打印每个字段的键(nokey = 1),不打印节头和页脚(noprint_wrappers = 1)。
————————————————
版权声明:本文为CSDN博主「hairuiJY」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010368556/article/details/102943897


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM