使用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:[email protected]: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]"

视频 ffmpeg

Samip 9 years, 4 months ago

试试用保利威视统一处理好了。

NINl猫 answered 9 years, 4 months ago

Azury answered 9 years, 4 months ago

Your Answer