2015-02-06 2 views
2

Ubuntu에서 EasyCap USB 스틱과 마더 보드의 사운드 라인 - 인을 통해 일부 오래된 비디오 8 테이프를 컴퓨터로 전송하려고합니다. 인수가 두 개의 독립적 인 스트림에서 캡처하여 출력 MP4 파일로 인코딩되도록 아래에 올바르게 배치되어 있다고 생각합니다.fflmpeg 캡처에서 낮은 품질의 소스로 인한 ALSA 버퍼 xrun

편집 :

질문을 간단하게 할 수 있습니다.

신뢰할 수없는/시끄러운 오디오 소스에서 ALSA 버퍼 오버런 (또는 언더런?)이 발생합니다. 예를 들어, ffmpeg가 테이프 재생의 시작 부분을 캡처하면 테이프가 속도를 높이고 재생이 정상적으로 이루어질 때 "버퍼 xrun"이 훨씬 커집니다.

ffmpeg 로그에 표시된 비트율이 가비지 출력을 생성 할 때 정상보다 높게 나오는 것은 흥미 롭습니다! (이 비트 전송률은 오디오와 비디오 비트율의 합계입니까?)

몇 가지 오디오 인코딩 코덱을 사용해 보았는데 동일한 문제가있었습니다. libfdk_aac를 사용

:

Metadata: 
    encoder   : Lavf56.15.102 
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv422p, 640x480, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc 
    Metadata: 
     encoder   : Lavc56.13.100 libx264 
    Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0]/0x0040), 48000 Hz, mono, s16, 128 kb/s 
    Metadata: 
     encoder   : Lavc56.13.100 libfdk_aac 
Stream mapping: 
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) 
    Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac)) 
[alsa @ 0x22038a0] ALSA buffer xrun. 0kB time=00:00:00.00 bitrate=N/A  
[alsa @ 0x22038a0] ALSA buffer xrun.1934kB time=00:00:02.76 bitrate=5723.5kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.4795kB time=00:00:05.49 bitrate=7150.1kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.7668kB time=00:00:08.21 bitrate=7646.1kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.1475kB time=00:00:10.94 bitrate=8588.9kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.3822kB time=00:00:13.66 bitrate=8289.0kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.5388kB time=00:00:16.38 bitrate=7695.0kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.6896kB time=00:00:19.10 bitrate=7244.0kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.8980kB time=00:00:21.84 bitrate=7118.8kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.2032kB time=00:00:24.55 bitrate=7349.3kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.4612kB time=00:00:27.27 bitrate=7391.1kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.6660kB time=00:00:29.98 bitrate=7284.6kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.9123kB time=00:00:32.68 bitrate=7299.3kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.0641kB time=00:00:35.39 bitrate=7091.7kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.2601kB time=00:00:38.13 bitrate=7002.6kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.5828kB time=00:00:40.87 bitrate=7181.0kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.8481kB time=00:00:43.60 bitrate=7229.9kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.1461kB time=00:00:46.34 bitrate=7328.0kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.3982kB time=00:00:49.06 bitrate=7342.7kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.6565kB time=00:00:51.77 bitrate=7367.8kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.9718kB time=00:00:54.51 bitrate=7471.3kbits/s  
[alsa @ 0x22038a0] ALSA buffer xrun.2341kB time=00:00:57.25 bitrate=7489.2kbits/s  
^Cframe= 1760 fps= 29 q=-1.0 Lsize= 53946kB time=00:01:00.04 bitrate=7360.3kbits/s  
video:53880kB audio:53kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.022994% 
[libx264 @ 0x2217ac0] frame I:8  Avg QP:24.00 size: 55686 
[libx264 @ 0x2217ac0] frame P:1752 Avg QP:27.66 size: 31237 
[libx264 @ 0x2217ac0] mb I I16..4: 100.0% 0.0% 0.0% 
[libx264 @ 0x2217ac0] mb P I16..4: 15.0% 0.0% 0.0% P16..4: 80.2% 0.0% 0.0% 0.0% 0.0% skip: 4.8% 
[libx264 @ 0x2217ac0] coded y,uvDC,uvAC intra: 45.3% 86.6% 59.4% inter: 65.7% 81.3% 11.5% 
[libx264 @ 0x2217ac0] i16 v,h,dc,p: 40% 25% 26% 9% 
[libx264 @ 0x2217ac0] i8c dc,h,v,p: 45% 24% 19% 12% 
[libx264 @ 0x2217ac0] kb/s:7516.07 
Received signal 2: terminating. 

