【问题标题】:Invalid data found when processing input | ffmpeg处理输入时发现无效数据 | ffmpeg
【发布时间】:2021-02-03 01:39:34
【问题描述】:

我正在尝试使用 ffmpeg 连接多个视频,我使用文本文件作为输入,但我得到“Files.txt:处理输入时发现无效数据”。

我的命令:

ffmpeg -i Files.txt -filter_complex "[0:v]fps=25,format=yuv420p,setpts=PTS-STARTPTS[v0];[0:a]aformat=sample_rates=44100:channel_layouts=stereo,asetpts=PTS-STARTPTS[a0];[1:v]fps=25,format=yuv420p,setpts=PTS-STARTPTS[v1];[1:a]aformat=sample_rates=44100:channel_layouts=stereo,asetpts=PTS-STARTPTS[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1" -movflags +faststart output.mp4

我的文本文件:

file '1.mp4'
file '2.mp4'

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    只有 concat demuxer 接受文本文件列表

    要么使用concat demuxer

    ffmpeg -f concat -i input.txt output.mp4
    

    或者正常列出输入并使用concat filter

    ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]fps=25,format=yuv420p,setpts=PTS-STARTPTS[v0];[0:a]aformat=sample_rates=44100:channel_layouts=stereo,asetpts=PTS-STARTPTS[a0];[1:v]fps=25,format=yuv420p,setpts=PTS-STARTPTS[v1];[1:a]aformat=sample_rates=44100:channel_layouts=stereo,asetpts=PTS-STARTPTS[a1];[v0][a0][v1][a1]concat=n=2:v=1:a=1" -movflags +faststart output.mp4
    

    您不能使用列出输入的文本文件,除非您使用如上所示的 concat demuxer,或者如果您使用 shell 中的某些功能将列表解释为输入。 ffmpeg 没有这个功能。

    【讨论】:

    • 我使用 filter complex 是有原因的,concat 对我的用例没有意义。第二个选项有效,但我试图用文本文件来做。
    • @VRX 这个答案直接回答了“处理输入时发现无效数据”的问题,但现在看来实际问题是“如何使用文件列表作为 ffmpeg 的输入(但不适用于 concat解复用器)”?
    • 不是它没有回答这个问题,因为我想做什么很明显。我使用了复杂的过滤器,因为我尝试合并的每个视频都不是相同的格式。如果我使用“concat”,则视频输出已损坏。我正在寻找的解决方案是避免我遇到的问题。因为没有其他方法,所以没有其他方法可以使用文本文件作为输入。
    • @VRX 您不能使用文本文件作为输入,除非:A) 您正在使用 concat demuxer,或 B) 您使用了 shell 的某些功能。这不是 ffmpeg 中的功能。
    • 嗯,这将是我正在寻找的答案。
    【解决方案2】:

    您的文件很可能以非 UTF-8 编码进行编码。尝试以 UTF-8 编码保存文件。

    【讨论】:

    • 很遗憾,这不是问题。
    • 哦,好吧。您可以尝试在没有列表文件的情况下连接文件吗?
    • 我正在使用复杂的过滤器,因为视频的格式不同。如果我使用 concat,视频输出将会损坏。
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2023-03-28
    • 2016-06-22
    • 2014-05-03
    • 2017-02-08
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多