FFmpeg输出到s3fs挂载盘重命名.tmp文件不支持错误如何解决
问题解答
问题1:是否存在FFmpeg参数可关闭临时文件重命名逻辑
存在,你使用的HLS复用器默认开启了临时文件写入机制:会先将m3u8播放列表内容写入.tmp后缀的临时文件,写完后再重命名覆盖原文件,避免写入过程中播放列表损坏。添加-hls_flags -temp_file参数即可禁用该逻辑,直接向目标路径写入m3u8文件,无需重命名操作。
修改后的命令如下:
ffmpeg -i "/home/ffmpeg/112233.mov" -c:v libx264 -movflags +dash -preset fast -pix_fmt yuv420p -c:a aac -b:a 192k -ac 2 -profile:v high -b:v 3369k -vf scale=-2:1080 -bufsize 969k -hls_time 9 -hls_list_size 0 -g 30 -start_number 0 -streaming 1 -hls_playlist 1 -lhls 1 -hls_playlist_type event -hls_flags -temp_file -f hls "/mnt/s3fs/test/112233.stream"
问题2:是否存在参数可让FFmpeg忽略该错误继续运行
没有对应的可用参数。该报错属于核心输出操作失败,FFmpeg会判定输出链路异常终止进程,即使强制跳过错误,也会导致播放列表索引不完整,最终生成的HLS流无法正常播放。
补充优化建议:对象存储本身不支持原子重命名操作,s3fs的重命名逻辑是模拟实现的,兼容性差。除了修改FFmpeg参数外,也可以先将文件输出到本地磁盘,转换完成后再同步到s3fs挂载目录,能彻底规避该类IO兼容问题。
内容的提问来源于stack exchange,提问作者John R
相关产品推荐
相关产品推荐

