Linux下令&ffmpeg瀑布流测试

[复制链接]
发表于 2026-1-10 17:21:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
ffmpeg -re -i /var/www/html/cct/public/public_video/eye.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost:1935/live
2.ffmpeg -re -i xx.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv -cors 'X-Custom-Header: CustomValue' rtmp://localhost:1935/hls
3.ffmpeg -re -i input.mp4 -vcodec copy -acodec copy -f flv -headers "X-Custom-Header: CustomValue" rtmp://localhost:1935/stream
ffplay rtmp://localhost:1935/live

过滤, 管道与重定向
过滤
过滤出 /etc/passwd 文件中包罗 root 的记载
grep 'root' /etc/passwd
递归地过滤出 /var/log/ 目次中包罗 linux 的记载
grep -r 'linux' /var/log/
管道
简单来说, Linux 中管道的作用是将上一个下令的输出作为下一个下令的输入, 像 pipe 一样将各个下令串联起来实行, 管道的利用符是 |
比如, 我们可以将 cat 和 grep 两个下令用管道组合在一起
cat /etc/passwd | grep 'root'
过滤出 /etc 目次中名字包罗 ssh 的目次(不包罗子目次)
ls /etc | grep 'ssh'
重定向
可以利用 > 或 < 将下令的输出重定向到一个文件中
echo 'Hello World' > ~/test.txt
运维常用下令
ping 下令
对 cloud.tencent.com 发送 4 个 ping 包, 查抄与其是否联通
ping -c 4 cloud.tencent.com
netstat 下令
netstat 下令用于表现各种网络干系信息,如网络毗连, 路由表, 接口状态等等
列出全部处于监听状态的tcp端口
netstat -lt
检察全部的端口信息, 包罗 PID 和历程名称
netstat -tulpn
ps 下令
过滤得到当前体系中的 ssh 历程信息
ps aux | grep 's sh'

1. 检察体系运行内存
free -m
======================================
find  /opt /usr /var -name "jackson-databind*"
利用ffmpeg将视频转为M2TS格式(蓝光存储到光盘)
ffmpeg -i input.mp4 -c copy -f mpegts output.m2ts
-i :指定输入文件
-c copy :直接拷贝音视频流,不举行重新编码以保持视频质量
-f mpegts:指定输特别式为MPEG Transsport Stream(M2TS是一种变体)
output.m2ts :指定文件名
#更改视频编码格式 在下令指定编码 如h256编码器
ffmpeg -i input.mp4 -c:v libx256 -crf 28 -c:a copy -f mpegts ouput.m2ts
#音频处置处罚 如音频编码AAC
ffmpeg -i input.mp4 -c:v copy -c:a aac -b:a 128k -f mpegts output.m2ts
-----------------------------------------
#m2ts转mp4
#保持原始质量-直接复制流
ffmpeg -i input.m2ts -c copy -f mp4 output.mp4
#调解编码优化质量-H.256编码,CRF=18,AAC音频
ffmpeg -i input.m2ts -c:v libx256 -crf 18 -c:a aac -b:a 192k output.mp4 
#m2ts转m3u8 3000k:720p 6000:1080p
ffmpeg -i input.m2ts -c:v libx264 -b:v 3000k -c:a aac -b:a 128k -f hls output.m3u8
---------------------------------
#m2ts转MP4兼容DASH
得当批量将m2ts重新封装为fmp4
ffmpeg -i input.m2ts -c:v libx264 -c:a aac -f mp4 -movflags frag_keyframe+empty_moov output.mp4
-movflags frag_keyframe+empty_empty_moov :确保输出fMP4格式,支持动态码率切换
#生多个码率 3000k:720p 6000k:1080
ffmpeg -i input.m2ts -c:v libx264 -b:v 3000k -c:a aac -f mp4 -movflags frag_keyframe+empty_moov output_720p.mp4
-------------------------
利用ffmpeg天生hls的m3u8和ts片断
ffmpeg -i input.m2ts -c:v libx264 -b:v 3000k -maxrate 3000k -bufsize 6000k -c:a aac -b:a 128k -f hls -hls_time 4 -hls_playlist_type vod -hls_segment_filename "segment_%04d.ts" playlist.m3u8
-i input.m2ts :指定输入文件为m2ts
playlist.m3u8 :输出m3u8播放列表文件
#视频编码参数
-c:v libx264 :利用H.264编码器(兼容性最佳,广泛支持hls)
-b:v 3000k:目标码率设为3000kbps(得当1080高清视频)
-maxrate 3000k :最大瞬时码率为3000kbps(克制网络颠簸导致卡顿)
-bufsize 6000k :缓冲区巨细为6000kbps(平衡码率颠簸与流通度)
#音频编码
-c:a aac :利用acc音频编码(hls标准音频格式)
-b:a 128k :音频码率设为128kbps(标准音质,文件体积适中)
#hls格式专用参数
-f hls :陵暴输特别式为HLS
-hls_time :每个ts段长时长4秒
-hls_playlist_type vod :天生点播放型m3u8
-hls_segment_filename : 界说ts定名规则
-hls_base_url :底子路径
-hls_list_size 0 :生存全部门段(0不限定,默认生存5段)
-hls_flags delete_segments :自动清算旧分段ts共同-hls_list_size n(不为0)
-hls_segment_type fmp4 :淘汰缓冲时间
-hls_playlist_type event:天生静态播放列表(得当点播,默认动态列表)

