ffmpeg - 在 Mac 和 Linux 上工作时,在 Windows 上进行连接会引发“处理输入时发现无效数据”
问题描述
我需要使用每晚构建的 FFMPEG 运行命令来报告concat
协议上的错误。我发现在 Linux 上使用 libx264 支持从源代码编译很困难,并且我想节省我的 Mac 计算机,所以我使用来自Zeranoe的 Windows 上的夜间构建。
我调用这个命令来连接文件:
ffmpeg -safe 0 concat -i files_to_combine -vcodec libx264 show.mp4
哪里files_to_combine
是:
file ./short_DSC_0013.MOV
file ./short_DSC_0014.MOV
file ./short_DSC_0015.MOV
file ./short_DSC_0016.MOV
file ./short_DSC_0017.MOV
file ./short_DSC_0018.MOV
file ./short_DSC_0019.MOV
我从包含视频文件和files_to_combine
.
在夜间构建的 Windows 上,我收到错误消息:
files_to_combine:处理输入时发现无效数据
我更改file ./DSC_0013.MOV
为这些选项,都出现相同的错误:
file 'short_DSC_0013.MOV'
file '.\short_DSC_0013.MOV'
file 'F:\short_DSC_0013.MOV'
如何调试此错误,或者在 Windows 上使用夜间构建连接的语法是什么?
更新日志级别 48
我运行相同的命令-v 48
并得到:
F:\brain squids>C:\Users\migue\Desktop\ffmpeg-20200211-f15007a-win64-static\bin\ffmpeg.exe -v 48 -i files_to_combine -vcodec libx264 show.mp4 ffmpeg 版本 git-2020-02-11-f15007a 版权所有 (c) 2000-2020 FFmpeg 开发者 使用 gcc 9.2.1 (GCC) 20200122 构建 配置: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --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 --启用-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 39.100 / 56. 39.100 libavcodec 58. 68.102 / 58. 68.102 libavformat 58. 38.100 / 58. 38.100 libav 设备 58. 9.103 / 58. 9.103 libavfilter 7. 75.100 / 7. 75.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 拆分命令行。 读取选项'-v' ...与参数'48'匹配为选项'v'(设置日志记录级别)。 读取选项 '-i' ... 匹配为带有参数 'files_to_combine' 的输入 url。 读取选项'-vcodec' ...与参数'libx264'匹配为选项'vcodec'(强制视频编解码器('复制'复制流))。 读取选项“show.mp4”...匹配为输出 url。 完成拆分命令行。 解析一组选项: global 。 使用参数 48 应用选项 v(设置日志记录级别)。 成功解析了一组选项。 解析一组选项:输入url files_to_combine。 成功解析了一组选项。 打开一个输入文件:files_to_combine。 [NULL @ 0000021c781784c0] 打开“files_to_combine”进行读取 [file@0000021c78179580] 设置默认白名单'file,crypto,data' [AVIOContext@0000021c781817c0] 统计:182 字节读取,0 次搜索 files_to_combine:处理输入时发现无效数据
的内容files_to_combine
是:
文件“short_DSC_0013.MOV” 文件“short_DSC_0014.MOV” 文件“short_DSC_0015.MOV” 文件“short_DSC_0016.MOV” 文件“short_DSC_0017.MOV” 文件“short_DSC_0018.MOV” 文件“short_DSC_0019.MOV”
由于错误的命令而更新
我打错了命令。正确的命令-f
前面有一个concat
,我发现这是因为接受的答案能够使命令在类似的环境中工作:
ffmpeg -safe 0 -f concat -i files_to_combine -vcodec libx264 show.mp4
解决方案
我在 Windows 10 上成功测试了它:
(ffmpeg 版本N-95216-ge6625ca41f
)
- 视频
01.mp4
,02.mp4
并.txt
在C:\Users\drake7\Desktop\
- 内容
files_to_combine.txt
:
_
file 'C:\Users\drake7\Desktop\01.mp4'
file 'C:\Users\drake7\Desktop\02.mp4'
注: 02.mp4
是副本 01.mp4
。对于这个快速测试,我想让它变得非常简单。
.txt
创建于 right-click > New > Text Document
(使用我的 Windows 命令提示符我在C:\Users\drake7\Desktop\ffmpeg\bin
)
"ffmpeg.exe" -f concat -safe 0 -i "C:\Users\drake7\Desktop\files_to_combine.txt" -vcodec libx264 "C:\Users\drake7\Desktop\show.mp4"
推荐阅读
- ios - 两个动态 SCNNode 不碰撞(Scenekit)
- android - 将视频文件转换为 gif
- java - Spring - Hikari CP failing for DB2
- php - 如何防止保存 Yii2 中的行为
- jqgrid - jqgrid显示日期01/01/0001
- javascript - 将生成的 id 从一个页面传递到另一个页面
- php - 如果输入值为空 (""),则忽略验证规则
- python - 将 .py 转换为 .exe:无法理解代码
- tidygraph - r tidygraph 在满足条件的层次结构中找到第一个父级
- java - double 值的奇怪行为的原因是什么?