使用ffmpeg将视频转ts

需求场景:

  • 来源视频格式、大小、码率、分辨率未知(不统一);

  • 要求支持多个平台(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’

问题1:

可以成功把视频转为.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>

问题2:(未解决)

可以播放以后又遇到了新的问题:

直接通过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]"
阅读 17.5k
2 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
1 篇内容引用
推荐问题
宣传栏