You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用libvlc_media_add_option录制文件无音频,是Bug还是操作有误?

问题分析与解决方案

这不是libvlc的已知Bug,是你的参数配置和编码兼容性问题,具体修正如下:

1. 修复Sout参数语法错误

你的sout选项末尾缺少闭合的},这会导致libvlc解析输出配置时出错,直接影响音频流的正常处理。

2. 处理音频编码兼容性问题

你的RTSP流音频采用G726编码,而MP4容器对G726的支持性极差,需要通过转码将音频转为MP4兼容的编码(比如AAC),同时确保捕获并处理视频、音频双流。

修改后的代码示例

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    libvlc_instance_t* instance = libvlc_new(0, NULL);
    libvlc_media_t* VlcMedia;

    VlcMedia = libvlc_media_new_location(instance,"rtsp://yourid:yourpassword@192.168.0.253:554/nphMpeg4/g726-640x480");
    media_player = libvlc_media_player_new_from_media(VlcMedia);
    // 修正语法错误,添加转码步骤:音频转AAC,视频保留原编码,同时输出到面板显示和本地文件
    libvlc_media_add_option(VlcMedia,":sout=#transcode{vcodec=h264,acodec=aac,ab=128,channels=2,samplerate=44100}:duplicate{dst=display,dst=std{access=file,mux=mp4,dst=test.mp4}}");
    libvlc_media_release(VlcMedia);
    libvlc_media_player_set_hwnd(media_player,Panel2->Handle);
    libvlc_media_player_play(media_player);
}

额外排查点

  • 先确认原RTSP流本身包含音频:用VLC桌面播放器打开该RTSP地址,检查是否有声音。如果原流就没有音频,录制文件自然也不会有音频。
  • 若转码后仍有问题,可以尝试调整转码参数,比如将acodec改为mp3,对应容器mux保持mp4(MP4支持MP3音频)或改为avi。

内容的提问来源于stack exchange,提问作者nao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:18:24