VLC.DotNet保存流媒体时配置mediaOption修改采样率及格式咨询
VLC.DotNet 流媒体转码保存配置解答
VLC.DotNet 是原生 libVLC 库的 .NET 封装,所有传入的 mediaOption 参数 1:1 对应 libVLC 的命令行配置项,你提到的修改音频采样率、自定义输出格式两个需求均原生支持。
你当前使用的配置是直接将源流数据原样写入文件,没有经过转码流程,因此无法修改编码参数、调整输出格式,需要在流输出链中加入转码模块实现相关能力。
核心能力说明
1. 修改音频采样率
在转码配置中通过 samplerate 参数指定目标采样率即可,单位为 Hz,常用值为 44100(CD音质)、48000(视频常用采样率),搭配转码模块的其他音频参数还可以自定义声道数、音频码率、编码格式:
acodec:指定目标音频编码channels:指定输出声道数ab:指定音频码率,单位为 bpsvcodec=none:如果仅需要处理音频流,可以加这个参数关闭视频转码逻辑,降低资源占用
2. 自定义输出格式(含PCM输出)
通过指定 acodec 和输出文件后缀即可自定义输出格式,PCM 输出支持两种常用模式:
- 裸PCM原始流:
acodec设为s16l(16位小端PCM,是行业通用的无压缩PCM格式),输出文件后缀用.pcm。注意裸PCM没有文件头信息,后续播放/处理时需要自行传入采样率、声道数、位深参数才能正常解析 - 带WAV头的PCM文件:
acodec同样设为s16l,输出文件后缀改为.wav,libVLC 会自动添加标准WAV文件头,可直接被绝大多数播放器识别播放
其他格式也可以通过相同逻辑配置,比如输出MP3就把acodec设为mp3、输出AAC就设为mp4a,按需搭配码率、采样率参数即可。
修改后的代码示例
以输出44.1kHz、双声道、16位裸PCM文件为例,只需要替换原代码中的mediaOptions配置即可:
// 输出裸PCM用.pcm后缀,输出WAV用.wav后缀 var destination = Path.Combine(currentDirectory, "record.pcm"); using (var mediaPlayer = new Vlc.DotNet.Core.VlcMediaPlayer(libDirectory)) { var mediaOptions = new[] { // 流链路:先配置转码参数,再写入文件 $":sout=#transcode{{vcodec=none,acodec=s16l,samplerate=44100,channels=2}}:file{{dst={destination}}}", ":sout-keep" }; mediaPlayer.SetMedia(new Uri("http://hls1.addictradio.net/addictrock_aac_hls/playlist.m3u8"), mediaOptions); mediaPlayer.Play(); Console.WriteLine($"Recording in {destination}"); Console.WriteLine("Press any key to exit"); Console.ReadKey(); }
参数查询方式
不需要专门查找VLC.DotNet的专属文档,所有可配置参数和原生libVLC完全一致,你可以在本地安装VLC播放器后,在命令行执行vlc -H输出全量参数说明,搜索transcode、sout关键词即可找到所有流输出、转码相关的可配置项及取值说明。
内容的提问来源于stack exchange,提问作者Nik Dell
相关产品推荐
相关产品推荐