libvorbis 사용 : ALSA 스트림의

Metadata: 
    encoder   : Lavf56.15.102 
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv422p, 640x480, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc 
    Metadata: 
     encoder   : Lavc56.13.100 libx264 
    Stream #0:1: Audio: vorbis (libvorbis) ([221][0][0][0]/0x00DD), 48000 Hz, mono, fltp, 128 kb/s 
    Metadata: 
     encoder   : Lavc56.13.100 libvorbis 
Stream mapping: 
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) 
    Stream #1:0 -> #0:1 (pcm_s16le (native) -> vorbis (libvorbis)) 
[alsa @ 0x1a948a0] ALSA buffer xrun. 0kB time=00:00:00.00 bitrate=N/A  
[alsa @ 0x1a948a0] ALSA buffer xrun. 402kB time=00:00:04.37 bitrate= 752.3kbits/s  
[alsa @ 0x1a948a0] ALSA buffer xrun.4122kB time=00:00:08.80 bitrate=3833.0kbits/s  
[alsa @ 0x1a948a0] ALSA buffer xrun.8722kB time=00:00:13.14 bitrate=5436.3kbits/s  
[alsa @ 0x1a948a0] ALSA buffer xrun.3903kB time=00:00:17.51 bitrate=6502.2kbits/s  
[alsa @ 0x1a948a0] ALSA buffer xrun.6625kB time=00:00:21.89 bitrate=6221.4kbits/s  
[alsa @ 0x1a948a0] ALSA buffer xrun.9548kB time=00:00:26.28 bitrate=6092.5kbits/s  
^Cframe= 851 fps= 26 q=-1.0 Lsize= 22018kB time=00:00:30.69 bitrate=5875.3kbits/s  
video:21996kB audio:12kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 0.044897% 
[libx264 @ 0x1aa8ac0] frame I:4  Avg QP:23.50 size: 62405 
[libx264 @ 0x1aa8ac0] frame P:847 Avg QP:25.58 size: 26297 
[libx264 @ 0x1aa8ac0] mb I I16..4: 100.0% 0.0% 0.0% 
[libx264 @ 0x1aa8ac0] mb P I16..4: 13.2% 0.0% 0.0% P16..4: 72.0% 0.0% 0.0% 0.0% 0.0% skip:14.8% 
[libx264 @ 0x1aa8ac0] coded y,uvDC,uvAC intra: 40.6% 81.0% 58.6% inter: 58.8% 72.7% 8.6% 
[libx264 @ 0x1aa8ac0] i16 v,h,dc,p: 41% 28% 22% 9% 
[libx264 @ 0x1aa8ac0] i8c dc,h,v,p: 54% 19% 16% 11% 
[libx264 @ 0x1aa8ac0] kb/s:6345.60 
Received signal 2: terminating. 

는 FFmpeg의 검출은 겉으로는 테이프의 불일치에 의해 놓 쳤어된다. 실패의 경우에는 출력 오디오 MP4에 테이프 오디오의 짧은 부분 만 존재합니다. 출력 파일의 오디오 비트 전송률은 전체 파일에서 평균 10 kbps입니다. 실패 사례의 초당 프레임 수가 낮을지라도 출력 비디오는 괜찮은 것처럼 보입니다.

소스 오류가 발생하기 전에 짧은 시간 동안 오디오 및 비디오 스트림을 잘 캡처 할 수 있습니다. 성공 사례 로그를 제공합니다. 실패 사례 로그는 의도적으로 소스 스트림에서 오류를 생성하여 생성되었으므로 카메라를 켜면 짧은 시끄러운 신호가 나타납니다.

테이프가 비어 있거나 시끄 럽더라도 ffmpeg가 오디오 스트림을 계속 기록하도록 설정해야합니까?

libfdk_aac 오디오 인코더가 저품질 소스에 의해 작동되지 않을 수 있습니까?

