[FFmpeg-trac] #4436(undetermined:new): There is no reliable way to do screen-casting with audio.

FFmpeg trac at avcodec.org
Mon Apr 6 23:40:25 CEST 2015


#4436: There is no reliable way to do screen-casting with audio.
-------------------------------------+-------------------------------------
             Reporter:  picrin       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:  screen-      |               Blocked By:
  casting acodec copy                |  Reproduced by developer:  0
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 {{{
 ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f
 alsa -ac 2 -i pulse output.flv
   }}}


 No longer works, contrary to what's claimed on the wiki:
 https://trac.ffmpeg.org/wiki/Capture/Desktop.

 I would edit the tip on the wiki to:

 {{{
 ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+0,0 -f alsa
 -ac 2 -i pulse -acodec aac -strict experimental output.flv
 }}}

 which works, but also assumes running an experimental codec, which I'd
 imagine would work unreliably. Furthermore, I was unable to identify any
 other pair of audio and video encoders that would work together. For
 example, the following line:

 {{{
 ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+0,0 -f alsa
 -ac 2 -i pulse -acodec copy output.mpeg
 }}}

 Results in seemingly OK capture:

 {{{
 ffmpeg version N-71312-ga66dcfe Copyright (c) 2000-2015 the FFmpeg
 developers
   built with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-7)
   configuration:
   libavutil      54. 22.100 / 54. 22.100
   libavcodec     56. 34.100 / 56. 34.100
   libavformat    56. 29.100 / 56. 29.100
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 13.101 /  5. 13.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
 Input #0, x11grab, from ':0.0+0,0':
   Duration: N/A, start: 1428354986.424817, bitrate: N/A
     Stream #0:0: Video: rawvideo (BGR[0] / 0x524742), bgr0, 1024x768, 25
 fps, 25 tbr, 1000k tbn, 25 tbc
 Guessed Channel Layout for  Input Stream #1.0 : stereo
 Input #1, alsa, from 'pulse':
   Duration: N/A, start: 1428354986.452261, bitrate: 1536 kb/s
     Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s
 File 'output.mpeg' already exists. Overwrite ? [y/N] y
 [mpeg @ 0x26276e0] VBV buffer size not set, using default size of 130KB
 If you want the mpeg file to be compliant to some specification
 Like DVD, VCD or others, make sure you set the correct buffer size
 Output #0, mpeg, to 'output.mpeg':
   Metadata:
     encoder         : Lavf56.29.100
     Stream #0:0: Video: mpeg1video, yuv420p, 1024x768, q=2-31, 200 kb/s,
 25 fps, 90k tbn, 25 tbc
     Metadata:
       encoder         : Lavc56.34.100 mpeg1video
     Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, 1536 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg1video (native))
   Stream #1:0 -> #0:1 (copy)
 Press [q] to stop, [?] for help
 [alsa @ 0x26019c0] Thread message queue blocking; consider raising the
 thread_queue_size option (current value: 8)
 [x11grab @ 0x25fb040] Thread message queue blocking; consider raising the
 thread_queue_size option (current value: 8)
 Past duration 0.628014 too large
 Past duration 0.650642 too large     876kB time=00:00:01.72
 bitrate=4172.2kbits/s dup=31 drop=8
 Past duration 0.888618 too large
 Past duration 0.906075 too large
 Past duration 0.956093 too large
 frame=  132 fps= 31 q=31.0 Lsize=    2134kB time=00:00:05.24
 bitrate=3336.2kbits/s dup=31 drop=29
 video:1154kB audio:963kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.820092%
 }}}

 However, inspection with ffplay produces a corrupted audio (loud squeak at
 the beginning and silence thereafter).

 {{{
 ffplay version N-71312-ga66dcfe Copyright (c) 2003-2015 the FFmpeg
 developers
   built with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-7)
   configuration:
   libavutil      54. 22.100 / 54. 22.100
   libavcodec     56. 34.100 / 56. 34.100
   libavformat    56. 29.100 / 56. 29.100
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 13.101 /  5. 13.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
 [mp2 @ 0x7f499c007da0] Header missingB vq=    0KB sq=    0B f=0/0
     Last message repeated 82 times
 Input #0, mpeg, from 'output.mpeg':
   Duration: 00:00:05.16, start: 0.540000, bitrate: 3386 kb/s
     Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p(tv), 1024x768 [SAR 1:1
 DAR 4:3], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 25 tbc
     Stream #0:1[0x1c0]: Audio: mp2, 32000 Hz, mono, s16p, 64 kb/s
 [mp2 @ 0x7f499c007da0] Header missing
 [mp2 @ 0x7f499c007da0] Header missingB vq=  568KB sq=    0B f=0/0
     Last message repeated 245 times
    5.14 A-V: -0.002 fd=  58 aq=    0KB vq=   57KB sq=    0B f=0/0
 [picrin at localhost presentation]$ FFmpeg/ffplay output.mpeg
 ffplay version N-71312-ga66dcfe Copyright (c) 2003-2015 the FFmpeg
 developers
   built with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-7)
   configuration:
   libavutil      54. 22.100 / 54. 22.100
   libavcodec     56. 34.100 / 56. 34.100
   libavformat    56. 29.100 / 56. 29.100
   libavdevice    56.  4.100 / 56.  4.100
   libavfilter     5. 13.101 /  5. 13.101
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
 [mp2 @ 0x7fe9f8007da0] Header missingB vq=    0KB sq=    0B f=0/0
     Last message repeated 82 times
 Input #0, mpeg, from 'output.mpeg':
   Duration: 00:00:05.16, start: 0.540000, bitrate: 3386 kb/s
     Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p(tv), 1024x768 [SAR 1:1
 DAR 4:3], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 25 tbc
     Stream #0:1[0x1c0]: Audio: mp2, 32000 Hz, mono, s16p, 64 kb/s
 [mp2 @ 0x7fe9f8007da0] Header missingB vq=  568KB sq=    0B f=0/0
     Last message repeated 246 times
    4.84 A-V: -0.023 fd=  58 aq=    0KB vq=   59KB sq=    0B f=0/0
 }}}

 The key to the actual bug might be a line in the output, which appears
 repetitively:

 {{{
 [mp2 @ 0x7f499c007da0] Header missing
 }}}

 In order to resolve this bug, can a developer/ anybody with better
 understanding of ffmpeg than me do the following:

 1) fix the wiki with a reliable solution for screen-casting WITH audio,
 which will work without an experimental codec.
 2) fix the -acodec copy not to mess up the audio headers, or whatever is
 actually broken.

 I am running against very recent revision from master:
 a66dcfeedc68c080965cf78e1e0694967acef5af.

 ffmpeg was built with default configuration as produced by ./configure on
 Fedora 20.

 More detail available on stack overflow:
 http://stackoverflow.com/questions/29478548/screen-capture-with-audio-in-
 ffmpeg

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4436>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list