“FFmpeg”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
 
(未显示同一用户的18个中间版本)
第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.mkv -c copy output.mp4</code>
  
第7行: 第8行:
 
在源文件内部编码器与目标输出文件编码器一致的前提下,可以只转换封装格式,这样处理转换速度非常快、非常高效
 
在源文件内部编码器与目标输出文件编码器一致的前提下,可以只转换封装格式,这样处理转换速度非常快、非常高效
  
 +
 +
=== 按开始、结束时间截取媒体文件 ===
 +
<code>ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c:v copy -c:a copy output.mp4</code>
 +
 +
-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
  
<code>ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c:v copy -c:a copy output.mp4</code>
 
  
-ss 和 -to 的格式是 时:分:秒
 
  
  
  
按开始时间和截取时间的长短截取媒体文件
+
=== 使用视频过滤器让视频向右旋转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>
  
<code>ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 -c:v copy -c:a copy output.mp4</code>
 
  
从00:00:10开始,-t 是时长,截取20秒时长
+
=== 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等   
  
<code>ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:20 -c:v copy -c:a copy output.mp4</code>
+
-ss:代表要截取的的图片在视频中的位置,后面接数字,秒为单位  
  
从00:00:10开始,-to 是截止时间,到00:00:20结束
+
-f:代表输出图片,后面接image2
  
1080P转720P,并使用显卡编解码加速
 
  
<code>ffmpeg -i "input.HD1080P.mp4" -vf scale_cuda=1280:720 -c:v h264_nvenc -c:a copy -y "output.HD720P.mp4"</code>
+
=== 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>
  
需要gpl版本的ffmpeg,带显卡加速用的视频滤镜 需要更新显卡驱动,使nvenc API 版本>=11.1
 
  
  
 +
=== 视频提取 gif ===
 +
<syntaxhighlight lang="powershell">
 +
ffmpeg -i "a.mkv" -ss 5605 -t 79 -r 2 out.gif
 +
</syntaxhighlight>-ss 是换算成秒的开始时间
  
RMVB转mp4
+
-t 是自开始时间开始多少秒的视频内容
  
<code>ffmpeg -hwaccel cuvid -c:v rv40 -i input.rmvb -c:v h264_nvenc -y output.mp4</code>
+
-r 是帧率,每秒抽几帧
  
指定视频解码器为 rv40,视频编码器为英伟达GPU mp4编码器
 
  
  
转到5.1声道
+
=== .ass 字幕文件转 .srt 字幕文件 ===
 +
<syntaxhighlight lang="powershell">
 +
ffmpeg -i t1.ass t1.srt
 +
</syntaxhighlight>
  
<code>ffmpeg -i "input.mp4" -ac 6 -c:v copy -c:a aac "output.mp4"</code>
 
  
默认手机上浏览器不能播放7.1声道音频流的片源,需要转换成5.1声道才可以播放
+
=== 将字幕流封装入 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