转码和编辑视频
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库

libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 [1] FFmpeg编码库可以使用GPU加速
多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。

命令集

ffmpeg 命令集举例1.获取视频的信息ffmpeg -i video.avi2.将图片序列合成视频ffmpeg -f image2 -i image%d.jpg video.mpg上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等...)合并成video.mpg3.将视频分解成图片序列ffmpeg -i video.mpg image%d.jpg上面的命令会生成image1.jpg. image2.jpg. ...支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI4.为视频重新编码以适合在iPod/iPhone上播放ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4说明:* 源视频:source_video.avi* 音频编码:aac* 音频位率:128kb/s* 视频编码:mpeg4* 视频位率:1200kb/s* 视频尺寸:320 X 180* 生成的视频:final_video.mp45.为视频重新编码以适合在PSP上播放ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4说明:* 源视频:source_video.avi* 音频编码:aac* 音频位率:32kb/s* 视频编码:xvid* 视频位率:1200kb/s* 视频尺寸:320 X 240* 生成的视频:final_video.mp46.从视频抽出声音.并存为Mp3ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3说明:* 源视频:source_video.avi* 音频位率:192kb/s* 输出格式:mp3* 生成的声音:sound.mp37.将avi文件转成Mp3ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp38.将.avi视频转成.mpgffmpeg -i video_origine.avi video_finale.mpg9.将.mpg转成.aviffmpeg -i video_origine.mpg video_finale.avi10.将.avi转成gif动画(未压缩)ffmpeg -i video_origine.avi gif_anime.gif11.合成视频和音频ffmpeg -i son.wav -i video_origine.avi video_finale.mpg12.将.avi转成.flvffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv13.将.avi转成dvffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv或者:ffmpeg -i video_origine.avi -target pal-dv video_finale.dv14.将.avi压缩成divxffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi15.将Ogg Theora压缩成Mpeg dvdffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg16.将.avi压缩成SVCD mpeg2NTSC格式:ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpgPAL格式:ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg17.将.avi压缩成VCD mpeg2NTSC格式:ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpgPAL格式:ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg18.多通道编码ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-219.从flv提取mp3ffmpeg -i source.flv -ab 128k dest.mp3
-c:v libx264   c:v指定视频解码器,libx264解码器-hls_time 3 切片间隔3秒-hls_list_size 30 最大切片数-hls_wrap 30 最大轮博数-f hls 转成m3u8格式-force_key_frames "expr:gte(t,n_forced*1)"  设置关键帧间隔,设置间隔为2秒的参数如下:-force_key_frames "expr:gte(t,n_forced*2)"-rtsp_transport tcp -i   强制使用TCP方式读取rtsp流-s 640x480 视频分辨率

进入ffmpeg官网下载Win64版本,下载速度很快,下载下来就是一个压缩包,解压后就是工具本体了,不过它没有任何UI界面,在Windows下你只能进入bin目录,然后Shift+鼠标右键打开命令窗口,使用ffmpeg的指令进行操作。

下面分析网上搜集的ffmpeg简单用法,可以进行很多基础的视频编辑。

CSDN后台私信或文末卡片加入免费领取最新最全C++/音视频开发学习提升资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

ffmpeg的简单用法

转码
最简单命令如下:

ffmpeg -i out.ogv -vcodec h264 out.mp4
ffmpeg -i out.ogv -vcodec mpeg4 out.mp4
ffmpeg -i out.ogv -vcodec libxvid out.mp4
ffmpeg -i out.mp4 -vcodec wmv1 out.wmv
ffmpeg -i out.mp4 -vcodec wmv2 out.wmv

-i 后面是输入文件名。-vcodec 后面是编码格式,h264 最佳,但 Windows 系统默认不安装。如果是要插入 ppt 的视频,选择 wmv1 或 wmv2 基本上万无一失。
附加选项:-r 指定帧率,-s 指定分辨率,-b 指定比特率;于此同时可以对声道进行转码,-acodec 指定音频编码,-ab 指定音频比特率,-ac 指定声道数,例如

ffmpeg -i out.ogv -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec libfaac -ab 48k -ac 2 out.mp4

剪切

用 -ss 和 -t 选项, 从第 30 秒开始,向后截取 10 秒的视频,并保存:

