网站首页 > 技术教程 正文
下面几种转换方式是不同版本和方法
新版本ffmpeg转视频直接可以切边并生成 m3u8(目前用的方式,也可以用选项 segment ):
ffmpeg -i '源文件.mp4' -c:v h264 -flags +cgop -g 30 -hls_time 20 -hls_list_size 0 -hls_segment_filename index%3d.ts 'index.m3u8'
好像非 MP4 文件也可以直接切分,试了下 mkv、avi等,不太懂之后再研究,先使用就行。
或者这个:
ffmpeg -i input.mp4 -vcodec copy -acodec copy -hls_time 60 -hls_list_size 0 index.m3u8
一、方法一
1、首先将视频文件转为视频编码h264,音频编码aac格式的mp4文件
使用ffprobe查看文件编码方式
ffprobe input.mkv
如果音视频编码为h264/aac则执行
ffmpeg -i input.mkv -acodec copy -vcodec copy out.mp4
否则执行
ffmpeg -i input.mkv -acodec libfaac -vcodec libx264 out.mp4
2、将mp4文件转为ts文件并生成m3u8
1. 将mp4转为完整的ts
ffmpeg -i out.mp4 -c copy -bsf h264_mp4toannexb output.ts
如果不使用 -bsf h264_mp4toannexb 参数会提示错误,主要是因为使用了mp4中的h264编码 而h264有两种封装:
一种是annexb模式,传统模式有statrtcode SPS和PPS是在ES中。
另一种是mp4模式,一般mp4 mkv avi会没有startcode SPS和PPS以及其他信息被封装在container中 每一个frame前面是这个frame的长度,
很多解码器只支持 annexb 这种模式,因此需要将mp4做转换,在ffmpeg中用 h264_mp4toannexb_filter 可以做转换,所以需要使用 -bsf h264_mp4toannexb 来进行转换。
2. 将ts切片,并生成m3u8文件
ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
二、方法二
1.ffmpeg切片命令,以H264和AAC的形式对视频进行输出
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8
注:-strict -2 之前是实验参数表示 aac音频编码,如果不使用aac音频编码使用使其的编码好像还需要导入第三方的音频编码库,使用FFmpeg自带的aac音频编码带上-strict -2 参数就可以了。
2.ffmpeg转化成HLS时附带的指令
- -hls_time n: 设置每片的长度,默认值为2。单位为秒
- -hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5
- -hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量
- -hls_start_number n:设置播放列表中sequence number的值为number,默认值为0
3.对ffmpeg切片指令的使用
ffmpeg -i output.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 output1.m3u8
三、方法三
1、看看原视频是不是MP4啦 如果不是就需要转成MP4一下咯
ffmpeg -i 源文件 -y -c:v libx264 -strict -2 \home\xxx.mp4
2、把MP4转成ts文件
ffmpeg -y -i \home\xxx.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb \home\xxx.ts
3、切分ts文件
ffmpeg -i \home\xxx.ts -c copy -map 0 -f segment -segment_list \home\xxx\index.m3u8 -segment_time 30 \home\xxx\nxb-%04d.ts
- -segment_list 指定 m3u8 文件
- -segment_time 30 指定切片ts文件长度30秒
如果是MP4文件,直接执行
ffmpeg -i xxx.mp4 -f segment -segment_time 60 -segment_format mpegts -segment_list /home/xxx/video_name.m3u8 -c copy -bsf:v h264_mp4toannexb -map 0 /home/xxx/course-%04d.ts
猜你喜欢
- 2024-11-06 Qt音视频开发9-ffmpeg录像存储(nba比赛录像回放)
- 2024-11-06 音视频开源基础 - ffmpeg命令(ffmpeg音频处理)
- 2024-11-06 ffmpeg常用命令行集锦(ffmpeg 命令大全)
- 2024-11-06 音视频开发7. ffmpeg 几个重要结构体
- 2024-11-06 超详细的手把手下载安装FFmpeg整个过程,你学会了吗?
- 2024-11-06 FFmpeg硬解码(ffmpeg硬解码和直接使用cuda的区别)
- 2024-11-06 mPEG-Lys(MAL)-DBCO,甲氧基PEG赖氨酸马来酰亚胺二苯并环辛炔
- 2024-11-06 音视频流媒体高级开发(FFmpeg6.0/WebRTC/RTMP/RTSP/编码解码)
- 2024-11-06 FFmpeg在windows的安装、合并、切片、.m4s、.m3u8处理
- 2024-11-06 完美解决Linux环境编译ffmpeg库(linux编译环境配置)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)