ffmpeg分片 m3u8以及视频截取

M3u8:
从文件转HLS直播,也就是生成m3u8文件:
./ffmpeg -re -i test.mp4 -c copy -f hls -bsf:v h264_mp4toannexb output.m3u8
其中 -bsf:v h264_mp4toannexb是将MP4中的H.264数据转换为H.264AnnexB标准编码,如果源文件是FLV、TS等可作为直播传输流的视频,则不需要此参数

EXT-X-TARGETDURATION:最大的分片时长,整数,四舍五入

EXT-X-MEDIA-SEQUENCE:直播切片序列,当打开文件时以这个标签的值为参考。 EXT-X-ENDLIST:结束标签,如果没有这个标签,都是从倒数第三片开始播放,如果不满三片则不播放。 EXTINF:为每一个分片的duration

EXT-X-DISCONTINUITY:前一分片与后一分片有不连续的时候播放可能会出错,需要这个标签,以播放当前分片的duraiton时间刷新M3U8列表,然后做对应的加载动作

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

EXT-X-STREAM-INF:

主要出现在多级M3U8文件中

AVERAGE-BANDWIDTH:当播放EXT-STREAM-INF下对应的M3U8时占用的平均码率 可选 CODECS:声明EXT-X-STREAM-INF下面对应的音频编码、视频编码信息

FRAME-RATE:视频帧率 可选

FFMpeg切片segment参数:

将mp4转m3u8,内部格式依然是mp4:
只生成切片:
./ffmpeg -re -i test.mp4 -c copy -f segment -segment_format mp4 test_output_%d.mp4
生成切片以及m3u8:
./ffmpeg -re -i test.mp4 -c copy -f segment -segment_format mp4 -segment_list_type m3u8 -segment_list output.m3u8 test_output_%d.mp4
截取视频:
截取前10秒
./ffmpeg -i test2.mp4 -c copy -t 10 -copyts output.mp4
从第6秒开始截取:
./ffmpeg -ss 6 -i test2.mp4 -c copy output_ss6.mp4
从第6秒开始截取10秒:
ffmpeg -ss 6 -i test2.mp4 -c copy -t 10 output_ss6_t10.mp4
指定起始播放时间为第5秒,小于这个时间的会放不出来:
./ffmpeg -i test2.mp4 -c copy -t 10 -output_ts_offset 5 output_s5.mp4
抽出音频aac文件:
./ffmpeg -i test2.mp4 -vn -acodec copy output.aac
抽出视频流H.264:
./ffmpeg -i test2.mp4 -vcodec copy -an output.h264
抽出视频流H.265(测试无效??):
./ffmpeg -i test2.mp4 -vcodec copy -an -bsf hevc_mp4toannext -f hevc output.hevc

作者:gleeeli

★文末名片可以免费领取音视频开发学习资料,内容包括(C/C++,Linux 服务器开发,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

猜你喜欢

转载自blog.csdn.net/yinshipin007/article/details/128460818