大家好,欢迎来到IT知识分享网。
1)常用命令
1、最简单转换命令
ffmpeg -i input.mp4 output.mkv
2、更加精准的控制转换命令
ffmpeg -i input.mp4 -c:v vp9 -c:a libvorbis output.mkv
(-c:v 控制视频格式, -c:a 控制音频格式)
3、调节比特率
ffmpeg -i GVG-981.mp4 -c:v libx264 -b:v 2M -maxrate 2M -bufsize 1M GVG-981-out.mp4
ffmpeg -i input.webm -c:a copy -c:v vp9 -b:v 1M output.mkv
(-b:v 1M 代表着视频的比特率变成1Mb
This will copy the audio (-c:a copy) from input.webm and convert the video to a VP9 codec (-c:v vp9) with a bit rate of 1M/s (-b:v), all bundled up in a Matroska container (output.mkv).)
4、调节帧率
ffmpeg -i 002.mp4 -filter:v fps=fps=29.97 002-out.mp4
ffmpeg -i input.webm -c:a copy -c:v vp9 -r 30 output.mkv
(This creates a new Matroska with the audio stream copied over and the video stream’s frame rate forced to 30 frames per second, instead of using the frame rate from the input (-r 30).)
5、调节视频尺寸(分辨率)
ffmpeg -i FC2PPV–1.mp4 -c:a copy -s 854×480 FC2PPV–1-out.mp4
ffmpeg -i input.mkv -c:a copy -s 1280×720 output.mkv
(声音原封不动拷贝过去,视频编码格式不变,只是尺寸调整到1280×720)
6、截取部分视频(时长)
ffmpeg -i input.mkv -c:a copy -c:v copy -ss 00:01:00 -t 10 output.mkv
(音视频格式不变, 从00:01:00开始拷贝10s过去)
7、 提取关键帧
ffmpeg -skip_frame nokey -i 480P_2000K_.mp4 -vsync 0 -r 30 -f image2 480P_2000K_\%02d.png
8,使用 ffmpeg 命令将 raw.mp4 的音频替换为 out.wav 的音频
ffmpeg -i raw.mp4 -i out.wav -map 0:v -map 1:a -c:v copy -c:a copy replaced_audio.mp4
8、对视频进行帧提取
您可以使用以下命令将视频分解成图片序列:
ffmpeg -i input.mp4 -vf fps=1 frame_%04d.png
这条命令将 input.mp4
视频分解成图片序列,每秒保存一帧。输出的文件名为 frame_0001.png
、frame_0002.png
等。您可以根据需要更改输入文件名、帧率和输出文件名模式。
ffmpeg -i .\input.mp4 -vf ‘select=gte(n\,1),setpts=PTS-STARTPTS’ ‘input/%05d.png’
ffmpeg -i .\input.mp4 -vf ‘select=gte(n\,1),setpts=0.5*PTS’ ‘input/%05d.png’
ffmpeg -i .\input.mp4 -vf ‘select=between(n\,{START_FRAME}\,{END_FRAME}),setpts=0.5*PTS’ ‘input/%05d.png’
setpts的具体参数含义如下:
- Start counting PTS from zero
setpts=PTS-STARTPTS
- Apply fast motion effect:
setpts=0.5*PTS
- Apply slow motion effect:
setpts=2.0*PTS
- Set fixed rate of 25 frames per second:
setpts=N/(25*TB)
- Set fixed rate 25 fps with some jitter:
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
- Apply an offset of 10 seconds to the input PTS:
setpts=PTS+10/TB
- Generate timestamps from a “live source” and rebase onto the current timebase:
setpts='(RTCTIME - RTCSTART) / (TB * )'
- Generate timestamps by counting samples:
asetpts=N/SR/TB
9、从png序列生成视频文件
ffmpeg -y -r {TARGET_FPS} -f image2 -pattern_type glob -i ‘*.png’ ‘/content/gdrive/My Drive/{OUTPUT_FILE_PATH}’
2)命令基本语法
注意:这里面的非方括号部分(蓝字)都是必须得有的。
全局选项:
Global options (affect whole program instead of just one file:
-loglevel loglevel set libav* logging level
-v loglevel set libav* logging level
-report generate a report
-max_alloc bytes set maximum size of a single allocated block
-y overwrite output files
-n do not overwrite output files
-stats print progress report during encoding
-bits_per_raw_sample number set the number of bits per raw sample
-vol volume change audio volume (256=normal)
输入输出选项:
3)ffmpeg背后的多媒体基础知识
看这里
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124746.html