ffmpeg

ffmpeg嵌入字幕

软字幕 即内挂字幕,字幕还可以分离出来,插入速度快,但是需要播放器支持 注意:输出的视频格式只支持mp4

ffmpeg -i 201907181053358357.mp4 -i out.srt -c copy -c:s mov_text output.mp4
ffmpeg -i Mr.Robot.S02E03.1080p.BluRay.x265-RARBG.mp4 -i Subs/Mr.Robot.S02E03.1080p.BluRay.x264-SHORTBREHD/Mr.Robot.S02E03.1080p.BluRay.x264-SHORTBREHD.简体\&英文.srt -c copy -c:s mov_text 03.mp4

# 实测可用
ffmpeg -i Mr.Robot.S02E03.1080p.BluRay.x265-RARBG.mp4 -i Subs/Mr.Robot.S02E03.1080p.BluRay.x264-SHORTBREHD/Mr.Robot.S02E03.1080p.BluRay.x264-SHORTBREHD.简体\&英文.srt -c:v copy -c:a copy -c:s mov_text 03.mp4

# 直接显示
ffmpeg -i Mr.Robot.S02E03.1080p.BluRay.x265-RARBG.mp4 -vf ass=./Subs/Mr.Robot.S02E03.1080p.BluRay.x264-SHORTBREHD/Mr.Robot.S02E03.1080p.BluRay.x264-SHORTBREHD.简体\&英文.ass Mr03.mp4

分割文件

ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
  • -ss 指定从什么时间开始

  • -t 指定需要截取多长时间

  • -i 指定输入文件

使用方法

FFmpeg是一款功能强大的开源多媒体处理工具,可以用于处理音频和视频文件。它具有广泛的应用领域,包括格式转换、编码、解码、剪辑、拼接等。下面是一些常用的FFmpeg使用方法:

转换视频格式:

使用以下命令可以将一个视频文件从一种格式转换为另一种格式:

ffmpeg -i input.mp4 output.avi

这将将input.mp4文件转换为output.avi文件。

转换音频格式:

使用以下命令可以将一个音频文件从一种格式转换为另一种格式:

ffmpeg -i input.mp3 output.wav

这将将input.mp3文件转换为output.wav文件。

剪辑视频:

可以使用以下命令从一个视频文件中剪辑出指定时间段的内容:

ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c:v copy -c:a copy output.mp4

这将从input.mp4文件中提取从第10秒到第40秒的内容,并保存为output.mp4文件。

调整视频尺寸:

使用以下命令可以调整视频文件的分辨率:

ffmpeg -i input.mp4 -vf "scale=640:480" output.mp4

这将将input.mp4文件的分辨率调整为640x480,并保存为output.mp4文件。

提取音频:

使用以下命令可以从一个视频文件中提取音频:

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

这将从input.mp4文件中提取音频流,并保存为output.aac文件。

合并视频

ffmpeg不支持mp4直接合并,先将mp4转为ts格式,再进行合并

ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i "concat:1.ts.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

使用FFmpeg的"concat"协议。

下面是一个简单的步骤:

  1. 创建一个文本文件,例如input.txt,在该文件中列出要合并的视频文件的路径。每个视频文件应位于单独的一行。例如:

    file 'video1.mp4'
    file 'video2.mp4'
  2. 运行以下FFmpeg命令,使用input.txt作为输入文件,并指定输出文件名:

    ffmpeg -f concat -safe 0 -i input.txt -c copy output.mp4
    • -f concat指定使用"concat"协议进行合并。

    • -safe 0允许使用相对路径。

    • -i input.txt指定输入文件为input.txt

    • -c copy表示直接复制视频流和音频流,而不进行重新编码。

    • output.mp4是输出文件名,可以根据需要进行修改。

请确保视频文件的编解码格式、分辨率和其他参数相匹配,以避免合并后的视频出现问题。另外,如果两个视频的属性不同(例如,一个是横向视频,一个是纵向视频),在合并之前可以使用FFmpeg进行必要的调整,以确保它们的属性一致。

去掉视频前指定秒数的内容

有时下载的影视剧前面会有广告,可以根据广告长度对其进行剪切

例如下面就是将视频前45秒剪切,只保留后面的部分示例

#! /bin/bash

mkdir temp

for file in ls *.mp4
    do  ffmpeg -i $file -ss 45 -c copy temp/$file
done

rm -rf *.mp4 && mv temp/*.mp4 ./ && rmdir temp

最后更新于