首页 > 解决方案 > 在 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

标签: ffmpegconcat

解决方案


我在 Windows 10 上成功测试了它:

(ffmpeg 版本N-95216-ge6625ca41f

  1. 视频01.mp402.mp4.txtC:\Users\drake7\Desktop\
  2. 内容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"

推荐阅读