2015-02-06 101 views
2

我試圖在Ubuntu上通過EasyCap USB棒和主板的聲音線路將一些舊的Video 8磁帶傳輸到我的電腦。我相信下面正確地列出了兩個獨立的視頻流,並將它們編碼到輸出MP4文件中。在ffmpeg捕獲中由低質量源引起的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

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的檢測ALSA流通過磁帶的不一致是貌似瘋玩起來。在故障情況下,輸出MP4中只有短片的磁帶音頻。輸出文件的音頻比特率小於10 kbps,在整個文件中平均出來。輸出視頻似乎很好,即使在下面的失敗情況下每秒鐘的低幀數。

音頻和視頻流可以在發生源錯誤之前的短時間內被捕獲,這提供了成功案例日誌。故障情況日誌是通過故意在源碼流中產生錯誤而創建的 - 打開相機會產生一個短暫的噪音信號。

即使磁帶空白或有噪音,是否需要強制ffmpeg記錄音頻流?

難道是libfdk_aac音頻編碼器被低質量的源絆倒?

相關行; rawvideo流在底部管道輸送到這個腳本:

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 

ar論據是一個企圖迫使記錄。

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登錄失敗;低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 – 2015-07-10 03:16:58

+0

有趣的;我在幾個月前尋找了一種設置線程隊列大小的方法,並且在該標誌仍在考慮之時:http://comments.gmane.org/gmane.comp.video.ffmpeg.devel/189429 – 2015-07-10 03:19:58

1

發現在使用兩個單獨的ffmpeg處理的部分解決方案,因爲在這個線程建議:https://trac.ffmpeg.org/ticket/615 具體來說,這個評論:https://trac.ffmpeg.org/ticket/615#comment:13

獨立的音頻和視頻fi稍後,les必須放在一起。

在無畏的ffmpeg和錄音錄像是不是因爲同步的問題是有用的,寫在這裏: https://video.stackexchange.com/questions/14809/sync-up-ffmpeg-rawvideo-recording-and-audacity-alsa-recording

希望以相同的速度兩個ffmpeg的過程記錄,不像FFMPEG和勇氣。

編輯:兩個ffmpeg進程可能不會生成兩個相同長度的文件。似乎ffmpeg會自動從視頻中去除死空間,但不會去除音頻。