FFmpeg入坑指南

2021-12-19 12:54:46 浏览数 (1)

前言

ffmpeg是一个非常强大的视频处理工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑。并且支持多平台安装比较简单,适用于处理各种视频文件。

安装

本文主要讲解在Linux下的使用,因此在Linux中安装执行下面命令即可。

代码语言:javascript复制
apt-get install ffmpeg

常用示例

直接将MP4文件转成m3u8:

代码语言:javascript复制
ffmpeg -i bbskali.mp4 -hls_time 10 -hls_list_size 0 -hls_segment_filename ene_d.ts bbskali.m3u8

如果已经是ts文件了,则只需要执行下方命令即可:

代码语言:javascript复制
ffmpeg -i bbskali.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 outputd.ts

将大量分割成ts文件的视频片段全部转换成mp4视频片段 --- 直接上批处理脚本:

代码语言:javascript复制
for %%a in ("D:VideoProjectsNewDemo*.ts") do ffmpeg -i "%%a"   -vcodec copy -vcodec copy -f mp4 "D:VideoProjectsNewDemoNewMP4%%~na.mp4"
pause

上面的 ffmpeg -i test.ts -acodec copy -vcodec copy -f mp4 test.mp4 是将ts文件转换为mp4文件的意思,再在其之上套了一层for循环,%%a就是每个文件,转换命令最末尾的%%~na是将文件保持原来的文件名的情况下进行输出,存放到指定文件夹的意思。

mp4视频转flv

代码语言:javascript复制
ffmpeg -i bbskali.mp4 -acodec copy -vcodec copy -f flv bbskali.flv 

将本地指定的demo.ts文件进行推流:

代码语言:javascript复制
ffmpeg -re  -i demo.ts  -c copy -f mpegts   udp://127.0.0.1:1997

强制把输出视频文件帧率改为 24 fps:

代码语言:javascript复制
ffmpeg -i bbskali.avi -r 24 output.avi

对视频每个一秒截一个图并存在本地:

代码语言:javascript复制
ffmpeg -i bbskali.mp4 -f image2 -vf fps=fps=1 out%d.png

每隔20秒截一个图:

代码语言:javascript复制
ffmpeg -i bbskali.mp4 -f image2 -vf fps=fps=1/20 out%d.png

将视频转换为图片,一帧一图:

代码语言:javascript复制
ffmpeg -i bbskali.mp4 outM.png

提取视频文件中的音频数据,并保存为文件

代码语言:javascript复制
ffmpeg -i bbskali.mp4 -vn -acodec copy output.m4a

给视频添加水印

代码语言:javascript复制
ffmpeg -i pm.mp4 -i xxx.png -filter_complex "overlay=5:5"  out.mp4

把视频的前30帧转换成一个Animated Gif

代码语言:javascript复制
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif

截取指定时间的缩微图

代码语言:javascript复制
ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg

将一段音频与一段视频混合

代码语言:javascript复制
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg

使用ffmpeg录像屏幕

代码语言:javascript复制
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -vd x11:0,0 -s 1024x768 ~/test.avi

其中,-vd x11:0,0 指录制所使用的偏移为 x=0y=0-s 1024×768 指录制视频的大小为 1024×768。录制的视频文件为 test.avi,将保存到用户主目录中

如果你只想录制一个应用程序窗口或者桌面上的一个固定区域,那么可以指定偏移位置和区域大小。使用xwininfo -frame命令可以完成查找上述参数。

重新调整视频尺寸大小

代码语言:javascript复制
ffmpeg -vcodec mpeg4 -b 1000 -r 10 -g 300 -i ~/test.avi -s 800×600 ~/test-800-600.avi

把摄像头的实时视频录制下来,存储为文件

代码语言:javascript复制
ffmpeg -f video4linux -s 320*240 -r 10 -i /dev/video0 test.asf

注:ffmpeg的屏幕录制功能只能在Linux环境下有效。

版权属于:逍遥子大表哥

本文链接:https://cloud.tencent.com/developer/article/1921477

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

0 人点赞