해당 줄; rawvideo 스트림은 하단에 스크립트에서이 파이프됩니다 다음 ar 인수 녹화를 강제로 하나 개의 시도는

ffmpeg -pixel_format uyvy422 -s:v 720x480 -framerate 29.97 -f rawvideo \ 
-i $PIPE -f alsa -i hw:0,0 -vf scale=w=720:h=540 -vcodec libx264 \ 
-preset ultrafast -shortest -c:a libfdk_aac -b:a 128k -af pan=1:c0=c0 \ 
-ar 96000 $OUTFILE 

했다.

(단명) 성공을위한 ffmpeg 로그 파일. 높은 프레임/초 캡처 :

ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers 
    built on Jan 11 2015 17:53:45 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) 
    configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab 
    libavutil  54. 15.100/54. 15.100 
    libavcodec  56. 13.100/56. 13.100 
    libavformat 56. 15.102/56. 15.102 
    libavdevice 56. 3.100/56. 3.100 
    libavfilter  5. 2.103/5. 2.103 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 3.100/53. 3.100 
Input #0, rawvideo, from '/tmp/somagic-pipe': 
    Duration: N/A, start: 0.000000, bitrate: 165722 kb/s 
    Stream #0:0: Video: rawvideo (UYVY/0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 tbr, 29.97 tbn, 29.97 tbc 
Home directory not accessible: Permission denied 
Guessed Channel Layout for Input Stream #1.0 : stereo 
Input #1, alsa, from 'hw:0,0': 
    Duration: N/A, start: 1423202268.577088, bitrate: 1536 kb/s 
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s 
No pixel format specified, yuv422p for H.264 encoding chosen. 
Use -pix_fmt yuv420p for compatibility with outdated media players. 
[Parsed_pan_0 @ 0x3335d60] This syntax is deprecated. Use '|' to separate the list items. 
Single channel layout '1' is interpreted as a number of channels, switch to the syntax '1c' otherwise it will be interpreted as a channel layout number in a later version 
[Parsed_pan_0 @ 0x3335d60] Pure channel mapping detected: 0 
[libx264 @ 0x3364bc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64 
[libx264 @ 0x3364bc0] profile High 4:2:2, level 3.1, 4:2:2 8-bit 
[libx264 @ 0x3364bc0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 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=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0 
Output #0, mp4, to '/home/peterbecich/easycap/Videos/fpv_video_02_05_2015_21_57_48.mp4': 
    Metadata: 
    encoder   : Lavf56.15.102 
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv422p, 720x540, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc 
    Metadata: 
     encoder   : Lavc56.13.100 libx264 
    Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0]/0x0040), 96000 Hz, mono, s16, 128 kb/s 
    Metadata: 
     encoder   : Lavc56.13.100 libfdk_aac 
Stream mapping: 
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) 
    Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac)) 
