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
Audio 使用FFmpeg提高速度,而不是复制帧,将格式30帧转换为60帧/秒_Audio_Video_Ffmpeg_H.264_Frame Rate - Fatal编程技术网

Audio 使用FFmpeg提高速度,而不是复制帧,将格式30帧转换为60帧/秒

Audio 使用FFmpeg提高速度,而不是复制帧,将格式30帧转换为60帧/秒,audio,video,ffmpeg,h.264,frame-rate,Audio,Video,Ffmpeg,H.264,Frame Rate,我有一个视频错误地标记为30fps,它实际上是60fps,所以看起来像是以半速播放。音频很好,也就是说,音轨在视频剪辑的一半结束。我想知道,如果可能的话,如何解决这个问题,即视频速度加倍,达到60fps,这意味着音频和视频同步 该文件是H.264和音频MPEG-4 AAC 根据要求,ffmpeg提供的文件详细信息: ffmpeg version 0.8.9-6:0.8.9-0ubuntu0.13.10.1, Copyright (c) 2000-2013 the Libav developers

我有一个视频错误地标记为30fps,它实际上是60fps,所以看起来像是以半速播放。音频很好,也就是说,音轨在视频剪辑的一半结束。我想知道,如果可能的话,如何解决这个问题,即视频速度加倍,达到60fps,这意味着音频和视频同步

该文件是H.264和音频MPEG-4 AAC

根据要求,ffmpeg提供的文件详细信息:

ffmpeg version 0.8.9-6:0.8.9-0ubuntu0.13.10.1, Copyright (c) 2000-2013 the Libav developers
built on Nov  9 2013 19:09:46 with gcc 4.8.1
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './Tignes60fps.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2014-01-13 02:23:09
    Duration: 00:08:33.21, start: 0.000000, bitrate: 5690 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 5609 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
Metadata:
    creation_time   : 2014-01-13 02:23:09
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 156 kb/s
Metadata:
      creation_time   : 2014-01-13 02:23:09
At least one output file must be specified

使用
-vsync drop

ffmpeg-i input.avi-vcodec copy-vsync drop-r 60 output.avi


源时间戳将被销毁,输出muxer将根据给定的帧速率创建一个新的时间戳(
-r
开关)。

好的,下面是我如何实现我想要的

avconv -i input.mp4 -r 60 -filter:v "setpts=0.5*PTS" output.mp4
这使得音频保持不变,因此现在它与视频很好地同步

这原本是一个视频,在实际速度为60帧时错误地导出为30帧/秒,因此视频以一半的速度播放两次,音轨完成了一半。上面修复了这个问题,加快了视频速度,没有丢失帧,现在以60fps的正常速度播放,并且与音频同步


罗格德帕克的建议值得称赞,但你的建议太少了!如果您能给出更完整的答案,我们将不胜感激

setpts filter可能会有帮助。您应该提供有关此文件的一些信息:
ffmpeg-i input
。请提供完整的控制台输出。我对问题进行了编辑,以提供这些详细信息。这只提供了“预期的vsync数量,但发现:删除”您使用的ffmpeg版本是什么?嗯。。。事实上,您使用的是libav,而不是ffmpeg。这需要解释一下。我准确地输入了命令,怎么不是ffmpeg?复制命令时也会出现同样的错误,但我知道我应该使用avconv替换ffmpeg。这超出了常识:-)ffmpeg是一个开源项目,它包含大量库(libavformat/codec/etc)和实用程序,如ffserver、ffplay、ffprobe和ffmpeg本身。几年前,ffmpeg社区的一些关键人物反叛ffmpeg维护者Michael Niedermayer,并制作了自己的ffmpeg,名为“libav”。出于某种原因,在一些linux发行版中,原来的ffmpeg已被avconv取代。因此,当您键入“ffmpeg”时,实际上运行的是avconv,它的命令行选项与原始ffmpeg可执行文件不同。