使用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#使用FFmpeg 将视频格式转换成Gif图片示例

C#使用FFmpeg 将视频格式转换成MP4示例

ffmpeg ffplay ffprobe资料整理

posted @ 2022-06-03 13:01  天马3798  阅读(5016)  评论(0编辑  收藏  举报