###启用-hls_list_size 0 :生存全部门段
# 转m3u8利用fMP4格式切片
# ffmpeg -i input.mp4 -f hls -hls_segment_type fmp4 -hls_list_size 0 -hls_segment_filename "segment_%03d.m4s" output.m3u8
-hls_segment_type fmp4 :利用 fMP4(Fragmented MP4)分段格式(保举),尚有:.mp4,.fmp4等扩展名
-hls_flags delete_segments :自动清算旧分段
-hls_segment_type fmp4 :淘汰缓冲时间
上风:支持自顺应码率(A/B/R)、低延长播放、跨平台兼容(iOS/Android/PC)
劣势:传统 MPEG-TS 分段在 iOS 装备上兼容性差,fMP4 是 HLS 的保举格式
###转DASH协议
#技能对比
##1、延长表现
HLS:原生延长较高(10-30秒),但LL-HLS优化后可降至0.5秒内,得当低延长直播场景
DASH:原生延长2-10秒,LL-DASH同样优化至0.5秒,但实现机制差别
##2、编码与兼容性
HLS:支持H.264/H.265/AAC,但不兼容VP9/AV1,装备依靠性强
DASH:支持H.264/H.265/VP9/AV1及Opus音频,编码选择更机动
##3、装备支持
HLS:苹果主导,部门技能未公开,内容掩护依靠FairPlay DRM
DASH:必要Shaka Player/Dash.js,iOS必要第三方库
##4、应用场景
HLS:
1、移动直播(如抖音、快手的LL-HLS)
2、苹果生态服务(Apple TV+、Apple Music)
3、辅导范畴课程内容掩护
DASH:
1、超高盘货播(如Netflix的4K HDR流)
2、多语言流媒体(如BBC iPlayer的字幕切换)
##总结
HLS:
1、若你的服务紧张面向苹果装备或必要低延长直播
2、如果你的用户紧张用苹果装备,大概必要超低延长直播(比如辅导直播、游戏直播)
DASH:
1、若寻求跨平台兼容性或超高盘货播体验
2、如果你寻求跨平台兼容性,大概必要支持超高盘货播(比如Netflix级别的4K内容)
*两者都支持动态码率调解,但DASH的编码机动性和DRM支持更胜一筹
*DRM支持‌:DASH支持多DRM方案(Widevine/PlayReady),HLS依靠FairPlay。

