ffmpeg和脉冲音频创建buzzy语音

时间:2017-06-15 23:02:56

标签: ffmpeg pulseaudio

我正在尝试使用xvfb和脉冲音频从ec2实例(Ubuntu 16.04)录制视频和音频。一切正常,除了输出文件包含“buzzy”语音(不确定这是“剪辑”是什么?)。使用aac或mp3音频编解码器会发生这种情况。

示例音频文件:http://s000.tinyupload.com/index.php?file_id=86237391396073526211

ffmpeg命令:

ffmpeg \
-f x11grab -framerate 30 -video_size ${SCREEN_WIDTH}x${SCREEN_HEIGHT} -i :1.0 \
-f pulse -i default \
-c:v libx264 -preset veryfast -maxrate 2500k -bufsize 2500k -vf "format=yuv420p" -g 60 \
-c:a aac -strict -2 -channel_layout stereo  -ab 256k -ar 48000 -bufsize 512k -ac 2  \
-flags +global_header -f flv "test.mp4"

运行命令时ffmpeg的输出:

Input #0, x11grab, from ':1.0':
  Duration: N/A, start: 1497567394.762052, bitrate: N/A
    Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1360x764, 30 fps, 30 tbr, 1000k tbn, 30 tbc
Guessed Channel Layout for  Input Stream #1.0 : stereo
Input #1, pulse, from 'default':
  Duration: N/A, start: 1497567396.743667, bitrate: 1536 kb/s
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
[libx264 @ 0x1977d20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x1977d20] profile High, level 3.2
[libx264 @ 0x1977d20] 264 - core 148 r2643 5c65704 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=60 keyint_min=6 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=2500 vbv_bufsize=512 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
Output #0, flv, to 'test.mp4':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 1360x764, q=-1--1, max. 2500 kb/s, 30 fps, 1k tbn, 30 tbc
    Metadata:
      encoder         : Lavc56.60.100 libx264
    Stream #0:1: Audio: aac ([10][0][0][0] / 0x000A), 48000 Hz, stereo, fltp, 256 kb/s
    Metadata:
      encoder         : Lavc56.60.100 aac
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
  Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (native))

基于各种帖子,我认为它可能是脉冲配置中的某些内容,尤其是“resample-method”设置,但似乎没有做任何事情。以下是/etc/pulse/daemon.conf配置文件当前的位置:

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
; cpu-limit = no

; high-priority = yes
; nice-level = -11

; realtime-scheduling = yes
; realtime-priority = 5

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1
; resample-method = speex-float-10
resample-method = speex-fixed-10
; enable-remixing = yes
enable-lfe-remixing = yes
; lfe-crossover-freq = 120

flat-volumes = no

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
default-sample-format = s32le
default-sample-rate = 44100
; default-sample-rate = 48000
; alternate-sample-rate = 48000
alternate-sample-rate = 44100
; default-sample-channels = 2
; default-channel-map = front-left,front-right

; default-fragments = 4
; default-fragment-size-msec = 25
; default-fragments = 4
; default-fragment-size-msec = 25


; enable-deferred-volume = yes
deferred-volume-safety-margin-usec = 1
; deferred-volume-extra-delay-usec = 0

编辑:

好的,更新了ffmpeg命令以仅捕获音频,但仍然存在同样的问题:

ffmpeg \
-f pulse -i default \
-c:a aac -strict -2 -channel_layout stereo  -ab 256k -ar 48000 -bufsize 512k -ac 2  \
test.aac

我在输出中收到一些关于时间戳关闭的有趣消息:

[aac @ 0x12a4900] Queue input is backward in timeits/s
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 175924
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 176948
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 177972
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 178996
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 180020
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 181044
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 182857 >= 182068
[aac @ 0x12a4900] Queue input is backward in time
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 183406
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 184430
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 185454
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 186478
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 187502
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 188526
[aac @ 0x12a4900] Queue input is backward in time
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 189550
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 190574
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 169622
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 170646
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 171670
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 172694
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 173718
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 174742
[aac @ 0x12a4900] Queue input is backward in time
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 175766
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 176790
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 157020
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 158083
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 159107
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 160131
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 161155
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 162179
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 163203
[aac @ 0x12a4900] Queue input is backward in time
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 164227
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 165251
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 154697
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 159400
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 160424
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 161448
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 162472
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 163496
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 164520
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 165544
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 166568
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 171795
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 172819
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 173843
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 174867
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 175891
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 176915
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 177939
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 178963
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 187279
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 189829
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 190853
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 191877
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 193354 >= 192901
[aac @ 0x12a4900] Queue input is backward in time
    Last message repeated 2 times
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 216609 >= 216172
[aac @ 0x12a4900] Queue input is backward in time
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 216609 >= 214950
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 216609 >= 214933
[adts @ 0x12a35a0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 216609 >= 214836

2 个答案:

答案 0 :(得分:0)

这是一个真正奇怪的问题......我从未听过这样的声音。

我不认为这是一个采样率问题,至少不是自己的问题。 (可能是一个破碎的重新采样器或其他东西......)语音的速率是正确的。

几乎听起来有通道数或位深度的东西。它是统一的,这意味着它不是缓冲下/溢出。直到有声音才会显现,这意味着它不是振荡或噪音的额外来源。

default-sample-format = s32le

您的样本格式是否实际使用?因为FFmpeg告诉你pcm_s16le。尝试在Pulseaudio配置中设置s16le,看看会发生什么。

答案 1 :(得分:0)

显然这是Firefox的一些问题。切换到Chrome,问题就消失了。