ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

FFmpeg常用命令

2021-05-20 14:31:49  阅读:228  来源: 互联网

标签:... ffmpeg FFmpeg mp4 ffplay 常用命令 copy out


简介

FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。

“FFmpeg”这个单词中的“FF”指的是“Fast Forward(快速前进)”。

https://zh.wikipedia.org/wiki/FFmpeg

MPEG正式审核程序是Moving Picture Experts Group的简称。这个名字本来的含义是指一个研究视频和音频编码标准的“动态图像专家组”组织,成立于1988年,致力开发视频、音频的压缩编码技术。现在我们所说的MPEG泛指由该小组制定的一系列视频编码标准正式审核程序。

https://zh.wikipedia.org/wiki/MPEG

https://ffmpeg.org/

安装

sudo apt install ffmpeg                    # ubuntu
brew install ffmpeg                       # mac

命令语法

ffmpeg [全局选项] {[输入文件选项] -i 输入_url_地址} ... {[输出文件选项] 输出_url_地址} ...

处理流程

handle_process

查看信息

ffmpeg -i out.mp4

查看支持的yuv格式

ffmpeg -pix_fmts
Pixel formats:
I.... = Supported Input  format for conversion
.O... = Supported Output format for conversion
..H.. = Hardware accelerated format
...P. = Paletted format
....B = Bitstream format
FLAGS NAME            NB_COMPONENTS BITS_PER_PIXEL
IO... yuv420p                3            12
IO... yuyv422                3            16
IO... rgb24                  3            24
IO... bgr24                  3            24
IO... yuv422p                3            16
IO... yuv444p                3            24
IO... yuv410p                3             9
IO... yuv411p                3            12
IO... gray                   1             8
IO... 0bgr                   3            24
IO... bgr0                   3            24

-version 显示版本 -formats 显示可用的格式

-demuxers 显示可有的demuxers -protocols 显示可用的协议

-muxers 显示可有的muxers -filters 显示可用的过滤器

-devices 显示可用的设备 -pix_fmts 显示可用的像素格式

-codecs 显示所以编解码器 -sample_fmts 显示可用的采样格式

-decoders 显示可用的解码器 -layouts 显示channel名称

-encoders 显示可用的编码器 -colors 显示识别的颜色名称

-bsfs 显示比特流filter

录屏

ffmpeg -f x11grab -r 30 -s 1366x768  -i :0.0 out.yuv     # ubuntu
-i:
[hostname]:display_number.screen_number[+x_offset,y_offset]
hostname:display_number.screen_number指定了要捕获的X11显示屏幕名,hostname可以省略则默认为"localhost"。环境变量DISPLAY可以指定默认显示名。x_offset,y_offset指定捕获偏移,是对于左上建立的X11屏幕,默认为0.
ffmpeg -f avfoundaton -i 1 -r 30 out.yuv                 # mac
ffmpeg -f avfoundation -list_devices true -i ""          # mac

播放

ffplay -s 1366x768  -pix_fmt bgr0 out.yuv

支持分辨率列表

xrandr -q --current         # xrandr -q --current | grep '*' | awk '{print$1}'
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
1366x768      60.10*+
1360x768      59.80    59.96  
1280x720      60.00    59.99    59.86    59.74  
1024x768      60.04    60.00   
800x600       60.00    60.32    56.25  
640x480       60.00    59.94  
640x400       59.88    59.98  
640x360       59.86    59.83    59.84    59.32  
480x270       59.63    59.82  
400x300       60.32    56.34  
320x240       60.05  
360x202       59.51    59.13  
320x180       59.84    59.32  
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)

录音

ffmpeg -f pulse -i default out.wav      # -i alsa_input.pci-0000_00_1f.3.analog-stereo

播放

ffplay out.wav

声音源列表

pactl list sources short
0       alsa_output.pci-0000_00_1b.0.analog-stereo.monitor      module-alsa-card.c      s16le 2ch 44100Hz       SUSPENDED
1       alsa_input.pci-0000_00_1b.0.analog-stereo       module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED

摄像头支持信息

ffplay -f video4linux2 -list_formats all /dev/video0
[video4linux2,v4l2 @ 0x7f55ac000b80] Raw       :     yuyv422 :           YUYV 4:2:2 : 640x480 160x120 176x144 320x240 352x288 1280x720 1280x1024

摄像头显示

ffplay -f video4linux2 -video_size 640x480 /dev/video0        # -video_size hd480 -framerate 30

摄像头录像

ffmpeg -f video4linux2  -r 30 -s 640x480  -i /dev/video0 out2.yuv        # ffplay -s 640x480 -pix_fmt yuyv422 out2.yuv

格式转换

