首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ffmpeg:处理输入时发现无效数据

ffmpeg:处理输入时发现无效数据
EN

Stack Overflow用户
提问于 2018-09-20 05:07:17
回答 1查看 5.3K关注 0票数 1

我遇到了ffmpeg抛出错误的情况:

代码语言:javascript
运行
复制
Invalid data found when processing input

我在这里回顾了其他答案,但我的情况有所不同。我在Ruby中生成了一个文本文件,其中包含一系列输入文件,我希望将这些文件连接成一个大视频。

我在Ruby中生成了用于bash的命令,它也是供我手动复制的输出:

代码语言:javascript
运行
复制
ffmpeg -y -f concat -safe 0 -i /Volumes/Dragon2/Yums/randoms.txt /Volumes/Dragon2/Yums/final.mp4

抛出错误:

代码语言:javascript
运行
复制
/Volumes/Dragon2/Yums/randoms.txt: Invalid data found when processing input

以下是该文件:

代码语言:javascript
运行
复制
file '/Volumes/Dragon2/Yums/0CEDC3CA-4571-4271-9938-A161EC2A887B.mov'
file '/Volumes/Dragon2/Yums/0D25D907-D053-443B-AFC6-9F12B1711BBF.mov'
file '/Volumes/Dragon2/Yums/6A272808-7706-435D-801E-ACE6B42EC749.mov'
file '/Volumes/Dragon2/Yums/6E9BA2F1-C5E7-4C1C-B290-D116105732FA.mov'
file '/Volumes/Dragon2/Yums/0A41C7B7-74CE-484E-B029-3AE57B8BB4EA.mov'

bash运行它时,它会报告输入文件randoms.txt具有无效数据。当我在bash中复制并粘贴完全相同的命令时,它工作得很好。我对这两者的不同之处感到困惑,也不明白为什么在shell中启动时ffmpeg并不满意。

我怎么才能让它工作呢?我遗漏了什么?干杯

编辑:原始ruby代码:

代码语言:javascript
运行
复制
`clear`
require 'pathname'
require 'pp'

s = '/Volumes/Dragon2/Yums'
files = []

Dir.foreach(s) do |path|
  files << "#{ s }/#{ path }"  
end

result = files.sample(files.size)           # randomizer

f = File.open("#{ s }/randoms.txt", 'w+')
result.each_with_index do |item, i|
  pp "#{ i }: #{ item }" if item.include?('mov')
  f << "file '#{ item }'\n" if item.include?('mov')
end

`echo `

File.delete("#{ s }/final.mp4") if File.exists?("#{ s }/final.mp4")
s = "ffmpeg -y -f concat -safe 0 -i #{ s }/randoms.txt #{ s }/final.mp4"
puts s

sleep 3
`#{ s }`

我也尝试过system s,但也出现了同样的错误。语法生成良好,输出良好,手动操作良好。

EN

回答 1

Stack Overflow用户

发布于 2018-09-20 06:28:08

我需要f.close来写这个文件,这样ffmpeg才能读取它。但shellwords也是关键。谢谢你。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52414228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档