“FFmpeg”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
(未显示同一用户的27个中间版本) | |||
第1行: | 第1行: | ||
− | 按开始、结束时间截取媒体文件 | + | 可以用 uTools 装个“FFmpeg 助手”或者直接访问 https://alfg.dev/ffmpeg-commander/<nowiki/>(项目地址:https://github.com/alfg/ffmpeg-commander<nowiki/>) 辅助生成命令 |
+ | |||
+ | === 转封装 === | ||
+ | <code>ffmpeg -i input.mkv -c copy output.mp4</code> | ||
+ | |||
+ | <code>ffmpeg -i input.mp4 -c copy output.flv</code> | ||
+ | |||
+ | 在源文件内部编码器与目标输出文件编码器一致的前提下,可以只转换封装格式,这样处理转换速度非常快、非常高效 | ||
+ | |||
+ | |||
+ | === 按开始、结束时间截取媒体文件 === | ||
+ | <code>ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c:v copy -c:a copy output.mp4</code> | ||
-ss 和 -to 的格式是 时:分:秒 | -ss 和 -to 的格式是 时:分:秒 | ||
− | < | + | |
+ | === 按开始时间和截取时间的长短截取媒体文件 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 -c:v copy -c:a copy output.mp4 | ||
+ | </syntaxhighlight>从00:00:10开始,-t 是时长,截取20秒时长 | ||
+ | |||
+ | |||
+ | === 1080P转720P,并使用显卡编解码加速 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i "input.HD1080P.mp4" -vf scale_cuda=1280:720 -c:v h264_nvenc -c:a copy -y "output.HD720P.mp4" | ||
+ | </syntaxhighlight>需要gpl版本的ffmpeg,带显卡加速用的视频滤镜 需要更新显卡驱动,使nvenc API 版本>=11.1 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 使用视频过滤器让视频向右旋转90度 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i input -vf "transpose=1" -c:v libx264 -c:a copy cpu_h264.mp4 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | === RMVB转mp4 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -hwaccel cuvid -c:v rv40 -i input.rmvb -c:v h264_nvenc -y output.mp4 | ||
+ | </syntaxhighlight>指定视频解码器为 rv40,视频编码器为英伟达GPU mp4编码器 | ||
+ | |||
+ | |||
+ | === 转到5.1声道 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i "input.mp4" -ac 6 -c:v copy -c:a aac "output.mp4" | ||
+ | </syntaxhighlight>默认手机上浏览器不能播放7.1声道音频流的片源,需要转换成5.1声道才可以播放 | ||
+ | |||
+ | |||
+ | === 音量增大10分贝 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i index_20220926020020.mp4 -af volume=10dB -y index_20220926020020_volume_plus10db.mp4 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 音量较小10分贝 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i index_20220926020020.mp4 -af volume=-10dB -y index_20220926020020_volume_plus10db.mp4 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | === nvidia显卡加速h265转h264 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg.exe -hwaccel cuvid -c:v hevc_cuvid -i "h265.mp4" -c:v h264_nvenc -c:a copy -y "h264.mp4" | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | === 导出视频的某一帧 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | E:\record\2023\1\28>ffmpeg -i test.mp4 -ss 783 -f image2 out.jpg | ||
+ | </syntaxhighlight>-i :代表输入流,后面接视频的物理路径,可以是MP4、AVI等 | ||
+ | |||
+ | -ss:代表要截取的的图片在视频中的位置,后面接数字,秒为单位 | ||
+ | |||
+ | -f:代表输出图片,后面接image2 | ||
+ | |||
+ | |||
+ | === m4a 转 mp3 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | E:\record\2023\2\23>ffmpeg.exe -i "555c_015d_040c_b641e77f8567c35ed8213fd9dcb5ca13.m4a" -y -acodec libmp3lame -aq 0 "555c_015d_040c_b641e77f8567c35ed8213fd9dcb5ca13.mp3" | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | === 视频提取 gif === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i "a.mkv" -ss 5605 -t 79 -r 2 out.gif | ||
+ | </syntaxhighlight>-ss 是换算成秒的开始时间 | ||
+ | |||
+ | -t 是自开始时间开始多少秒的视频内容 | ||
+ | |||
+ | -r 是帧率,每秒抽几帧 | ||
+ | |||
+ | |||
+ | |||
+ | === .ass 字幕文件转 .srt 字幕文件 === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i t1.ass t1.srt | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | === 将字幕流封装入 mkv === | ||
+ | <syntaxhighlight lang="powershell"> | ||
+ | ffmpeg -i input.mkv -i t1.srt -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 -map 0:6 -map 0:7 -map 0:8 -map 0:9 -map 0:10 -map 0:11 -map 0:12 -map 0:13 -map 0:14 -map 0:15 -map 0:16 -map 0:17 -map 0:18 -map 0:19 -map 0:20 -map 1:0 -acodec copy -vcodec copy -scodec copy output.mkv | ||
+ | </syntaxhighlight>会分别将第1个文件的第1个流、第2个流、……第21个流与第二个输入文件的第1个流写入output.mkv |
2023年3月30日 (四) 15:26的最新版本
可以用 uTools 装个“FFmpeg 助手”或者直接访问 https://alfg.dev/ffmpeg-commander/(项目地址:https://github.com/alfg/ffmpeg-commander) 辅助生成命令
转封装
ffmpeg -i input.mkv -c copy output.mp4
ffmpeg -i input.mp4 -c copy output.flv
在源文件内部编码器与目标输出文件编码器一致的前提下,可以只转换封装格式,这样处理转换速度非常快、非常高效
按开始、结束时间截取媒体文件
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c:v copy -c:a copy output.mp4
-ss 和 -to 的格式是 时:分:秒
按开始时间和截取时间的长短截取媒体文件
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 -c:v copy -c:a copy output.mp4
从00:00:10开始,-t 是时长,截取20秒时长
1080P转720P,并使用显卡编解码加速
ffmpeg -i "input.HD1080P.mp4" -vf scale_cuda=1280:720 -c:v h264_nvenc -c:a copy -y "output.HD720P.mp4"
需要gpl版本的ffmpeg,带显卡加速用的视频滤镜 需要更新显卡驱动,使nvenc API 版本>=11.1
使用视频过滤器让视频向右旋转90度
ffmpeg -i input -vf "transpose=1" -c:v libx264 -c:a copy cpu_h264.mp4
RMVB转mp4
ffmpeg -hwaccel cuvid -c:v rv40 -i input.rmvb -c:v h264_nvenc -y output.mp4
指定视频解码器为 rv40,视频编码器为英伟达GPU mp4编码器
转到5.1声道
ffmpeg -i "input.mp4" -ac 6 -c:v copy -c:a aac "output.mp4"
默认手机上浏览器不能播放7.1声道音频流的片源,需要转换成5.1声道才可以播放
音量增大10分贝
ffmpeg -i index_20220926020020.mp4 -af volume=10dB -y index_20220926020020_volume_plus10db.mp4
音量较小10分贝
ffmpeg -i index_20220926020020.mp4 -af volume=-10dB -y index_20220926020020_volume_plus10db.mp4
nvidia显卡加速h265转h264
ffmpeg.exe -hwaccel cuvid -c:v hevc_cuvid -i "h265.mp4" -c:v h264_nvenc -c:a copy -y "h264.mp4"
导出视频的某一帧
E:\record\2023\1\28>ffmpeg -i test.mp4 -ss 783 -f image2 out.jpg
-i :代表输入流,后面接视频的物理路径,可以是MP4、AVI等
-ss:代表要截取的的图片在视频中的位置,后面接数字,秒为单位
-f:代表输出图片,后面接image2
m4a 转 mp3
E:\record\2023\2\23>ffmpeg.exe -i "555c_015d_040c_b641e77f8567c35ed8213fd9dcb5ca13.m4a" -y -acodec libmp3lame -aq 0 "555c_015d_040c_b641e77f8567c35ed8213fd9dcb5ca13.mp3"
视频提取 gif
ffmpeg -i "a.mkv" -ss 5605 -t 79 -r 2 out.gif
-ss 是换算成秒的开始时间
-t 是自开始时间开始多少秒的视频内容
-r 是帧率,每秒抽几帧
.ass 字幕文件转 .srt 字幕文件
ffmpeg -i t1.ass t1.srt
将字幕流封装入 mkv
ffmpeg -i input.mkv -i t1.srt -map 0:0 -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 -map 0:6 -map 0:7 -map 0:8 -map 0:9 -map 0:10 -map 0:11 -map 0:12 -map 0:13 -map 0:14 -map 0:15 -map 0:16 -map 0:17 -map 0:18 -map 0:19 -map 0:20 -map 1:0 -acodec copy -vcodec copy -scodec copy output.mkv
会分别将第1个文件的第1个流、第2个流、……第21个流与第二个输入文件的第1个流写入output.mkv