Python3 FFMPEG精确剪切测试笔记——使用ffmpeg-python库

1. 测试环境

1.1 ffmpeg-python

ffmpeg-python库文档:
https://github.com/kkroening/ffmpeg-python

命令安装:

pip install ffmpeg-python

1.2 ffmpeg

FFmpeg下载页面:
https://ffmpeg.org/download.html

D:\test_video>ffmpeg -version
ffmpeg version N-101404-g17127f81c5 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 9.3-win32 (GCC) 20200320
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-opencl --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --disable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomp
libavutil      56. 67.100 / 56. 67.100
libavcodec     58.129.100 / 58.129.100
libavformat    58. 71.100 / 58. 71.100
libavdevice    58. 12.100 / 58. 12.100
libavfilter     7.109.100 /  7.109.100
libswscale      5.  8.100 /  5.  8.100
libswresample   3.  8.100 /  3.  8.100
libpostproc    55.  8.100 / 55.  8.100

1.3 测试视频

测试视频下载点这里

2. 重新编码情况(有损剪切)

2.1 编码参数

ffmpeg.output( vcodec=‘h264’)

2.2 正确参数用法总结

input(ss=HH:MM:SS.xxx),output(t=HH:MM:SS.xxx),output(vframes=n)
ss = 入点时码前一帧
t = 目标时长帧数加一帧
vframes = 目标时长帧数加一帧
ms = frame / fps

2.3 测试过程

为了测试精准剪切,用了三个镜头,第一个镜头保留两帧,第三个镜头保留两帧

2.31 测试一

剪切打点出入点时码 timecode.frame

  • 8.10f (138f) - 20.13f (333f) = 12.1875 (195f)

转码命令出入点时码 timecode.ms

  • 8.625ms (138f) - 20.8125ms (333f) = 12.1875 (195f)
import ffmpeg
(
	ffmpeg
	.input('test.mp4',ss="00:00:08.625")
	.output('output_cut.mp4',vcodec='h264',acodec='aac',t="00:00:12.1875")
	.overwrite_output()
	.run()
)
frame=  195 fps=0.0 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值