一、ffmpeg转DASH协议
根据OBS Studio的实现路径和DASH协议特性,ffmpeg转DASH协议时应利用以下参数:
-f dash :指定输特别式为dash;是ffmpeg内置的DASH封装器,用于天生DASH流所需的MPD索引文件和fMP4切片
-use_template 1:启用模版模式天生动态MPD文件
-use_timeline 1:启用时间线模式,支持低延长传输
-seg_duration 10:设置每个切片的连续时间为10秒
-windows_size 6:生存近来6个切片
-extra_windows_size 2:额外生存两个切片
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f dash -use_template 1 -use_timeline 1 -use_duration 10 -window_size 6 -extra_windows_size 2 output.mpd
二 、FFmpeg天生LL-HLS(低延长HLS)流,紧张通过以下参数实现:
ffmpeg -i eye.mp4 -c:v libx264 -g 1 -keyint_min 1 -c:a aac -hls_time 1.5 -hls_playlist_type event -hls_flags delete_segments+independent_segments+second_level_segment_index -strftime 1 -hls_segment_filename "segment_%Y%m%d_%H%M%S_%%03d.ts" -hls_list_size 0 output.m3u8
-c:a aac   # 利用AAC音频编码
1、低延长模式
-hls_flags delete_segments #自动删除旧分段
-hls_flags independent_segments :独立分段标志,与-c:v libx264 -g 1 -keyint_min 1确保关键帧隔断为1秒,若分段未以关键帧开头,播放器大概无法独立解码,导致播放失败
-hls_flags second_level_segment_index:启用分块传输(Partial Segment),支持LL-HLS。
-hls_time 1.5:分段时长1.5秒,团结分块传输可实现0.5秒延长。
2、关键帧优化
-c:v libx264 -g 1 -keyint_min 1:1秒GOP隔断,快速启动播放。
‌3、实时流设置‌
-hls_playlist_type event:变乱流模式,实时更新播放列表
4、分段机制
-hls_list_size 0  # 生存全部门段
-hls_flags delete_segments  # 自动删除旧分段
-second_level_segment_index    启用分块传输(LL-HLS)
播放器支持
‌移动端‌:ExoPlayer(Android)和AliPlayer(iOS)原生支持LL-HLS。
‌Web端‌:hls.js库需启用lowLatencyMode设置。
注意事项
‌网络颠簸‌:分块传输需播放器支持,部门装备大概不兼容LL-HLS。
‌服务器优化‌:实时分段天生需低延长CDN支持。
‌总结‌:FFmpeg通太过块传输和短分段实现LL-HLS,需播放器共同利用以到达0.5秒延长效果
------------------------------------------------------------------
ffmpeg -i eye.mp4 -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_list_size 6 -hls_flags delete_segments -hls_segment_type fmp4 -hls_segment_filename "segment_%03d.m4s" -hls_playlist_type event output.m3u8
利用libx264编码视频流,aac编码音频流
-hls_time 10:每个切片10秒
-hls_list_size 6:生存近来6个切片
-hls_flags delete_segments:自动删除逾期切片
-hls_segment_type fmp4:陵暴利用fMP4格式切片
-hls_playlist_type event:天生静态播放列表(得当点播,默认动态列表)
输出m3u8索引文件和m4s切片文件
-strftime 1 \  # 启用时间戳格式化
关键特点:
天生fMP4格式切片,兼容当代欣赏器和播放器
自动管理切片文件生命周期,克制磁盘空间浪费
天生静态播放列表,得当点播场景
----------------------------------------------------------
ffmpeg -i eye.mp4 -c:v libx264 -g 1 -keyint_min 1 -c:a aac -hls_time 1.5 -hls_playlist_type event -hls_flags delete_segments+independent_segments+second_level_segment_index -strftime 1 -hls_segment_filename "segment_%Y%m%d_%H%M%S_%%03d.m4s" -hls_list_size 0 -preset ultrafast -tune zerolatency output.m3u8
-preset ultrafast 和 -tune zerolatency
1. ‌-preset ultrafast‌
‌作用‌:设置编码速率与质量的平衡点。ultrafast 是最快速预设,捐躯编码质量以调换极低延长。
‌技能细节‌:
‌编码复杂度‌:禁用宏块树、分片线程等高级优化,明显低沉编码复杂度。
‌性能影响‌:CPU占用率最高,但编码速率最快。
‌实用场景‌:实时直播、监控监控录像等对延长要求极高的场景。
2. ‌-tune zerolatency‌
‌作用‌:陵暴编码器不缓存帧,确保输入一帧数据后立即输出编码效果。
‌技能细节‌:
‌帧处置处罚模式‌:禁用帧缓存机制,实现“进一帧出一帧”的实时处置处罚模式。
‌延长优化‌:克制帧间猜测引入额外延长,确保最低延长。
‌实用场景‌:实时视频流、低延长直播等对延长敏感的应用。
综合效果
‌低延长特性‌:
两者团结可将延长降至最低,实用于实时直播场景。
‌性能权衡‌:
固然编码质量大概降落(如块效应),但延长从秒级降至毫秒级。
‌利用发起‌:
若需极致低延长(如0.5秒),发起同时启用 ultrafast 和 zerolatency
 
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表