使用ffmpeg将原始bayer_rggb8帧编码为视频

问题描述 投票:0回答:1

我有一些工业相机以原始bayer_rggb8格式记录和输出帧。帧的大小为1920x1080,以〜90fps拍摄。我不想从中创建视频(格式无关紧要,但最好是x264编码的mp4)。我的帧以frame-00001.rawframe-00002.raw等形式保存在文件系统中。时不时有一个空文件。

我可以使用以下命令将单个图像转换为PNG:

ffmpeg -f image2 -c:v rawvideo -pix_fmt bayer_rggb8 -s:v 1920x1080 -i frame-00400.raw output.png

但是当我尝试使用以下命令将其编码为视频时:

ffmpeg -f image2 -c:v rawvideo -pix_fmt bayer_rggb8 -s:v 1920x1080 -r 90 -i frame-%05d.raw -c:v libx264 output.mp4

我得到此控制台输出:

Input #0, image2, from 'frame-%05d.raw':
  Duration: 00:00:05.26, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo ([186]RG[8] / 0x84752BA), bayer_rggb8, 1920x1080, 90 tbr, 90 tbn, 90 tbc
File 'output.mp4' already exists. Overwrite ? [y/N] y
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x7fe5c400a200] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x7fe5c400a200] profile High 4:4:4 Predictive, level 5.1, 4:4:4 8-bit
[libx264 @ 0x7fe5c400a200] 264 - core 155 r2917 0a84d98 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 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=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv444p, 1920x1080, q=-1--1, 90 fps, 11520 tbn, 90 tbc
    Metadata:
      encoder         : Lavc58.54.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=    0 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.00 bitrate=N/A speed=   0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

文件大262bytes,cat output.mp4返回此:

ftypisomisomiso2avc1mp4fremdat�moovlmvhd�@budtaZmeta!hdlrmdirappl-ilst%�toodataLavf58.29.100%

我无法真正发现问题。在MacOS Catalina和Ubuntu 16.04上均会发生。

video ffmpeg command-line-interface
1个回答
1
投票

所以,关键是每时每刻都有一个空文件。前32帧是空的,因此添加非空文件的起始索引(-start_number 33)解决了该问题:

ffmpeg -f image2 -c:v rawvideo -pix_fmt bayer_rggb8 -s:v 1920x1080 -r 90 -start_number 33 -i frames/frame-%05d.raw -c:v libx264 output.mp4
© www.soinside.com 2019 - 2024. All rights reserved.