Python 调用 ffmpeg-python 模块实现对视频文件切片,转码为 m3u8 格式并修改分辨率
Posted 梦想橡皮擦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 调用 ffmpeg-python 模块实现对视频文件切片,转码为 m3u8 格式并修改分辨率相关的知识,希望对你有一定的参考价值。
实操场景
Python将MP4文件转码为m3u8格式视频。
本实战环节用到的模块依旧是 ffmpeg-python
。
首先通过 ffmpeg
命令完成转码工作。
第一步,将视频转码为 ts 格式
ffmpeg -y -i 视频文件.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb ./视频文件.ts
其中参数配置
-y
:覆盖视频;-i
:输入视频;-vcodec copy
:拷贝视频流;-acodec copy
:拷贝音频流;-bsf:v h264_mp4toannexb
:为匹配的流设置比特流过滤器。
第二步,将ts 切片
ffmpeg -i 视频名称.ts -c copy -map 0 -f segment -segment_list m3u8文件路径.m3u8 -segment_time 5 m3u8文件路径\\前缀-%03d.ts
其中参数配置
-c copy
:拷贝所有的流;-map 0
:复制所有流;-f segment
:分段格式;-segment_list m3u8文件路径.m3u8
:生成分段文件;-segment_time 5
:分段时长;
接下来将上述内容通过 Python 落地实现。
import ffmpeg
def zhuan():
stream = ffmpeg.input('./视频文件.mp4')
# stream = ffmpeg.output(stream,'output.ts',video_bitrate=1024*1024,format='segment')
# stream = ffmpeg.output(stream, 'output.ts', video_bitrate=1024 * 1024,
# **'-segment_time': 5, '-segment_format': 'mpegts')
stream = ffmpeg.output(stream, './videos/%03d.ts', vcodec='copy', acodec='copy', map=0, f='segment',
segment_list='./videos/aaa.m3u8', segment_time=5)
out, err = stream.overwrite_output().run()
print(out)
if __name__ == '__main__':
zhuan()
接下来将视频分辨率进行降低
def zhuan1():
stream = ffmpeg.input('./视频文件.mp4')
stream = ffmpeg.output(stream, './videos/%03d.ts', acodec='copy', map=0,
f='segment', s='1280x720',
segment_list='./videos/aaa.m3u8', segment_time=5)
out, err = stream.overwrite_output().run()
if __name__ == '__main__':
zhuan1()
上述代码将把MP4文件分辨率从 1920*1080
转换为 1280*720
,同时将视频按照5秒进行切片。这样的文件,你可以用于移动端需求。
记录时间
2022年度 Flag,写作的 567 / 1024 篇。
可以关注我,点赞我、评论我、收藏我啦。
更多精彩
以上是关于Python 调用 ffmpeg-python 模块实现对视频文件切片,转码为 m3u8 格式并修改分辨率的主要内容,如果未能解决你的问题,请参考以下文章
python 使用ffmpeg-python将numpy数组转换为视频帧