使用 ffmpeg 修复 MediaRecorder 视频

使用 ffmpeg 修复 MediaRecorder 视频

我在用着媒体记录器 API在 Firefox 上从网络摄像头创建视频,但是创建视频文件时会出现一些失败。这里是使用此方法创建的视频示例。当我在 VLC 播放器上执行它时,它的音频非常错误。

这是 ffprobe(它是一个 webm 视频):

ffprobe version git-2015-12-11-df2ce13 Copyright (c) 2007-2015 the FFmpeg developers
  built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04)
  configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3 --enable-x11grab
  libavutil      55. 10.100 / 55. 10.100
  libavcodec     57. 17.100 / 57. 17.100
  libavformat    57. 19.100 / 57. 19.100
  libavdevice    57.  0.100 / 57.  0.100
  libavfilter     6. 20.100 /  6. 20.100
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, matroska,webm, from 'original.wmv':
  Metadata:
    encoder         : QTmuxingAppLibWebM-0.0.1
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0(eng): Video: vp8, yuv420p, 640x480, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Stream #0:1(eng): Audio: vorbis, 44100 Hz, mono, fltp (default)

这些命令帮助我修复了大多数音频问题,但现在不同步了:

ffmpeg -i original.wmv -r 30000/1001 -pix_fmt yuv420p -vsync 1 -g 60 -vcodec libx264 -refs 1 -bf 0 -subq 3 -acodec libfaac -ac 2 -ab 128k -ar 100 -filter_complex asetnsamples=n=1234:p=0 novo.mp4

ffmpeg -y -i original.wmv -r 30000/1001 -pix_fmt yuv420p -vsync 1 -g 60 -vcodec libx264 -refs 1 -bf 0 -subq 3 -acodec libfaac -ac 2 -ab 128k - 44100 -filter_complex silenceremove=0:5 new.mp4

我需要同步它或用另一种方式修复它,但使用通用命令来在以这种方式录制的任何其他视频中使用。

答案1

我通过使用以下命令来纠正音频解决了我的问题:

ffmpeg -i original.wmv -r 30000/1001 -pix_fmt yuv420p -vsync 1 -g 60 -vcodec libx264 -refs 1 -bf 0 -subq 3 -acodec libfaac -ac 2 -ab 128k -ar 100 -filter_complex asetnsamples=n=1234:p=0 new.mp4

然后使用 ffprobe 从转换后的视频中获取视频和音频的持续时间,减去两个持续时间以获得偏移量并使用它来同步视频和音频:

ffmpeg -y -i new.mp4 -itsoffset "calculatedOffset" -i new.mp4 -vcodec copy -acodec copy -map 1:0 -map 0:1 new_sync.mp4

相关内容