Press [q] to stop, [?] for help 
frame= 13 fps=0.0 q=26.0 size=  187kB time=00:00:00.30 bitrate=5102.7kbits/s  
frame= 29 fps= 29 q=26.0 size=  469kB time=00:00:00.83 bitrate=4607.6kbits/s  
frame= 44 fps= 29 q=26.0 size=  755kB time=00:00:01.33 bitrate=4635.2kbits/s  
frame= 59 fps= 29 q=26.0 size= 1024kB time=00:00:01.83 bitrate=4572.1kbits/s  
frame= 74 fps= 29 q=26.0 size= 1279kB time=00:00:02.33 bitrate=4486.5kbits/s  
frame= 89 fps= 29 q=26.0 size= 1516kB time=00:00:02.83 bitrate=4378.0kbits/s  
frame= 104 fps= 29 q=26.0 size= 1752kB time=00:00:03.33 bitrate=4301.0kbits/s  
frame= 119 fps= 29 q=26.0 size= 1991kB time=00:00:03.83 bitrate=4251.1kbits/s  
frame= 135 fps= 30 q=26.0 size= 2245kB time=00:00:04.37 bitrate=4207.5kbits/s  
frame= 150 fps= 30 q=26.0 size= 2524kB time=00:00:04.87 bitrate=4245.0kbits/s  
frame= 165 fps= 30 q=26.0 size= 2808kB time=00:00:05.37 bitrate=4282.0kbits/s  
frame= 180 fps= 30 q=26.0 size= 3091kB time=00:00:05.87 bitrate=4311.5kbits/s  
[rawvideo @ 0x3350640] Invalid buffer size, packet size 65536 < expected frame_size 691200 
Error while decoding stream #0:0: Invalid argument 
frame= 183 fps= 29 q=-1.0 Lsize= 3247kB time=00:00:06.11 bitrate=4351.5kbits/s  
video:3142kB audio:96kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.254788% 
[libx264 @ 0x3364bc0] frame I:1  Avg QP:20.00 size: 2289 
[libx264 @ 0x3364bc0] frame P:182 Avg QP:25.99 size: 17664 
[libx264 @ 0x3364bc0] mb I I16..4: 100.0% 0.0% 0.0% 
[libx264 @ 0x3364bc0] mb P I16..4: 78.5% 0.0% 0.0% P16..4: 20.2% 0.0% 0.0% 0.0% 0.0% skip: 1.4% 
[libx264 @ 0x3364bc0] coded y,uvDC,uvAC intra: 84.1% 71.5% 18.9% inter: 51.9% 63.5% 0.4% 
[libx264 @ 0x3364bc0] i16 v,h,dc,p: 15% 8% 69% 8% 
[libx264 @ 0x3364bc0] i8c dc,h,v,p: 50% 19% 24% 7% 
[libx264 @ 0x3364bc0] kb/s:4215.02 

ffmpeg log for failure; 낮은 FPS 캡처 :

ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers 
    built on Jan 11 2015 17:53:45 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1) 
    configuration: --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-avresample --disable-debug --enable-nonfree --enable-gpl --enable-version3 --enable-libpulse --enable-libopencore-amrnb --enable-libopencore-amrwb --disable-decoder=amrnb --disable-decoder=amrwb --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libvorbis --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libspeex --enable-libass --enable-avisynth --enable-libsoxr --enable-libxvid --enable-libvo-aacenc --enable-libvidstab 
    libavutil  54. 15.100/54. 15.100 
    libavcodec  56. 13.100/56. 13.100 
    libavformat 56. 15.102/56. 15.102 
    libavdevice 56. 3.100/56. 3.100 
    libavfilter  5. 2.103/5. 2.103 
    libavresample 2. 1. 0/2. 1. 0 
    libswscale  3. 1.101/3. 1.101 
    libswresample 1. 1.100/1. 1.100 
    libpostproc 53. 3.100/53. 3.100 
Input #0, rawvideo, from '/tmp/somagic-pipe': 
    Duration: N/A, start: 0.000000, bitrate: 165722 kb/s 
    Stream #0:0: Video: rawvideo (UYVY/0x59565955), uyvy422, 720x480, 165722 kb/s, 29.97 tbr, 29.97 tbn, 29.97 tbc 
Home directory not accessible: Permission denied 
Guessed Channel Layout for Input Stream #1.0 : stereo 
Input #1, alsa, from 'hw:0,0': 
    Duration: N/A, start: 1423201999.226455, bitrate: 1536 kb/s 
    Stream #1:0: Audio: pcm_s16le, 48000 Hz, 2 channels, s16, 1536 kb/s 
No pixel format specified, yuv422p for H.264 encoding chosen. 
Use -pix_fmt yuv420p for compatibility with outdated media players. 
[Parsed_pan_0 @ 0x21cad60] This syntax is deprecated. Use '|' to separate the list items. 
Single channel layout '1' is interpreted as a number of channels, switch to the syntax '1c' otherwise it will be interpreted as a channel layout number in a later version 
[Parsed_pan_0 @ 0x21cad60] Pure channel mapping detected: 0 
[libx264 @ 0x21f9bc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.1 Cache64 
[libx264 @ 0x21f9bc0] profile High 4:2:2, level 3.1, 4:2:2 8-bit 
[libx264 @ 0x21f9bc0] 264 - core 142 r2389 956c8d8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 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=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0 
Output #0, mp4, to '/home/peterbecich/easycap/Videos/fpv_video_02_05_2015_21_53_18.mp4': 
    Metadata: 
    encoder   : Lavf56.15.102 
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0]/0x0021), yuv422p, 720x540, q=-1--1, 29.97 fps, 11988 tbn, 29.97 tbc 
    Metadata: 
     encoder   : Lavc56.13.100 libx264 
    Stream #0:1: Audio: aac (libfdk_aac) ([64][0][0][0]/0x0040), 96000 Hz, mono, s16, 128 kb/s 
    Metadata: 
     encoder   : Lavc56.13.100 libfdk_aac 
