我有一个ffmpeg命令,可以将rtmp流转换为http实时流:
ffmpeg.exe -loglevel info -i %stream_input% -g 250 -r 15 -sc_threshold 0 -preset slow -keyint_min 15 -c:v libx264 -ar 44100 -b:v 200k -b:a 64k -profile:v baseline -level 3.0 -s 400x224 -aspect 16:9 -maxrate 200k -bufsize 1000k -map 0 -flags -global_header -f segment -segment_time 10 -segment_wrap 3 -segment_list_flags +live -segment_list_type m3u8 -segment_list playlist.m3u8 -segment_format mpegts segment%05d.ts 1>output.txt
此命令创建 ts 文件和 m3u8 播放列表。我想做的是保持ts文件名相同,但在播放列表中重命名它们。例如,片段文件:segment00000.ts,在播放列表中:Segment.aspx?ts=00000
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:17
#EXTINF:16.692244,
segment00000.ts -> Rename it to Segment.aspx?ts=00000
#EXTINF:16.680789,
segment00001.ts
ffmpeg可以吗?
我假设您这样做是因为您在服务器前面运行服务来管理内容权限或其他内容。 在这种情况下,我会让服务器处理对 .m3u8 的请求,并使用您要查找的文件名生成一个新请求。 它是一种微不足道的文件格式,无论您使用哪种语言,都应该很容易做到这一点。
不,这在 ffmpeg 中是不可能的。更改文件名的生成方式并重新编译它是相当简单的。