需求场景:
来源视频格式、大小、码率、分辨率未知(不统一);
要求支持多个平台(PC、手机APP、网页)
输出统一格式、大小、码率、分辨率;
早期的视频转码为MP4格式,会有个问题,当视频文件比较大时,就比较坑;
目前考虑把视频输出为多个.ts
格式的视频片段和一个m3u8
格式的.ts
文件列表;
在网上查到可以使用ffmpeg以下命令转换:
ffmpeg -i Wildlife.wmv -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list ./m3u8/index.m3u8 -segment_time 10 ./m3u8/’%03d.ts’
可以成功把视频转为.ts
并生成.m3u8
索引文件,但是使用video
标签播放时不能播放(safari浏览器)
使用index.m3u8不能播放<video src="m3u8/index.m3u8"></video>使用ts文件可以播放<video src="m3u8/0.ts"></video>
感谢大神 @itlr的提醒,应该是http地址引用m3u8文件:
<video src="http://localhost/m3u8/index.m3u8"></video>
可以播放以后又遇到了新的问题:
直接通过http引用,可以播放但是视频不显示水印
<video src="http://localhost/m3u8/index.m3u8"></video>
可以播放也可以显示水印
<video src="m3u8/0.ts"></video>
转码时的添加水印的参数(图片和文字水印都试过,结果一样):
# 文字水印
-vf "drawtext=text=Teachmyself:fontfile=/Library/Fonts/Arial.ttf:fontsize=16:fontcolor=yellow@0.8:x=w-tw-16:y=h-th-16"
# 图片水印:
-vf "movie=watermark.png [wm]; [in][wm] overlay=main_w-overlay_w-16:main_h-overlay_h-16 [out]"