外网搭建,为什么seo工资不高,更多标签的适用场景,dw个人简历网页制作模板一、概述
zlmediakit pro版本支持基于ffmpeg的转码能力#xff0c;在开源版本强大功能的基础上#xff0c;新增支持如下能力#xff1a;
1、音视频间任意转码(包括h265/h264/opus/g711/aac等)。2、基于配置文件的转码#xff0c;支持设置比特率#xff0c;codec类型等参…一、概述
zlmediakit pro版本支持基于ffmpeg的转码能力在开源版本强大功能的基础上新增支持如下能力
1、音视频间任意转码(包括h265/h264/opus/g711/aac等)。2、基于配置文件的转码支持设置比特率codec类型等参数。3、基于http api的动态增减转码支持设置比特率分辨率倍数codec类型、滤镜等参数。4、支持硬件、软件自适应转码。5、支持按需转码有人观看才转码。6、支持负载过高时转码主动降低帧率且不花屏。7、支持滤镜支持添加osd文本以及logo角标等能力。 二、转码实现原理 视频转码原理 音频转码原理
三、使用方法
目前zlmediakit pro转码能力支持两种使用方式第一种是基于配置文件方式在设置好配置文件后所有流都支持转码为目标编码格式直播流第二种模式基于http api方式此方式更灵活功能强大可以指定更多转码相关参数。
3.1 基于配置文件的转码
[transcode]
#转码stream_id后缀,为空时关闭转码
suffix
#默认转码视频目标codec支持H264/H265/JPEG/copy
vcodecH264
#默认转码音频目标codec支持mpeg4-generic/PCMA/PCMU/opus/copy
acodecmpeg4-generic
#是否开启ffmpeg日志
enable_ffmpeg_log0
# h264解码器白名单
decoder_h264h264_cuvid,h264_qsv,h264_videotoolbox,h264_nvmpi,h264_bm,libopenh264
# h265解码器白名单
decoder_h265hevc_cuvid,hevc_qsv,hevc_videotoolbox,hevc_nvmpi,hevc_bm
# h264编码器白名单
encoder_h264h264_nvenc,h264_qsv,h264_videotoolbox,h264_nvmpi,h264_bm,libx264,libopenh264
# h265编码器白名单
encoder_h265hevc_nvenc,hevc_qsv,hevc_videotoolbox,hevc_nvmpi,hevc_bm,libx265在上述配置文件中如果用户配置好suffix那么zlmediakit将统一把所有直播流转码为目标编码格式用户通过访问新的流地址即可确保为预期编码格式视频。
例如源视频地址为rtmp://127.0.0.1/live/test, 那么转码后地址即为rtmp://127.0.0.1/live/test_H264。
当配置文件修改为suffixnull时转码后流会直接替换原始流(不会有_suffix后缀)替换模式下建议rtsp.directProxy/rtmp.directProxy都设置为0。
如果源视频编码格式与目标编码格式一致那么zlmediakit为了确保性能最优将直接拷贝流数据(不会编码)。
基于配置文件方式的转码使用最简单可以使用于安防行业H265视频无法webrtc/mse播放的场景。
3.2 基于http api的转码
zlmediakit同时还提供基于http api的转码方式这种方式支持的功能更强大使用更灵活同时支持一个流转码成多个目标流(比如说不同分辨率的场景)。 请求地址/index/api/setupTranscode 请求参数 参数参数类型释意是否必选secretstringapi操作密钥(配置文件配置)Yvhoststring流的虚拟主机例如__defaultVhost__Yappstring流的应用名例如liveYstreamstring流的id名例如testYnamestring转码名(后缀)功能类似配置文件transcode.suffixYaddint1添加转码; 0: 删除转码Yvideo_codecstring视频转码的codec,支持H264/H265/JPEG/copyYvideo_bitrateint转码后视频的比特率Yvideo_scalefloat转码视频宽高拉伸比例取值范围0.1~10Yaudio_codecstring音频转码codec支持mpeg4-generic/PCMA/PCMU/opus/copyYaudio_bitrateint转码后音频比特率Yaudio_samplerateint转码后音频采样率率Yfilterstringavfilter滤镜参数,用法与ffmpeg -vf 参数一致Yforcebool是否强制转码强制转码时不管目标编码是否一致默认否Ndecoder_threadsint解码线程数默认2个最大16个音频强制为1个Nencoder_threadsint编码线程数默认4个最大16个音频强制为1个Nhw_decoderbool是否启用硬件解码器默认启用Nhw_encoderbool是否启用硬件编码器默认启用Ndecoder_liststring视频ffmpeg解码器列表例如: h264_cuvid,h264_qsvNencoder_liststring视频ffmpeg编码器列表例如: hevc_nvenc,hevc_qsvNgpu_indexint硬件编解码gpu索引号默认0Nenable_hlsbool转码后是否转换成hls-mpegts协议Nenable_hls_fmp4bool转码后是否转换成hls-fmp4协议Nenable_mp4bool转码后是否允许mp4录制Nenable_rtspbool转码后是否转rtsp协议Nenable_rtmpbool转码后是否转rtmp/flv协议Nenable_tsbool转码后是否转http-ts/ws-ts协议Nenable_fmp4bool转码后是否转http-fmp4/ws-fmp4协议Nhls_demandbool转码后该协议是否有人观看才生成Nrtsp_demandbool转码后该协议是否有人观看才生成Nrtmp_demandbool转码后该协议是否有人观看才生成Nts_demandbool转码后该协议是否有人观看才生成Nfmp4_demandbool转码后该协议是否有人观看才生成Nenable_audiobool转码后转协议时是否开启音频Nadd_mute_audiobool转码后无音频是否添加静音aac音频Nmp4_save_pathstring转码后mp4录制文件保存根目录置空使用默认Nmp4_max_secondint转码后mp4录制切片大小单位秒Nmp4_as_playerbool转码后MP4录制是否当作观看者参与播放人数计数Nhls_save_pathstring转码后hls文件保存保存根目录置空使用默认Nmodify_stampint转码后该流是否开启时间戳覆盖(0:绝对时间戳/1:系统时间戳/2:相对时间戳)Nauto_closebool转码后无人观看是否自动关闭流(不触发无人观看hook)N 响应 {code : 0,msg : success
}3.3 使用http api获取转码信息
请求接口/index/api/getMediaInfo请求回复请查看transcode字段
{aliveSecond: 88,app: live,bytesSpeed: 330246,code: 0,createStamp: 1691902256,isRecordingHLS: true,isRecordingMP4: false,originSock: {identifier: 2-51,local_ip: 192.168.31.101,local_port: 8000,peer_ip: 192.168.31.101,peer_port: 61801},originType: 8,originTypeStr: rtc_push,originUrl: rtc://127.0.0.1/live/test?applivestreamtesttypepushsession1-50,readerCount: 0,schema: rtsp,stream: test,totalReaderCount: 0,tracks: [{codec_id: 0,codec_id_name: H264,codec_type: 0,fps: 30.0,frames: 2648,gop_interval_ms: 2012,gop_size: 60,height: 556,key_frames: 51,loss: 0.0,ready: true,width: 990},{channels: 1,codec_id: 4,codec_id_name: PCMU,codec_type: 1,frames: 4434,loss: 0.0,ready: true,sample_bit: 16,sample_rate: 8000}],transcode: [{name: codec, // 转码名称setting: { // 转码配置信息adecoder_threads: 1, // 音频解码器线程数aencoder_threads: 1, // 音频编码器线程数hw_decoder: true, // 启动硬件解码器hw_encoder: true, // 启动硬件编码器target_acodec: mpeg4-generic,// 目标音频编码格式target_vcodec: H265, // 目标视频编码格式vdecoder_threads: 4, // 视频解码器线程数vencoder_threads: 8, // 视频编码器线程数force: false, // 是否强制转码filter: , // 滤镜参数decoder_list : [h264_cuvid, h264_qsv], // 解码器列表encoder_list : [hevc_nvenc, hevc_qsv] // 编码器列表},adec: pcm_mulaw, // 音频解码器名称aenc: aac, // 音频编码器名称aenc_ctx: { // 音频AVCodecContext信息bit_rate: 32000, // 比特率channels: 1, // 通道数frame_number: 4055, // 已编码帧数frame_size: 1024, // 每帧采样数sample_fmt: fltp, // 音频编码输入格式sample_rate: 48000 // 编码器采样率},vdec: h264, // 视频解码器名称venc: hevc_videotoolbox, // 视频编码器名称venc_ctx: { // 视频AVCodecContext信息bit_rate: 1000000, // 比特率fps: 20, // 帧率frame_number: 2595, // 已编码帧数gop: 60, // gop大小has_b_frames: 0, // 是否编码b帧height: 556, // 视频高度pix_fmt: nv12, // 编码器输入图片格式width: 990 // 视频宽度}}],vhost: __defaultVhost__
}技术交流QQ群 1033175645