ffmpeg -i out.mp4 out.flv                              # -vcodec copy -acodec copy
ffmpeg -i out.mp4 -qscale 0 out.flv                    # 无损转换

抽取音视频

ffmpeg -i out.mp4 -an out.h264                   # -vcodec copy # ffplay out.h264
ffmpeg -i out.mp4 -vn out.aac          # -acodec copy -ar 44100 -ac 2 -ab 320k
ffmpeg -i out.mp4 -vn out.mp3
-vn – 表明我们已经在输出文件中禁用视频录制。
-ar – 设置输出文件的音频频率。通常使用的值是22050 Hz、44100 Hz、48000 Hz。
-ac – 设置音频通道的数目。
-ab – 表明音频比特率。
-f – 输出文件格式。在我们的实例中,它是 mp3 格式。

抽取原始数据

ffmpeg -i out.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv        # ffplay -s 640x480 out.yuv
ffmpeg -i out.mp4 -vn -ar 48000 -ac 2 -f s16le out.pcm       # ffplay -ar 48000 -ac 2 -f s16le out.pcm

指定分辨率

ffmpeg -i out.mp4 -filter:v scale=320x240 -c:a copy tout.mp4
ffmpeg -i out.mp4 -s 320x240 -c:a copy tout.mp4

压缩音视频

ffmpeg -i out.mp4 -vf scale=640:-1 -c:v libx264 -preset veryslow -crf 24 yout.mp4  # -ac 2 -c:a aac -strict -2 -b:a 96k
ffmpeg -i out.mp3 -ab 96k yout.mp3
1. 96kbps
2. 112kbps
3. 128kbps
4. 160kbps
5. 192kbps
6. 256kbps
7. 320kbps

视频裁剪

尺寸

ffmpeg -i input.mp4 -filter:v crop=w:h:x:y output.mp4
-filter:v – 表示视频过滤器。  -vf
crop – 表示裁剪过滤器。
w – 我们想自源视频中裁剪的矩形的宽度。
h – 矩形的高度。
x – 我们想自源视频中裁剪的矩形的 x 坐标 。
y – 矩形的 y 坐标。
ffmpeg -i out.mp4 -vf crop=in_w-440:in_h-280 -c:v libx264 -c:a copy crop.mp4  # 640x480 => 200x200
ffmpeg -i out.mp4 -filter:v crop=200:200:0:0 crop2.mp4

长度

ffmpeg -i out2.mp4 -ss 00:00:00 -t 10 out2.ts                           # 66s  =>  10s
ffmpeg -i out2.mp4 -ss 00:00:00 -to 00:00:10 out3.ts                    # -c copy
-ss – 表示视频剪辑的开始时间。
-t – 表示总的持续时间。
-to – 表示视频剪辑的结束时间。

视频宽高比

ffmpeg -i out.mp4 -aspect 16:9 wh.mp4
16:9
4:3
16:10
5:4

视频合并

ffmpeg -f concat -i inputs.txt concat.mp4                       # ffplay concat.mp4
# inputs.txt
file 'out1.ts'
file 'out2.ts'

视频字幕

ffmpeg -i out.mp4 -i demo.srt -c:s mov_text -c:v copy -c:a copy srt.mp4  # ffplay -vf subtitles=demo.srt srt.mp4
ffmpeg -i out.mp4 -vf subtitles=demo.srt srt2.mp4
ffmpeg -i srt.mp4 -map 0:s:0 srt.srt

调整播放速度

ffmpeg -i out.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" speed.mp4

视频图片互转

ffmpeg -i ../out.mp4 -r 30 -f image2 image-%3d.jpeg
ffmpeg -i  img/image-%3d.jpeg -r 30 imgm.mp4
-r – 设置帧速度。即,每秒提取帧到图像的数字。默认值是 25。
-f – 表示输出格式,即,在我们的实例中是图像。
image-%3d.png – 表明我们如何想命名提取的图像。在这个实例中,命名应该像这样image-001.png、image-002.png、image-003.png 等等开始。

视频直播

拉流

ffplay rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -c copy bbb.mov       # ffplay bbb.mov

推流

sudo apt install nginx-full libnginx-mod-rtmp
rtmp_auto_push on;

rtmp {
    server {
        listen 1935;

        application live {
            live on;
        }
    }
}
ffmpeg -re -i out2.mp4 -c copy -f flv rtmp://localhost:1935/live/room
ffplay rtmp://localhost:1935/live/room
ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -c:a copy -c:v copy -f flv rtmp://localhost:1935/live/room




via:

标签:...,ffmpeg,FFmpeg,mp4,ffplay,常用命令,copy,out
来源: https://blog.csdn.net/lvxintd1993/article/details/117074704

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有