Skip to content

FFMPEG 转为 m3u8

shell
ffmpeg -i mayun.mp4 -c:v libx264 -c:a aac -strict -15 -f hls -hls_list_size 128 -hls_time 300 mayun.m3u8
  • hls_time 设置每片的长度,默认值为 2,单位为秒。
  • hls_list_size n 设置播放列表保存的最多条目,设置为 0 会保存有所片信息,默认值为5。
  • -hls_wrap n 设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0。这个选项能够避免在磁盘上存储过多的 片,而且能够限制写入磁盘的最多的片的数量。
  • hls_start_number n 设置播放列表中 sequence number 的值为 number,默认值为 0。
  • strict 段数量

**注意:**播放列表的 sequence number 对每个 segment 来说都必须是唯一的,而且它不能和片的文件名(当使用 wrap 选项时,文件名有可能会重复使用)混淆。

hls_time 切片时间不准确的问题

播放 m3u8 的 ts 切片,必须要完整的下载一个 ts 切片,才能够播放,设置hls_time 的时间间隔越短越好( 根据实际情况来 ),实际过程中设置切片时间间隔为 2 秒,调用如下指令

m3u8(ts) 合并为 MP4

远程文件

ffmpeg -i "https://xushanxiang.com/demo/ffmpeg/hls265/output.m3u8" -vcodec copy -acodec copy -absf aac_adtstoasc output.mp4 本地文件

1、打开 cmd

2、输入指令,按照文件的实际路径合并

合并成 ts文件 copy /b F:\f*.ts E:\f\new.ts

合并成 MP4 文件 copy /b F:\f*.ts E:\f\new.MP4

而通过 ffmpeg 命令如下:

直接转: ffmpeg -i new.ts -c copy -map 0:v -map 0:a output.mp4

指定音频流(一般用这个): ffmpeg -i new.ts -c copy -map 0:v -map 0:a -bsf:a aac_adtstoasc output.mp4

重编码视频: ffmpeg -y -i new.ts -c:v libx264 -c:a copy -bsf:a aac_adtstoasc output.mp4

http://ossrs.net/lts/zh-cn/docs/v5/doc/rtmp

ffmpeg -re -i ./mayun.mp4 -c:v h264 -f flv rtmp://192.168.1.10/live/livestream

http://192.168.1.10:8080/live/livestream.m3u8

ffmpeg -re -i ./mayun.mp4 -c:v h264 -f flv rtmp://192.168.1.10/live/livestream
ffmpeg -re -i ./mayun.mp4 -c:v h264 -f rtsp -rtsp_transport tcp rtsp://localhost:8554/abcde