音视频系列5: ffmpeg-python

1. 快速上手

使用pip install ffmpeg-python进行安装
两种使用方式,一般用第二种:

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

import ffmpeg
(
    ffmpeg
    .input('input.mp4')
    .hflip()
    .output('output.mp4')
    .run()
)

下面是一个综合例子:
在这里插入图片描述
代码如下:

import ffmpeg

in_file = ffmpeg.input('input.mp4')
overlay_file = ffmpeg.input('overlay.png')
(
    ffmpeg
    .concat(
        in_file.trim(start_frame=10, end_frame=20),
        in_file.trim(start_frame=30, end_frame=40),
    )
    .overlay(overlay_file.hflip())
    .drawbox(50, 50, 120, 120, color='red', thickness=5)
    .output('out.mp4')
    .run()
)

结果如下图:
在这里插入图片描述

2. 常用功能

2.1 获取视频信息(ffprobe)

probe = ffmpeg.probe(args.in_filename)
video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)
width = int(video_stream['width'])
height = int(video_stream['height'])

2.2 视频thumbnail

在这里插入图片描述

2.3 将视频转为数组

在这里插入图片描述

2.4 读取视频帧

在这里插入图片描述

# 指定帧数读取任意帧
out, err = (
    ffmpeg.input(in_file)
          .filter('select', 'gte(n,{})'.format(frame_num))
          .output('pipe:', vframes=1, format='image2', vcodec='mjpeg')
          .run(capture_stdout=True)
)

# 基于时间提取
out, err = (
        ffmpeg.input(in_file, ss=time)
              .output('pipe:', vframes=1, format='image2', vcodec='mjpeg')
              .run(capture_stdout=True)
    )

2.6 图片集合转为视频

在这里插入图片描述
加入其它的filter:
在这里插入图片描述

2.7 音视频混合

在这里插入图片描述

2.8 左右声道混合

在这里插入图片描述

2.9 输出到pipe中

下面的例子用了interact,可以逐帧查看。
在这里插入图片描述

2.10 pipeline功能查看

在这里插入图片描述

2.11 加入tensorflow streaming

在这里插入图片描述

3. 视频流处理

3.1 本地视频转为http server

在这里插入图片描述
使用ffplay进行播放:
在这里插入图片描述

3.2 RTSP server转为TCP socket

在这里插入图片描述

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值