ubuntu小技巧24--快速入门ffmpeg

1 介绍

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。

笔者偶尔会做一些音视频的简单剪辑工具,多使用Ubuntu系统,且不想下载过多的工具软件,因此整理了一些 ffmpeg 常用的音视频操作方法,方便后续用 ffmpeg 做基础的音视频剪辑。
后续也会在本文持续更新 ffmpeg 相关的操作技巧和注意事项!

2 使用方法

2.1 ffmpeg命令剪辑音视频文件

视频格式转换

从mp4 转化为avi格式
ffmpeg -i v_input.mp4 v_input.avi

将音视频输出到mpg文件中

ffmpeg -i m_input.mp -i v_input.mp4 v_input.mpg

从视频中提取图片

ffmpeg -i v_input.mp4 -r 1  -f image2 v-%03d.jpeg
每秒从视频中提取一帧图片输出,格式为v-001.jpeg

将图片合并为视频

ffmpeg -f image2 -framerate 12 -i v-%03d.jpeg  v.avi
将v-001.jpeg 类别的图片合并为一个视频,每秒12帧

剪辑音乐

ffmpeg -ss 60 -i dayu.mp3 -t 10  dayu1.mp3
-ss 表示起始偏移时间,此处即从60s开始剪辑
-t 表示时间周期,此处为需要剪辑10s
最终即为剪辑 0:60 - 0:70 的音乐 

剪辑视频

ffmpeg -ss 60 -i v_input.mp4 -t 10  v_input1.mp4
-ss 表示起始偏移时间,此处即从60s开始剪辑
-t 表示时间周期,此处为需要剪辑10s
最终即为剪辑 0:60 - 0:70 的视频

拼接多个音频

cat dayu.txt 
file dayu1.mp3
file dayu2.mp3
将目标文件按照file filename 逐行写入到文件dayu.txt中
ffmpeg -f concat -i dayu.txt -c copy dayu60-80.mp3
通过-f concat -i dayu.txt 指定合并和文件源,并输出到 dayu60-80.mp3 中即可

2.2 python脚本剪辑音视频文件

输出视频基础信息

from __future__ import unicode_literals, print_function
import argparse
import ffmpeg
import sys


parser = argparse.ArgumentParser(description='Get video information')
parser.add_argument('in_filename', help='Input filename')


if __name__ == '__main__':
    args = parser.parse_args()

    try:
        probe = ffmpeg.probe(args.in_filename)
    except ffmpeg.Error as e:
        print(e.stderr, file=sys.stderr)
        sys.exit(1)

    video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)
    if video_stream is None:
        print('No video stream found', file=sys.stderr)
        sys.exit(1)

    width = int(video_stream['width'])
    height = int(video_stream['height'])
    num_frames = int(video_stream['nb_frames'])
    print('width: {}'.format(width))
    print('height: {}'.format(height))
    print('num_frames: {}'.format(num_frames))

############################################
测试
############################################
# python3 video_info.py v_input.mp4 
width: 1920
height: 1080
num_frames: 1984

在这里插入图片描述
水平翻转视频(对每一帧进行左右翻转)

import ffmpeg
stream = ffmpeg.input('v_input1.mp4')
stream = ffmpeg.hflip(stream)
stream = ffmpeg.output(stream, 'v_output1.mp4')
ffmpeg.run(stream)

3 注意事项

  1. ffmpeg 有很多命令和参数,实际中如果不是需要精细处理,可以省略掉不必要的参数。

4 说明

软件环境
Ubuntu Desktop 20.04
ffmpeg version 4.2.4-1ubuntu0.1
参考文档
百度百科–ffmpeg
ffmpeg 官方文档
FFmpeg常用命令汇总+文档汇总
ffmpeg-python 0.1.1
github.com/kkroening/ffmpeg-python

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昕光xg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值