在 Ubuntu 14.04 上使用 vlc 转码为 aac

在 Ubuntu 14.04 上使用 vlc 转码为 aac

我正在尝试在 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名称与另一个相冲突。

此外,有报告称安装软件包可能会扰乱软件包管理;至少我不得不手动解决几次冲突。

您需要和libavcodec54libavutil52libavcodec-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 分支。

相关内容