![Ubuntu 20.04 中的 MP4 和其他格式的视频问题](https://linux22.com/image/1179177/Ubuntu%2020.04%20%E4%B8%AD%E7%9A%84%20MP4%20%E5%92%8C%E5%85%B6%E4%BB%96%E6%A0%BC%E5%BC%8F%E7%9A%84%E8%A7%86%E9%A2%91%E9%97%AE%E9%A2%98.png)
我最近遇到了一个以前没有出现过的问题,非常希望得到帮助。遗憾的是,我无法将其追溯到我所做的特定更改,而且我进行了广泛的搜索,但并未找到任何解决方案。
问题是,当我尝试在 YouTube 等网站上播放视频时,但不限于 YouTube。视频加载,但无法播放。我可以跳过视频并查看帧等,但我无法播放。如果视频前有广告,它也不会播放。
如果我在默认的“视频”应用程序中下载并打开 mp4 视频,它也不会以相同的方式播放,例如加载第一帧,我可以跳过它但不能直接播放它。
但是,如果我在 VLC 中加载相同的视频,它可以正常工作。
我进行了大量搜索,并尝试了所有推荐的方法,但仍无法解决问题。
我不确定是否有诊断工具可以检查编解码器等的问题。很高兴能提供任何有用的工具输出,但我现在有点抓狂了。
我正在运行 Ubuntu 20.04.1 LTS。
使用我正在测试的示例 mp4 文件:
在“视频”应用程序 (totem) 中,我能看到的唯一属性是:“编解码器:H.264 (主配置文件)”。当我从终端启动时,我收到以下警告(视频第一帧仍已加载,但未播放):
Gtk-WARNING **:11:40:23.965:绘制具有负尺寸的小工具。您是否忘记分配尺寸?(节点滑块所有者 GtkScale)
在 VLC 中我可以看到它显示“编解码器:H264-MEPG-4 AVC (第 10 部分) (avc1)
我不确定这对任何人来说是否意味着什么但它并没有帮助我找到问题!
在此先感谢任何可能提供帮助的人
编辑:我发现这不仅限于 mp4 文件,而且在我尝试过的其他格式中也发生过这种情况。
答案1
由于你正在使用Ubuntu 20.04,您应该安装该ubuntu-restricted-extras
软件包。该软件包包含在系统上播放媒体所需的所有编解码器。
它还包含Microsoft 字体和闪光包(我认为这个已经被删除了)但最好不要包含这两个,除非你真的需要这些字体。
安装该包的命令是:sudo apt install ubuntu-restricted-extras
。
答案2
我将回答我自己的问题,因为我已经找到了解决方案,并且我认为它将来可能会对其他人有用。
我的问题实际上与音频有关,而与视频无关。
我正在使用 Jack,但服务器没有启动。看来 gstreamer 无法正常启动,但在以 sudo 身份运行时可以启动。这就是它与 sudo 配合使用的原因。对于其他用户帐户,他们没有使用 Jack,因此没有 sudo 也没有出现问题。
我确信这不太可能成为未来任何人遇到的问题,但是对于未来遇到类似问题并最终查看此线程的任何人来说,可能值得分享的是,我通过查看 gstreamer 日志发现了这个问题,在我的例子中,将正常日志与使用 sudo 运行时产生的日志进行比较。
通过设置环境变量来启用 Gstreamer 调试
导出 GST_DEBUG=5
您可以在此处查看 gstreamer 文档中的不同日志级别:https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html
我建议首先从较低的日志级别开始,因为这样读取起来就比较简单,因为我预计如果您遇到的是重大错误。
然后,您可以尝试从命令行播放视频,并且如果愿意的话,可以将日志传送到文件:
gst-launch-1.0 playbin uri=file:///path_to_my_video.mp4 &> gs.log
如果以 sudo 身份运行时确实看到差异,则可以以相同的方式生成这些日志,但需要使用 -E 选项来传递环境变量:
sudo -E gst-launch-1.0 playbin uri=file:///path_to_my_video.mp4 &> gs_sudo.log
如果您需要比较两个不同的日志,就像我一样,我使用了一个名为“meld”的工具,并使用 sed 来修剪前 81 个字符,从而阻止所有时间戳被标记为更改。
正如我上面所说的,即使其他人没有遇到与我完全相同的问题,希望上述内容能够有助于诊断可能导致人们关注此主题的其他问题。
感谢那些试图提供帮助的人。