Stream mapping: 
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) 
    Stream #1:0 -> #0:1 (pcm_s16le (native) -> aac (libfdk_aac)) 
Press [q] to stop, [?] for help 
frame= 1 fps=0.0 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=1.0 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.7 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.5 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.4 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.3 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.3 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.2 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.2 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.2 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
frame= 1 fps=0.2 q=0.0 size=  0kB time=00:00:00.00 bitrate=N/A  
[alsa @ 0x21e5ac0] ALSA buffer xrun. 
frame= 8 fps=1.3 q=19.0 size=  12kB time=00:00:06.03 bitrate= 15.9kbits/s  
frame= 23 fps=3.5 q=18.0 size=  12kB time=00:00:06.03 bitrate= 16.4kbits/s  
frame= 38 fps=5.4 q=18.0 size=  12kB time=00:00:06.03 bitrate= 16.7kbits/s  
frame= 53 fps=7.0 q=18.0 size=  12kB time=00:00:06.03 bitrate= 16.9kbits/s  
frame= 68 fps=8.4 q=26.0 size=  146kB time=00:00:06.03 bitrate= 198.8kbits/s  
frame= 83 fps=9.7 q=26.0 size=  375kB time=00:00:06.03 bitrate= 510.0kbits/s  
frame= 98 fps= 11 q=26.0 size=  608kB time=00:00:06.03 bitrate= 826.5kbits/s  
frame= 114 fps= 12 q=26.0 size=  875kB time=00:00:06.03 bitrate=1189.1kbits/s  
frame= 128 fps= 13 q=26.0 size= 1091kB time=00:00:06.03 bitrate=1481.6kbits/s  
frame= 144 fps= 14 q=26.0 size= 1339kB time=00:00:06.03 bitrate=1819.2kbits/s  
frame= 159 fps= 14 q=26.0 size= 1571kB time=00:00:06.03 bitrate=2134.6kbits/s  
frame= 174 fps= 15 q=26.0 size= 1796kB time=00:00:06.03 bitrate=2440.1kbits/s  
[alsa @ 0x21e5ac0] ALSA buffer xrun. 
frame= 189 fps= 16 q=26.0 size= 2015kB time=00:00:12.04 bitrate=1370.4kbits/s  
frame= 204 fps= 16 q=26.0 size= 2238kB time=00:00:12.04 bitrate=1522.3kbits/s  
frame= 219 fps= 17 q=26.0 size= 2490kB time=00:00:12.04 bitrate=1694.2kbits/s  
frame= 235 fps= 17 q=26.0 size= 2728kB time=00:00:12.04 bitrate=1855.8kbits/s  
frame= 250 fps= 18 q=26.0 size= 2973kB time=00:00:12.04 bitrate=2022.4kbits/s  
[rawvideo @ 0x21e5640] Invalid buffer size, packet size 65536 < expected frame_size 691200 
Error while decoding stream #0:0: Invalid argument 
frame= 261 fps= 18 q=-1.0 Lsize= 3269kB time=00:00:12.06 bitrate=2220.1kbits/s  
video:3263kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.081101% 
[libx264 @ 0x21f9bc0] frame I:2  Avg QP:21.50 size: 21342 
[libx264 @ 0x21f9bc0] frame P:259 Avg QP:24.22 size: 12734 
[libx264 @ 0x21f9bc0] mb I I16..4: 100.0% 0.0% 0.0% 
[libx264 @ 0x21f9bc0] mb P I16..4: 62.8% 0.0% 0.0% P16..4: 14.2% 0.0% 0.0% 0.0% 0.0% skip:22.9% 
[libx264 @ 0x21f9bc0] coded y,uvDC,uvAC intra: 77.7% 61.2% 14.1% inter: 19.7% 24.8% 1.6% 
[libx264 @ 0x21f9bc0] i16 v,h,dc,p: 17% 10% 65% 8% 
[libx264 @ 0x21f9bc0] i8c dc,h,v,p: 52% 18% 24% 6% 
[libx264 @ 0x21f9bc0] kb/s:3068.90 

