cat /dev/something > file.txt 的等价物(以编程方式)是什么

cat /dev/something > file.txt 的等价物(以编程方式)是什么

我正在使用命令从摄像机流复制视频cat /dev/video0 > file.mpeg 这工作得很好,但是我也想将文件分成更小的块...所以我一直在等待按 Ctrl+C..想要自动化所以创建了一个批处理脚本将等待 X 分钟然后停止作业,同时显示进度条。效果很好,但我想再迈出一步。我有一个包含确切时间和文件名的 XML 文件,我有一个解析该文件的单声道程序。

这是问题..我如何以编程方式运行这个 cat 命令。当然我可以执行系统命令。但我想用同一种语言来完成整个应用程序。我可以打开一个文件以二进制方式写入并一次读取 1000 个字节......但是 cat 在做什么?它是否知道以某种方式阅读多少/多快?

答案1

timeoutcat

cat由于它与和ctrl+配合得很好c,因此以下命令行应该根据问题处理数据并假设要记录 5 秒的播放时间。

timeout 5 cat /dev/video0 > file.mpeg

cat是一个用于读取/写入数据的简单工具。无法设置数据传输的速度或时间间隔cat。你必须在外面控制它cat。但还有许多其他工具。

使用内置功能ffmpeg

也可以使用多媒体工具ffmpeg。有一个陡峭的学习曲线,但是当你开始使用它时,你会发现它是一个非常强大的工具。说明书上有详细的说明man ffmpeg但最好通过互联网搜索合适的教程。

我已经测试了以下命令行,将 MTS 文件转换为 mpeg 文件。我还没有在设备上测试过它,但我认为它会起作用。您可能希望使用命令行中的更多选项来控制转换(与默认值不同)。

ffmpeg -t 5 -i /dev/video0 file.mpeg

其中-t 5表示记录 5 秒。

以下命令行可能是一个重要的改进,

ffmpeg -i /dev/video0 -f segment -segment_time 10:0 out%03d.mp4

它将把输入分割成 10 分钟长度的文件。你应该看看文档这里

ffmpeg版本

  • 在我使用 Lubuntu 18.04.1 LTS 的工作计算机中,有ffmpeg version 3.4.4-0ubuntu0.18.04.13.4.4 版本。这是从 Ubuntu 的存储库安装后得到的结果。其他 Linux 发行版和版本可能有其他版本(较新或较旧)。

  • 链接(到https://ffmpeg.org)描述的是4.1版本,该版本中的某些功能可能在旧版本中没有。此版本更先进,但获取和更新错误修复可能更复杂。

相关内容