使用FFmpeg 将m3u8视频格式转换成MP4示例
一、使用FFmpeg 将m3u8视频格式转换成MP4示例
1.MP4 转 M3U8
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 2 -hls_time 15 output.m3u8
将 input.mp4 视频文件每 15 秒生成一个 ts 文件,最后生成一个 m3u8 文件,m3u8 文件是 ts 的索引文件。
我们直接用 VLC media player 等播放软件是可以直接打开 m3u8 文件,像播放 mp4 一样。
# 1.视频整体转码ts ffmpeg -y -i music.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb outmusic.ts # 2. ts 文件切片 ffmpeg -i music.ts -c copy -map 0 -f segment -segment_list outmusic.m3u8 -segment_time 10 out15s_%3d.ts
m3u8 格式解析
完整的 m3u8 文件有三部分:
- index.m3u8,保存视频的基本信息和分段文件顺序;
- key,如果视频加密,保存密钥;
- data文件,其他都是视频的数据文件。
具体内容解析:
#EXTM3U
,是文件开始#EXT-X-VERSION
,标识HLS的协议版本号;#EXT-X-TARGETDURATION
,表示每个视频分段最大的时长(单位秒);#EXT-X-MEDIA-SEQUENCE
,表示播放列表第一个 URL 片段文件的序列号;#EXT-X-PLAYLIST-TYPE
,表明流媒体类型;#EXT-X-KEY
,加密方式,这里加密方式为AES-128
,同时指定IV
,在解密时需要;#EXTINF
,表示其后 URL 指定的媒体片段时长(单位为秒)。
2.M3U8转Mp4
1.远程文件下载
ffmpeg -i “https://xushanxiang.com/demo/ffmpeg/hls265/output.m3u8” -vcodec copy -acodec copy -absf aac_adtstoasc output.mp4
2.本地文件下载
1、打开
cmd
2、输入指令,按照文件的实际路径合并
合并成
ts
文件 copy /b F:f*.ts E:f ew.ts
合并成
MP4
文件 copy /b F:f*.ts E:f ew.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
3.加密视频
转换报错。
[hls @ 000001b2ab952740] Error when loading first segment 'I:\ykt_save\5685d5372d694b99aefac6a182bc36c3_0/000000.ts' I:\ykt_save\5685d5372d694b99aefac6a182bc36c3_0.m3u8: Invalid data found when processing input
参考连接:
https://www.yht7.com/news/187921
https://blog.csdn.net/h_a_p_p_y_h/article/details/118935488
http://events.jianshu.io/p/75434f70487f
https://blog.csdn.net/weixin_44647371/article/details/120640311
更多:
分类:
C#-WPF多媒体
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
2019-06-03 苹果手机微信浏览器select标签选择完成之后页面不会自动回到原位
2016-06-03 MVC使用Exception过滤器自定义处理Action的的异常
2016-06-03 MVC中HttpContext, HttpContextBase, HttpContextWrapper联系
2014-06-03 微网站中加入一键拨号功能代码