【发布时间】:2022-12-03 14:28:13
【问题描述】:
我在直播使用 HLS 不断更新的视频文件时遇到问题。
客户端通过POST方式录制的视频文件被发送到服务器端。
服务器将接收到的视频转换为 HLS (.m3u8 .ts)。
您可以使用以下代码转换为 .m3u8 和 .ts。
def to_m3u8(movie_path: Path):
"""
Convert mp4 to m3u8.
:param movie_path:
:return: m3u8 file path
"""
m3u8_path = movie_path.parent/f"{movie_path.stem}.m3u8"
command=f"ffmpeg -i {movie_path}" \
f"-c copy -map 0" \
f" -f segment -segment_time_delta 0 " \
f"-segment_list_type hls" \
f"-mov flags +faststart" \
f"-preset veryfast" \
f"-hls_playlist_type event" \
f"-segment_list_size 0" \
f"-segment_list {m3u8_path}" \
f"-segment_format mpegts" \
f "{movie_path.parent}/segment_%03d.ts"
logger.info(f"command: {command}")
subprocess.run(command, shell=True)
return m3u8_path
每次收到 POST 数据时,我都可以看到 .m3u8 .ts 文件被覆盖。
但是当我在 VLC 中打开 .m3u8 时,它会播放几秒钟的视频然后停止。
如何随时读取新添加的文件?
可以通过更改 FFmpege 选项来处理吗?
【问题讨论】:
标签: python ffmpeg http-live-streaming