当前位置: 首页 > 知识库问答 >
问题:

Nvidia Nvenc视频从mxf转换为mp4,内部多个流出现错误

江煜
2023-03-14

我正在尝试将具有多个视频流和一个音频流的视频从mxf格式转换为mp4格式,但出现了一个错误。我如何解决这个问题?非常感谢。

E:\video>ffmpeg -loglevel error -y -i E:\video\19_12_2018\Files\MEDIA\media_data.mxf -map 0 -c:v h264_nvenc -acodec copy nvidia_output.mp4

[h264_nvenc @ 0000020b30c86e80] OpenEncodeSessionEx failed: out of memory (10)
[h264_nvenc @ 0000020b30c86e80] No NVENC capable devices found
Error initializing output stream 0:2 -- Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height

[h264_nvenc @ 00000204c1e37040] OpenEncodeSessionEx failed: out of memory (10)
[h264_nvenc @ 00000204c1e37040] No NVENC capable devices found
[h264_nvenc @ 00000204c1e37040] Nvenc unloaded
[jpeg2000 @ 00000204c2d90080] End mismatch 1
    Last message repeated 1 times
Error initializing output stream 0:2 -- Error while opening encoder for output stream #0:2 - maybe incorrect parameters such as bit_rate, rate, width or height

我的FFPROBE输出

E:\video>ffmpeg ffprobe
ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 8.2.1 (GCC) 20181017
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig 
--enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype 
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb 
--enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy 
--enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx 
--enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 
--enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp 
--enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa 
--enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf 
--enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec
 --enable-dxva2 --enable-avisynth
  libavutil      56. 22.100 / 56. 22.100
  libavcodec     58. 35.100 / 58. 35.100
  libavformat    58. 20.100 / 58. 20.100
  libavdevice    58.  5.100 / 58.  5.100
  libavfilter     7. 40.101 /  7. 40.101
  libswscale      5.  3.100 /  5.  3.100
  libswresample   3.  3.100 /  3.  3.100
  libpostproc    55.  3.100 / 55.  3.100

共有1个答案

颛孙镜
2023-03-14

如果您使用的是消费级NVIDIA GPU,其中在固件和驱动程序级别强制执行最大同时NVENC会话限制为2,则您看到的错误是意料之中的。有关此的更多信息,请参阅NVIDIA GPU矩阵。

有两种方法可以克服此限制:

1、通过-map选项明确选择要编码的视频流,以便在每个会话的任何给定时间仅编码两个视频流。以下示例仅明确选择第一和第二视频流:

E:\video>ffmpeg -loglevel error -y -i E:\video\19_12_2018\Files\MEDIA\media_data.mxf -map 0:v:0 -map 0:v:1 -map:0:a -c:v h264_nvenc -acodec copy nvidia_output.mp4

如果您为正在使用的输入文件提供ffprobe输出,那就太棒了,这样,我们可以建议如何处理其他视频流。如果需要的话,可以选择使用基于软件的编码器(如x264)。

2.覆盖上述NVENC会话计数限制:这将需要您修补NVIDIA驱动程序,如本存储库中所述。此处还提供Linux说明。

 类似资料:
  • 我有一个包含16个音频单声道流的MXF文件,我需要将其重新编码到一个mp4文件中,该文件包含2<=n<=16个合并输入流的声道,例如,输出声道1上的输入声道1和2,输出声道2上的输入声道9和10。这项工作将用FFMPEG完成。我阅读了文档,发现amerge和amix滤波器会很好,但它们只输出一个通道。这个问题有什么解决办法吗? 谢谢,劳拉

  • 我曾尝试使用GStreamer管道将mp4视频转换为avi视频,但它是在没有声音的情况下转换的 gst launch-t-v filesrc location=源。mp4!qtdemux!ffdec\U h264!视频/x-raw-yuv!avimux!filesink location=结果yuv。avi公司

  • 我设置了一个相机预览与onPreviewFrame回调,我想知道,“如何编码onPreviewFrame数据到一个mp4视频文件?” 谢谢,如果有任何评论、意见或建议,我们将不胜感激,

  • 我想使用ffmpeg将RTP流转换为MP4(HTTP)流,这样我就可以在html视频标签中播放, 但我只能成功地转码到flv格式。 下面是我的设置: “其他信息” 输入格式 如果有人知道如何解决或需要更多的信息,请告诉我,谢谢!

  • 我正在尝试将各种文件类型转换为mp4,以便使用ffmpeg显示,但我不断收到错误: 打开输出流#0.0的编码器时出错-可能是错误的参数,如比特率、速率、宽度或高度 另一件看起来很重要的事情是: [libx264@0x93caef0]检测到ffmpeg默认设置已损坏 [libx264@0x93caef0]使用编码预设(例如-vpre-medium) [libx264@0x93caef0]预设用法:-

  • 问题内容: 好的,基本上我有一个项目,要求对用户隐藏视频,同时仍然能够查看它们(使用php)。这是我到目前为止所得到的: video.php文件具有以下内容: 并且应该显示此内容的html文件使用的是预期的html5。现在这是东西..当我直接嵌入这个(不是)时,它起作用了。但是它在我的iPhone上不起作用,并且在标签中也不起作用…如果我使用直接文件而不是php包装器,那么一切也可以在我的iPho