为了节省 NAS 上的空间,我计划对录制的视频进行转码(来源:vuplus duo2 vdr dvb-s2 / 传输流)。对于本地文件,这非常有效,并将大小缩小到原始大小的大约 20%:
ffmpeg -y -hide_banner -loglevel 'warning' -c:v h264_qsv -err_detect ignore_err -i file.ts -c:v hevc_qsv -preset medium -global_quality 25 -c:a copy Processed/file.mp4
当对 NAS 安装上的文件运行相同的命令时,该过程会在一段时间后挂起,并显示以下最后几行输出:
[vost#0:0/hevc_qsv @ 0x557c57a5aa00] Clipping frame in rate conversion by 0.089439
[NULL @ 0x557c5746e3c0] ct_type:0 pic_struct:0
[vost#0:0/hevc_qsv @ 0x557c57a5aa00] Clipping frame in rate conversion by 0.089439
Last message repeated 1 times
frame= 2263 fps=264 q=-0.0 size= 3840kB time=00:00:45.22 bitrate= 695.7kbits/s dup=55 drop=0 speed=5.28x
Enter command: <target>|all <time>|-1 <command>[ <argument>]
即使 1 小时后没有任何进展,也没有任何数据流量,ffmpeg 仍会导致一个核心负载达到 100%。唯一的区别是文件保存在连接到笔记本电脑的磁盘上(工作正常),并且文件位于我的 NAS 的 smb / cifs 挂载上(卡在任意帧)。脚本本身的位置并不重要。我没有遇到任何 NAS 问题,即任何其他文件操作都运行正常。
该选项-err_detect
似乎没有任何影响。笔记本电脑到 NAS 的连接速度为 1GBit/s(通过一些 ubiquiti 设备)。在解码或编码上使用硬件加速似乎没有任何影响。我尝试了几个选项,都在某个时间点卡住了。这里的 ffmpeg 调用只是我喜欢的那个。
以下是我的问题:
- 这是 ffmpeg/libav 的预期行为吗?在哪里可以找到详细信息?
- 是否有特定的 cifs 安装选项需要考虑?
- 关于如何找到根本原因还有其他建议吗?
非常感谢您的帮助!
此致
段0287
答案1
看起来ffmpeg
由于网络/NAS 延迟而丢失了一个段。我会检查:
- 网络连续复制速度。简单复制文件即可。查看数据传输中是否存在下降或峰值。1Gb/s 可能只是“最后一跳”,而“传输中”结果可能会有所不同。
- 将 ffmpeg 更新到最新版本以排除应用程序错误(或添加新的错误:))。
- 尝试对本地驱动器和远程驱动器中的文件进行完全相同的编码。
- 尝试使用不同的编解码器处理 NAS 文件。如果 GPU 允许,我建议
h264_nvenc
。