FFmpeg知识笔记

发布于 2023-02-18  496 次阅读


flv转MP4

单文件转换

ffmpeg -i "input.flv" -c copy "output.mp4"

多文件转换

for %i in (*.flv) do ffmpeg -i "%i" -c copy "%~ni.mp4"

文件合并

把文件名按以下格式写入新建的“sample.txt”中

file '文件1.mp4'
file '文件2.mp4'
file '文件3.mp4'
file '文件4.mp4'
file '文件5.mp4'

执行命令

ffmpeg -f concat -safe 0 -i sample.txt -c copy output.mp4

windows中,批量转换

  1. 新建批处理文件filename.bat,文件内容如下

    @echo off  
    for %%i in (*.flv) do ffmpeg -i "%%i" -c copy "%%~ni.mp4"
    • @echo off:这是一个常用的Windows批处理命令,用于关闭命令提示符窗口中的命令回显。这样在运行批处理脚本时,只会显示输出结果,而不会显示执行的命令。
    • for %%i in (*.flv) do:这是一个循环命令,用于遍历当前目录下所有扩展名为.flv的文件。在每次循环中,%%i将代表一个flv文件的完整路径和文件名。
    • ffmpeg -i "%%i" -c copy "%%~ni.mp4":这是ffmpeg命令,用于将单个flv文件转换为mp4文件。
      • -i "%%i":指定输入文件的路径和文件名,即当前循环中的flv文件。
      • -c copy:指定视频和音频流的编码方式。在这里,我们使用“copy”表示直接复制原始视频和音频流,而不进行重新编码。这样可以更快地完成转换,但请注意,输出文件的编码格式将与输入文件相同。
      • "%%~ni.mp4":指定输出文件的路径和文件名。%%~ni表示当前循环中的flv文件的文件名(去除扩展名),.mp4是输出文件的扩展名。

截取视频片段

# 格式:ffmpeg -ss <开始秒数> -i "<原文件名>" -t <截取的多少秒> -c copy "<新文件名>"
#下面是例子,从5140秒开始,截取460秒
ffmpeg -ss 5140 -i "1.mp4" -t 460 -c copy "2.mp4"
# 不建议使用时间段的方法,感觉会抽风,也可能是我操作不当

从视频中分离音频

ffmpeg -i input.mp4 -vn -acodec copy output.aac

-i input.mp4 指定输入文件为input.mp4。
-vn 禁用视频轨道,只处理音频。
-acodec copy 拷贝音频编解码器,这样不会对音频进行转码,速度会更快。
output.aac 指定输出文件的格式为AAC。根据需要,也可以选择输出其他格式,如MP3等。

给视频添加水印

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4

其中

input.mp4是原始视频文件

watermark.png是要添加的水印图片文件

output.mp4是输出视频文件

-filter_complex参数用于指定复杂的过滤器操作

overlay过滤器用于将水印图片叠加到视频上

W-w-10:H-h-10表示水印的位置在视频的右下角,留出了10个像素的边距。

可以根据需要调整边距和水印的位置,以实现不同的效果

届ける言葉を今は育ててる
最后更新于 2023-10-06