dash3000怎么看Linux命令&ffmpeg瀑布流测试

新闻资讯2026-04-20 23:09:51

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

--------------------------------------------------

-allowed_extensions ALL 参数来允许所有扩展名

ffmpeg -allowed_extensions ALL

ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -allowed_extensions ALL

ffmpeg -protocol_whitelist file,http,https,tcp,tls,crypto -allowed_extensions ALL -f hls -i video.vdat -c copy video.mp4

ffmpeg -allowed_extensions ALL -i input.m3u8 -c copy output.mp4
这个命令采用流复制方式,直接将 m3u8 中的音视频流复制到 MP4 容器中,无需重新编码,转换速度快且保持原始质量。
如果需要重新编码以适配特定需求,可以使用:
ffmpeg -i input.m3u8 -c:v libx264 -c:a aac output.mp4
此命令会将视频编码为 H.264,音频编码为 AAC 格式。
对于硬件加速(如 NVIDIA CUDA),可以使用:
ffmpeg -hwaccel cuda -i input.m3u8 -c:v h264_nvenc output.mp4

--------------------------------------------------
过滤, 管道与重定向
过滤
过滤出 /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 copy:直接复制视频流,不进行重新编码
-c:a copy:直接复制音频流,不进行重新编码

-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 :保留所有分段

#intelGPU:-hwaccel qsv -extra_hw_frames 16 | -c:v h264_qsv

ffmpeg -hwaccel qsv -extra_hw_frames 16 -i eye.mp4 -c:v h264_qsv -f hls -hls_segment_type fmp4 -hls_list_size 0 -hls_segment_filename "eye_%03d.m4s" eyeoutput.m3u8

ffmpeg -i eye.mp4 -f hls -hls_segment_type fmp4 -hls_list_size 0 -hls_segment_filename "eye_%03d.m4s" eyeoutput.m3u8

# 转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