无法使用ffmpeg播放录制的视频和音频

维杰·雷克什(Vijay Rakesh)

我试图在单独的文件中每40毫秒生成一次视频和音频,并将其发送到云中进行实时流传输,但是创建的视频和音频无法使用ffplay播放。

命令:

ffmpeg -f alsa -thread_queue_size 1024 -i hw:0 -f video4linux2 -i / dev / video0 -c:a aac -ar 48k -t 0:10 -segment_time 00:00.04 -f segment sample-%003d.aac -c :v h264 -force_key_frames“ expr:gte(t,n_forced * 0.04)” -pix_fmt yuv420p -s:v 640x480 -t 0:10 -r 25 -g 1 -segment_time 00:00.04 -f segment frame-%003d.h264

错误:

frame-001.h264:处理输入时发现无效数据。

控制台输出:

配置:--prefix = / usr --extra-version = 0ubuntu0。2 --toolchain =强化--libdir = / usr / lib / x86_64-linux-gnu --incdir = / usr / include / x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample- -enable-avisynth --enable-nutnuts --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig- -enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse- -enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis- -enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx--enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7。 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100输入流#0.0的猜测通道布局:立体声输入#0,alsa,来自'hw :0':持续时间:不适用,开始:1610338632.931406,比特率:1536 kb / s流#0:0:音频:pcm_s16le,48000 Hz,立体声,s16,1536 kb / s输入#1,video4linux2,v4l2,来自'/ dev / video0':持续时间:不适用,开始:3405.427360,比特率:147456 kb / s流#1:0:视频:rawvideo(YUY2 / 0x32595559),yuyv422、640x480、147456 kb / s,30 fps,30 tbr,1000k tbn,1000k tbc流映射:流#0:0->#0:0(pcm_s16le(native)-> aac(本地))
流#1:0->#1:0(rawvideo(本机)-> h264(libx264))按[q]停止,按[?]寻求帮助[alsa @ 0x55777d96fe00] ALSA缓冲区xrun。[段@ 0x55777d983d80]打开“ sample-000.aac”以将输出#0段写入“ sample-%003d.aac”:元数据:编码器:Lavf57.83.100流#0:0:音频:aac(LC) ,48000 Hz,立体声,fltp,128 kb / s元数据:使用cpu功能的编码器:Lavc57.107.100 aac [libx264 @ 0x55777d98fa20]:MMX2 SSE2Fast SSSE3 SSE4.2 [libx264 @ 0x55777d98fa20]配置文件高,级别3.0 [libx264 @ 0x55777d98fa20] 264

  • 核心152 r2854 e9a5903-H.264 / MPEG-4 AVC编解码器-Copyleft 2003-2017- http://www.videolan.org/x264.html-选项:cabac = 1 ref = 1解块= 1:0:0分析= 0x3:0x113 me =十六进制subme = 7 psy = 1 psy_rd = 1.00:0.00 mixed_ref = 0 me_range = 16 chroma_me = 1网格= 1 8x8dct = 1 cqm = 0死区= 21,11 fast_pskip = 1 chroma_qp_offset = -2线程= 6 lookahead_threads = 1 sliced_threads = 0 nr = 0抽取= 1隔行扫描= 0 bluray_compat = 0 constrained_intra = 0 bframes = 0 weightp = 0 keyint = 1 keyint_min = 1 scenecut = 40 intra_refresh = 0 rc = crf mbtree = 0 crf = 23.0 qcomp = 0.60 qpmin = 0 qpmax = 69 qpstep = 4 ip_ratio = 1.40 aq = 1:1.00 [segment @ 0x55777d98dda0]打开'frame-000.h264'将输出#1分段写入'frame-%003d.h264':元数据:编码器:Lavf57.83.100流#1:0:视频:h264(libx264),yuv420p,640x480,q = -1--1,25 fps,25 tbn,25 tbc元数据:编码器:Lavc57.107.100 libx264辅助数据:cpb:比特率最大/最小/平均:0/0/0缓冲区大小:0 vbv_delay:-1 [段@ 0x55777d983d80]打开'sample-001.aac'进行写作[段@ 0x55777d98dda0]打开'frame-001.h264'进行写作[段@ 0x55777d98dda0]打开'frame-002.h264'进行写作[段@ 0x55777d98dda0]打开'frame-003.h264'进行写入[段@ 0x55777d98dda0]打开'frame-004.h264'进行写入[段@ 0x55777d98dda0]打开'frame-005.h264'进行写入[segment @ 0x55777d98dda0]打开'frame -006.h264'用于编写dup = 1下降= 0速度= 1.07x ... [segment @ 0x55777d98dda0]打开'frame-018.h264'用于编写dup = 5下降= 0速度= 0.714x ...用于写作[segment @ 0x55777d98dda0]打开'frame-003.h264'用于写作[segment @ 0x55777d98dda0]打开'frame-004.h264'用于写作[segment @ 0x55777d98dda0]打开'frame-005.h264'用于写作[segment @ 0x55777d98dda0]打开'frame-006.h264'进行写入dup = 1 drop = 0速度= 1.07x ... [segment @ 0x55777d98dda0]打开'frame-018.h264'进行写入A dup = 5 drop = 0速度= 0.714x ...用于写作[segment @ 0x55777d98dda0]打开'frame-003.h264'用于写作[segment @ 0x55777d98dda0]打开'frame-004.h264'用于写作[segment @ 0x55777d98dda0]打开'frame-005.h264'用于写作[segment @ 0x55777d98dda0]打开'frame-006.h264'进行写入dup = 1 drop = 0速度= 1.07x ... [segment @ 0x55777d98dda0]打开'frame-018.h264'进行写入A dup = 5 drop = 0速度= 0.714x ...
    [段@ 0x55777d98dda0]打开'frame-029.h264'进行写入dup = 12 drop = 0速度= 0.768x ... [段@ 0x55777d98dda0]打开'frame-042.h264'进行写入A dup = 21 drop = 0速度= 0.834x ... [segment @ 0x55777d983d80]打开'sample-055.aac'进行写入A dup = 31 drop = 0 speed = 0.89x ... [segment @ 0x55777d98dda0]打开'frame-067.h264'进行写入A dup = 39下降= 0速度= 0.887x ... [段@ 0x55777d98dda0]打开'frame-081.h264'进行写入dup = 49下降= 0速度= 0.92x ... [段@ 0x55777d98dda0]打开'frame-091 .h264'用于编写dup = 56 drop = 0速度= 0.904x ... [段@ 0x55777d98dda0]打开'frame-105.h264'用于编写dup = 66 drop = 0速度= 0.927x ... [segment @ 0x55777d98dda0 ]打开'frame-119.h264'进行写入dup = 76 drop = 0 speed = 0.944x ...[段@ 0x55777d98dda0]打开'frame-130.h264'进行写入dup = 84 drop = 0速度= 0.938x ... [段@ 0x55777d98dda0]打开'frame-144.h264'进行写入A dup = 94 drop = 0速度= 0.952x ... [segment @ 0x55777d983d80]打开'sample-154.aac'进行写入A dup = 103 drop = 0 speed = 0.958x ... [segment @ 0x55777d98dda0]打开'frame-168.h264'进行写入A dup = 111下降= 0速度= 0.952x ... [段@ 0x55777d98dda0]打开'frame-182.h264'进行写入dup = 121下降= 0速度= 0.962x ... [段@ 0x55777d98dda0]打开'frame-193 .h264'用于编写dup = 129 drop = 0速度= 0.956x ... [段@ 0x55777d98dda0]打开'frame-207.h264'用于编写dup = 139 drop = 0速度= 0.965x ... [segment @ 0x55777d983d80 ]打开“ sample-218.aac”进行写入dup = 149 drop = 0 speed = 0.974x ...[segment @ 0x55777d98dda0]打开'frame-231.h264'进行写作dup = 156 drop = 0 speed = 0.964x ... [segment @ 0x55777d98dda0]打开'frame-249.h264'进行写作= 250 fps = 24 q = -1.0 Lsize = N / A时间= 00:00:10.00比特率= N / A dup = 168下降= 0速度= 0.98x
    视频:2707kB音频:149kB字幕:0kB其他流:0kB全局标头:0kB混合开销:未知[aac @ 0x55777d98cf00] Qavg:260.500 [libx264 @ 0x55777d98fa20]帧I:250平均QP:26.77大小:11085 [libx264 @ 0x55777d98fa20] mb I I16..4:13.4%72.3%14.3%[libx264 @ 0x55777d98fa20] 8x8转换内部:72.3%[libx264 @ 0x55777d98fa20]编码为y,uvDC,uvAC内部:54.2%91.6%64.5%[libx264 @ 0x55777d98fa20] i16 v ,h,dc,p:13%18%6%62%[libx264 @ 0x55777d98fa20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:19%18%16%6%7%6 %12%5%10%[libx264 @ 0x55777d98fa20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:28%18%11%6%8%8%8%10%5%6%[ libx264 @ 0x55777d98fa20] i8c dc,h,v,p:58%20%15%7%[libx264 @ 0x55777d98fa20] kb / s:2216.90
出租

使用-f stream_segment(或别名-f ssegment)。文档中

stream_segmentsegment用于写入流输出格式(即不需要全局标头)复用器的一种变体,建议用于输出到MPEG传输流段等。ssegment是的较短别名stream_segment

示例命令:

ffmpeg -f alsa -thread_queue_size 1024 -i hw:0 -f video4linux2 -i /dev/video0 -c:a aac -ar 48k -t 0:10 -segment_time 00:00.04 -f stream_segment sample-%003d.aac -c:v h264 -force_key_frames "expr:gte(t,n_forced*0.04)" -pix_fmt yuv420p -s:v 640x480 -t 0:10 -r 25 -g 1 -segment_time 00:00.04 -f stream_segment frame-%003d.h264

但是,您的输出持续时间太短,可能无法播放它们,但这是一个完全不同的主题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章