19.10 视频播放器在尝试查找 Flash 视频文件时崩溃

19.10 视频播放器在尝试查找 Flash 视频文件时崩溃

我正在尝试在 Ubuntu 19.10 中通过 CLI 播放视频

我运行以下命令:

con@e:/mnt/Windows/Users/...$ vlc video.flv
VLC media player 3.0.8 Vetinari (revision 3.0.8-0-gf350b6b5a7)
[000056347c5755b0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
libva info: VA-API version 1.5.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
[00007f7e20003430] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error
libva info: VA-API version 1.5.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
[00007f7e20003430] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
libva info: VA-API version 1.5.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
[00007f7e20003430] glconv_vaapi_drm gl error: vaInitialize: unknown libva error
Failed to open VDPAU backend libvdpau_va_gl.so: cannot open shared object file: No such file or directory
[flv @ 0x7f7e34c160c0] Unable to seek to the next packet
QObject::~QObject: Timers cannot be stopped from another thread

视频可以在 Totem 和 VLC 中播放,但当我尝试切换到另一个时间时,整个系统崩溃了。Totem 不会打印错误报告,但 VLC 会,所以我将其粘贴在上面。

我在这里看到过类似的帖子,例如https://ubuntuforums.org/showthread.php?t=2387235 但我没有看到解决方案https://bugs.launchpad.net/ubuntu/+source/intel-vaapi-driver/+bug/1756380

我也见过为什么 LIBVA 在尝试初始化 Intel GM965 驱动程序时返回错误?但我不明白那里有什么可以帮助我。

列出libva2包裹,我看到:

libva2/eoan,now 2.5.0-1 amd64 [installed]
libva2/eoan 2.5.0-1 i386

此错误仅发生在一些视频,而不是其他视频,而且我也不知道具体是哪些。

我也见过尝试播放视频时 VLC 崩溃

这表明我应该这么做:

con@e:/mnt/Windows/Users/...$ vainfo
libva info: VA-API version 1.5.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

不幸的是,一年多过去了,该页面仍然没有得到解决。

我也看过https://forum.videolan.org/viewtopic.php?f=13&t=148280 但解决方案在那里:vlc -V x11 video.mp4仍然返回相同的错误。

VLC 从 Windows 打开同一个文件时也遇到同样的问题。

输出自mediainfo

con@e:/mnt/Windows/Users/...$ file.flv 
General
Complete name                            : file.flv
Format                                   : Flash Video
File size                                : 167 MiB
Tagged date                              : UTC 2009-05-30 03:59:09
Tagging application                      : MEGA

Video
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : [email protected]
Format settings                          : CABAC / 5 Ref Frames
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 5 frames
Codec ID                                 : 7
Width                                    : 416 pixels
Height                                   : 224 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 23.976 (24000/1001) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive

Audio

答案1

当文件可能已损坏(就像您的文件的情况一样)时,有几个不错的选择:

  1. 只需更换容器。在你的情况下,你在 flv 容器中使用 AVC 或 H.264,并且没有声音或很可能是 AAC 声音。这两种编解码器在 mp4 容器中运行良好。因此,以下方法最适合重新混合你的文件:

    ffmpeg -i file.flv -c copy test.mp4
    

    -c:copy如果视频或音频编解码器本身损坏,这将毫无用处。同样需要注意的是,第一的所有流...

  2. 重新编码文件+新容器。如果重新混合不成功重新编码是另一种选择,但需要注意的是,质量会明显下降。下面这样的方法可以通过重新编码来实现这一点视频流

    ffmpeg -i file.flv -c:v libx264 -preset slow -crf 22 -c:a copy test.mp4
    

    如果音频流(如果存在)损坏,您也可以使用重新编码-c:a aac -b:a 128k

希望这能让您的旧文件复活:)

相关内容