我正在尝试在 VLC 中传输 dvb 流,但将音频转码为 aac 格式,但它找不到编码器。我该如何安装它?
VLC media player 2.1.4 Rincewind (revision 2.1.4-0-g2a072be)
[0x2535b58] main interface error: no suitable interface module
[0x2470118] main libvlc error: interface "globalhotkeys,none" initialization failed
[0x2535b58] dbus interface error: Failed to connect to the D-Bus session daemon:
Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[0x2535b58] main interface error: no suitable interface module
[0x2470118] main libvlc error: interface "dbus,none" initialization failed
[0x2470118] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[0x2535b58] qt4 interface error: Could not connect to X server
[0x2535b58] skins2 interface error: cannot initialize OSFactory
[0x2535b58] [cli] lua interface: Listening on host "*console".
VLC media player 2.1.4 Rincewind
Command Line Interface initialized. Type `help' for help.
> [0x7f00c800bcf8] dtv access error: 514000 Hz carrier frequency is too low.
[0x7f00c800bcf8] dtv access: Assuming 514000000 Hz frequency instead.
[0x7f00c800bcf8] dtv access error: cannot enumerate frontend systems: Invalid argument
[0x7f00cc001138] avcodec encoder error: cannot open encoder
[0x7f00cc001138] main encoder error: Streaming / Transcoding failed
[0x7f00cc001138] main encoder error: VLC could not open the encoder.
[0x7f00c80097c8] stream_out_transcode stream out error: cannot find audio encoder (module:any fourcc:mp4a). Take a look few lines earlier to see possible reason.
[0x7f00c80097c8] stream_out_transcode stream out error: cannot create audio chain
[0x7f00c80a5438] main decoder error: cannot create packetizer output (mpga)
[0x7f00c80105b8] ts demux error: libdvbpsi (misc PSI): Bad CRC_32 table 0x73 !!!
编辑以添加我正在运行的命令
cvlc --ttl 12 --ts-es-id-pid --program=8261 dvb:// --dvb-adapter=3 \
--dvb-frequency=514000 --dvb-bandwidth=8 --sout #transcode{width=720,vcodec=h264,
venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1},
acodec=mp4a}:std{access=livehttp{seglen=10,delsegs=true,
numsegs=10,index=/web/main/streaming/mystream.m3u8,
index-url=http://192.168.1.2/streaming/mystream-########.ts},
mux=ts{use-key-frames},dst=/web/main/streaming/mystream-########.ts}'
该命令用于通过 HLS 传输 DVB 适配器,并将其转码为客户端接受的格式。该命令有效,但由于缺少编码器,将生成没有音频的 ts 文件。如果我将编码器更改为“mp3”,我会得到一个带有 MP3 音频的文件,但显然不是我想要的。
答案1
您可能确实缺少一些编解码器,因为它们被分离到 ubuntu 中的一些额外的包中。
这两个软件包存在两个冲突的变体,其中一个的-extra
名称与另一个相冲突。
此外,有报告称安装软件包可能会扰乱软件包管理;至少我不得不手动解决几次冲突。
您需要和libavcodec54
或libavutil52
和libavcodec-extra
:(我想我自己没有用过这些包,但是我很久以前就安装了它们,最后得到的是名称中没有的版本libavutil-extra-52
。我记得这很棘手,所以不要指望安装它们会顺利进行)
-extra
sudo apt-get install libavcodec54 libavutil52
如果这没有帮助,请卸载它并尝试另一个。
sudo apt-get install libavcodec-extra libavutil-extra-52
(在您询问之前:我依稀记得,包装和依赖混乱的原因不仅是由于许可证问题,而且还具有项目间政治等重要因素。)
答案2
如果症状看起来与问题类似,但是编解码器的细节似乎不同,则可能是配置混乱vlc
- 这种情况似乎有时会发生。
您可以执行以下操作:
对我来说,这看起来像是有关编码器的错误只是由其他错误引起的——为什么您认为问题出在编码器上?
这可能是由于vlc
配置损坏造成的。
首次测试,尝试
vlc --ignore-config
您可以移开或者删除配置目录:
mv -i ~/.config/vlc ~/dot-config-vlc-old
或者直接重置配置:
vlc --reset-config
答案3
好的,最后我删除了所有 libavcodec* 和 libavutil* 包(该服务器已升级多次,因此似乎有一些旧的包)。
然后我使用本指南来构建 libfdk-aac/ffmpeg/vlc http://ubuntuforums.org/showthread.php?t=2141949
但是我的命令在 vlc master 或 2.2 分支上不起作用 - 没有写入 .ts 文件。因此我使用了 vlc git 中的 2.1 分支。