Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video FFmpeg串联更改输入视频的持续时间和播放速度_Video_Ffmpeg - Fatal编程技术网

Video FFmpeg串联更改输入视频的持续时间和播放速度

Video FFmpeg串联更改输入视频的持续时间和播放速度,video,ffmpeg,Video,Ffmpeg,我有两个使用FFmpeg concat解复用器连接的输入视频: ffmpeg -f concat safe '0' -i /path/to/file.txt -c copy /path/to/output.mp4 file.txt包含以下两个文件路径: ffconcat version 1.0 file /path/to/input/file1.mp4 file /path/to/input/file2.mp4 不幸的是,连接的视频有两个问题: 第一个输入视频的持续时间为4秒。在输出视

我有两个使用FFmpeg concat解复用器连接的输入视频:

ffmpeg -f concat safe '0' -i /path/to/file.txt -c copy /path/to/output.mp4
file.txt包含以下两个文件路径:

ffconcat version 1.0

file /path/to/input/file1.mp4

file /path/to/input/file2.mp4
不幸的是,连接的视频有两个问题:

  • 第一个输入视频的持续时间为4秒。在输出视频中,在第二个输入视频开始之前,最后一帧冻结几秒钟
  • 第二个输入视频的播放速度减慢,因此视频播放时间不是7秒,而是14秒或15秒左右
我已经尝试按照FFmpeg文档的规定,在.txt文件中指定每个视频的持续时间,但这似乎对输出没有影响

我是FFmpeg的新手,因此非常感谢您的帮助

编辑-FFprobe给出的每个输入视频的属性:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'tmp/video/16382802.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.25.100
  Duration: 00:00:04.43, start: 0.000000, bitrate: 644 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 360x640, 640 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler


Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'tmp/video/16382805.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.25.100
  Duration: 00:00:07.31, start: 0.023220, bitrate: 836 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 360x640, 669 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, 5.1, fltp, 158 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
编辑2-重拍视频时堆栈跟踪(音频丢失):


第一个视频的时基较小(并且没有音轨)。按如下方式重新包装,然后继续:

ffmpeg -i 16382802.mp4 -f lavfi -i anullsrc -c:v copy -video_track_timescale 30k -c:a aac -ac 6 -ar 44100 -shortest new.mp4

Concat demuxer要求视频的所有属性都相同:其中包括帧率和时基。显示两个文件的属性;使用ffprobe。我已经添加了两个视频的属性。帧率是如此的略有不同,但除非我弄错了,否则不足以减慢第二个视频?这太棒了,谢谢!只有两件事:我必须使用
-t
标志设置视频的持续时间,否则流似乎无限期地继续。我似乎也丢失了第二个视频的音轨。我可以看到音频编码选项在那里,所以有没有关于它为什么会丢失的想法?我已经添加了堆栈跟踪,从重拍视频开始,在第一个视频的原始探测中有音频跟踪,没有音频流。在新的读数中,有。;)移除
-f lavfi-i anullsrc
ffmpeg -i 16382802.mp4 -f lavfi -i anullsrc -c:v copy -video_track_timescale 30k -c:a aac -ac 6 -ar 44100 -shortest new.mp4