ffmpeg -i input.wmv -ss 00:00:30.0 -c copy -t 00:00:10.0 output.wmv
ffmpeg -i input.wmv -ss 30 -c copy -t 10 output.wmv

达成相同效果,也可以用 -ss 和 -to 选项, 从第 30 秒截取到第 40 秒:

ffmpeg -i input.wmv -ss 30 -c copy -to 40 output.wmv

值得注意的是,ffmpeg 为了加速,会使用关键帧技术, 所以有时剪切出来的结果在起止时间上未必准确。 通常来说,把 -ss 选项放在 -i 之前,会使用关键帧技术; 把 -ss 选项放在 -i 之后,则不使用关键帧技术。 如果要使用关键帧技术又要保留时间戳,可以加上 -copyts 选项:

ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4

合并

把两个视频文件合并成一个。

简单地使用 concat demuxer,示例:

$ cat mylist.txt
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'$ ffmpeg -f concat -i mylist.txt -c copy output

更多时候,由于输入文件的多样性,需要转成中间格式再合成:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

调整播放速度

加速四倍:

ffmpeg -i TheOrigin.mp4 -vf  "setpts=0.25*PTS" UpTheOrigin.mp4

四倍慢速:

ffmpeg -i TheOrigin.mp4 -vf "setpts=4*PTS" DownTheOrigin.mp4

帧率设置

使用-r选项
语法是:

ffmpeg -i input -r fps output

例如:

ffmpeg -i input.avi -r 30 output.mp4

使用fps filter

另一个设置帧率是用fps filter,特别是在filterchains使用时非常有用。
例如:修改输入文件的帧率到25

ffmpeg -v clip.mpg -vf fps=fps=25 clip.webm

比特率设置

比特率也是一个决定音视频总体质量的参数。他决定每个时间单位处理的bit数。
设置比特率:

比特率决定处理1s的编码流需要多少bits,设置用-b选项。区分音视频用-b:a和-b:v
例如:设置整体1.5Mbit每秒

ffmpeg -i file.avi -b 1.5M file.mp4ffmpeg -i input.avi -b:v 1500K output.mp4

CBR设置
CBR设置一般用作直播流,比如视频会议。为输出设置CBR,有三个参数必须设置为同一个值。
bitrate(-b option), minimal rate(-minrate), maximal rate(-maxrate)。maximal rate需要设置-bufsize选项。例如设置CBR为0.5Mbit/s。

ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M output.mkv

设置输出文件的最大size

用-fs选项。
例如设置输出文件的最大的size为10M

ffmpeg -i input.avi -fs 10MB output.mp4

文件大小计算

文件的大小是是音视频流大小的和。
视频流的大小的方程式是(除以8是由bits到bytes的转换):

video_size = video_bitrate * time_in_seconds / 8;

如果音频是解压缩的,计算公式是:

audio_size = smpaling_rate * bit_depth * channels * time_in_second / 8;

例如:计算10分钟的视频, 1500kbits/s 视频比特率和 128kbits/s的音频比特率,用下面的计算方法:

file_size = video_size + audio_size;
file_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8;
file_size = (1500 kbits/s + 128kbits/s) * 600s
file_size = 1628kbits/s * 600s
file_size = 976800kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125KB
file_size = 119238.28125 KB / 1024 = 116.443634033203125MB = 116.44M

FFmpeg资料文末卡片免费分享

