当前位置:   article > 正文

音视频系列5: ffmpeg-python

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)
  • 1
  • 2
  • 3
  • 4
  • 5

import ffmpeg
(
    ffmpeg
    .input('input.mp4')
    .hflip()
    .output('output.mp4')
    .run()
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

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()
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

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'])
  • 1
  • 2
  • 3
  • 4

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)
    )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/665309
推荐阅读
相关标签
  

闽ICP备14008679号