【首发】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:输入视...
实操场景
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秒进行切片。这样的文件,你可以用于移动端需求。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)