전체 스크립트

#!/bin/sh 

PIPE=/tmp/somagic-pipe 
OUTFILEDIR=~/easycap/Videos/ 
LOGDIR=~/.somagic-log/ 
NOW=`date +"%m_%d_%Y_%H_%M_%S"` 

OUTFILE=${OUTFILEDIR}fpv_video_${NOW}.mp4 

mkdir $LOGDIR 

FFMPEG_LOG=${LOGDIR}ffmpeg.log 
SOMAGIC_LOG=${LOGDIR}somagic.log 
MPLAYER_LOG=${LOGDIR}mplayer.log 

rm $PIPE >/dev/null 2>&1 
rm $OUTFILE >/dev/null 2>&1 

rm $FFMPEG_LOG 
rm $SOMAGIC_LOG 
rm $MPLAYER_LOG 

mkfifo $PIPE >/dev/null 2>&1 

ffmpeg -pixel_format uyvy422 -s:v 720x480 -framerate 29.97 -f rawvideo \ 
-i $PIPE -f alsa -i hw:0,0 -vf scale=w=720:h=540 -vcodec libx264 \ 
-preset ultrafast -shortest -c:a libfdk_aac -b:a 128k -af pan=1:c0=c0 \ 
-ar 96000 $OUTFILE > $FFMPEG_LOG 2>&1 & 

somagic-capture --ntsc -c --luminance=2 --lum-aperture=3 2> $SOMAGIC_LOG \ 
| tee $PIPE | \ 
mplayer -vf yadif,screenshot -demuxer rawvideo -rawvideo \ 
"ntsc:format=uyvy:fps=30000/1001" -aspect 4:3 - 2> $MPLAYER_LOG 


rm $PIPE >/dev/null 2>&1 

여기에서 수정 : https://gist.github.com/Brick85/0b327ac2d3d45e23ed33

답변

8

비디오 입력과 오디오 입력에 -thread_queue_size 1024 옵션을 추가하여이 문제를 해결할 수있었습니다. 전체 내용은 다음과 같습니다.

ffmpeg -f rawvideo -video_size 720x480 -thread_queue_size 1024 \ 
    -pixel_format uyvy422 -framerate 29.97 -i - -f alsa -thread_queue_size 1024 \ 
    -i hw:1 -preset slow -c:v libx264 -aspect 4:3 -strict -2 -y -threads 4 output.mp4 
+0

그랬습니다! 감사! 다른 질문에 대한 귀하의 통찰력은 높이 평가 될 것입니다 : http://stackoverflow.com/questions/31331772/ffmpeg-removes-dead-space-in-video-but-not-audio –

+0

종류의 재미; 몇 달 전에 스레드 대기열 크기를 설정하는 방법을 찾았습니다. 플래그가 여전히 고려되고있는 것처럼 보였습니다. http://comments.gmane.org/gmane.comp.video.ffmpeg.devel/189429 –

1

발견이 글에서 제시하는 바와 같이 두 개의 분리는 FFmpeg 공정을 사용의 부분 용액 : https://trac.ffmpeg.org/ticket/615 특히,이 댓글 : https://trac.ffmpeg.org/ticket/615#comment:13

별도의 오디오 및 비디오 fi 레는 나중에 합쳐 져야합니다. 대담에서는 FFmpeg 및 오디오에

녹화 영상은, 문제를 동기화하기 때문에 유용하지 않았다 여기에 기록 : https://video.stackexchange.com/questions/14809/sync-up-ffmpeg-rawvideo-recording-and-audacity-alsa-recording

는 FFmpeg와 대담 달리 같은 속도로 바라건대이 개는 FFmpeg 프로세스를 기록.

편집 : 두 ffmpeg 프로세스는 아마도 동일한 길이의 두 파일을 생성하지 않을 것입니다. ffmpeg가 비디오에서 데드 스페이스를 자동으로 제거하지만 오디오는 제거하지 않는 것 같습니다.