ffmpeg转码视频相关推荐

  1. linux 视频编辑 ffmpeg,ffmpeg转码视频真的好用!(ffmpeg的简单使用方法)

    说明 转码和编辑视频 今天用Android Studio(后面简称AS)里的模拟器给系统录屏,用来展示OpenGL可视化的东西,打算上传B站,后来发现AS只能保存webm格式和GIF格式的视频,并且文 ...

  2. 使用 ffmpeg 转码 视频 (使用 nvidia 硬件加速 和 h265 编码)

    原来使用 staxrip 的 nvidia加速 转码一堆录像到 x265,码率大概为2000,画质很渣,虽然也许很大一部分是我不会调或者调错参数的原因 orz. 使用 libx265 编码质量很好,但 ...

  3. java操作linux命令,调用ffmpeg转码视频

    最近有一个需求需要调用linux上的ffmpeg将视频转换为MP4,切片,然后保存,在了解了ffmpeg后,下一步就是如何用java调用linux命令行了 一.概述 java要执行系统命令的话,其实是 ...

  4. ffmpeg转码视频真的好用!(ffmpeg的简单使用方法)

    说明 笔者个人博客网站:https://hk-shao.github.io/ 最新文章和更新都会在这里 转码和编辑视频 今天用Android Studio(后面简称AS)里的模拟器给系统录屏,用来展示 ...

  5. php ffmpeg 转码mp4,PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件

    配置php.ini文件 file_uploads = on ;//是否允许通过HTTP上传文件的开关.默认为ON即是开 upload_tmp_dir ;//文件上传至服务器上存储临时文件的地方,如果没 ...

  6. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

    用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...

  7. Android集成FFmpeg并实现视频转码

    通过编译FFmpeg并集成到Android App中实现视频转码,也可以直接执行FFmpeg命令实现视频拼接.剪切.添加水印.旋转等操作,或者在C++中引入各模块头文件直接调用FFmpeg的API满足 ...

  8. ffmpeg转码php配置,PHP+ffmpeg+nginx的配置实现视频转码

    最近项目中需要实现上传视频过程中自动转码MP4格式的功能,想到了用FFmpeg来实现它,但从来没有操作过,查阅了很多资料,遇到了好多问题,现在终于安装成功,觉得应该写下来与人分享一下,以免有人遇到和我 ...

  9. ffmpeg转码php配置,PHP+ffmpeg+nginx的配置实现视频转码(转)

    最近项目中需要实现上传视频过程中自动转码MP4格式的功能,想到了用FFmpeg来实现它,但从来没有操作过,查阅了很多资料,遇到了好多问题,现在终于安装成功,觉得应该写下来与人分享一下,以免有人遇到和我 ...

  10. php音视频同步,FFMPEG转码音视频不同步情况总结

    [导读]使用FFMPEG转码一年半的时间,遇到了各种情况的音视频不同步,下面我们就来根据问题出现的原因,对所遇到的音视频不同步做一个分类. 使用FFMPEG转码一年半的时间,遇到了各种情况的音视频不同 ...

最新文章

  1. 将php-fpm添加至service服务
  2. dotnet安装包时找不到依赖关系_孩子总找妈妈,小心单方父母过渡依赖症,4个方法让父母更平等...
  3. [LeetCode] #22 Generate Parentheses
  4. 草稿 datagridview的显示与修改
  5. System.out和System.err的区别
  6. 千峰python资料下载_千锋Python基础视频教程全集下载
  7. python方差分析_R语言方差分析ANOVA
  8. 增强型绿植植被指数_植被指数计算方法
  9. 计算机主板日常维护主要做到什么,对计算机硬件日常维护的热点研究
  10. 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc
  11. Centos 修改镜像源为阿里云
  12. 廉洁文化 计算机学院,资讯抢先看 | 廉洁文化主题活动优秀作品锦集,请查收~...
  13. POI解析Excel
  14. MD5加密为什么不可逆?
  15. 那些在开源世界顶半边天的女同胞们
  16. isis-概述及实验
  17. 信用评分的简单小结(ROC,IV,WOE)
  18. prototype (原型) 属性
  19. 杰力科创-- 单片机-- DLT8P64SC--人体感应三档调光调色灯方案
  20. 人工智能教育在经济社会起到的主导作用

热门文章

  1. 将Origin Pro设置成中文显示
  2. 神经猫java代码_纯HTML5制作围住神经猫游戏-附源码下载
  3. CCF论文会议 IEEE 如何查询某个会议期刊的所有文章
  4. 后台事务开发之简单示例
  5. ragel学习资源整合
  6. 露天停车场的matlab代码,室外停车场设计规范 · 干货
  7. 【图像去噪】基于matlab自适应布谷鸟算法优化维纳滤波器图像去噪【含Matlab源码 1892期】
  8. RK G68三模说明书
  9. Vue中使用froala富文本编辑器制作打印模板 + print.js 打印
  10. Kali Linux系统apt源配置