FFmpeg编码视频无法在Azure Kinect Viewer播放的求助
Azure Kinect编码视频无法在Viewer播放的问题排查与解决
问题描述
通过Azure Kinect SDK捕获视频,使用MKVToolNIX提取RGB轨道后,该轨道可在Azure Kinect Viewer v1.4.1中正常播放。但执行FFmpeg命令ffmpeg -i .\RGB.mkv -c:v libx264 -preset veryfast -crf 18 -c:a aac -b:a 128k RGG_Enc.mkv编码后,视频无法在Viewer中打开,提示“Failed to open Recording”。尝试过H.264、H.265、VP9、VP10、MJPEG等多种编解码器及参数组合,均未解决问题。
原视频FFprobe输出
C:\Users\Ashutosh\Desktop\RGB_Encoding> ffprobe -i .\RGB.mkv ffprobe version 6.0-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers built with gcc 12.2.0 (Rev10, Built by MSYS2 project) configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint libavutil 58. 2.100 / 58. 2.100 libavcodec 60. 3.100 / 60. 3.100 libavformat 60. 3.100 / 60. 3.100 libavdevice 60. 1.100 / 60. 1.100 libavfilter 9. 3.100 / 9. 3.100 libswscale 7. 1.100 / 7. 1.100 libswresample 4. 10.100 / 4. 10.100 libpostproc 57. 1.100 / 57. 1.100 [matroska,webm @ 0000018ef5f4e240] Could not find codec parameters for stream 1 (Attachment: none): unknown codec Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options Input #0, matroska,webm, from '.\RGB.mkv': Metadata: title : Azure Kinect encoder : libebml v1.4.4 + libmatroska v1.7.1 creation_time : 2023-08-04T11:52:43.000000Z Duration: 00:00:40.03, start: 0.033000, bitrate: 126708 kb/s Stream #0:0(eng): Video: mjpeg (Baseline) (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 2048x1536, SAR 1:1 DAR 4:3, 30 fps, 30 tbr, 1k tbn (default) Metadata: title : COLOR BPS : 126696930 DURATION : 00:00:40.029000000 NUMBER_OF_FRAMES: 1201 NUMBER_OF_BYTES : 633943931 _STATISTICS_WRITING_APP: mkvmerge v76.0 ('Celebration') 64-bit _STATISTICS_WRITING_DATE_UTC: 2023-08-04 11:52:43 _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES Stream #0:1: Attachment: none Metadata: filename : calibration.json mimetype : application/octet-stream Unsupported codec with id 0 for input stream 1
解决建议
- 保留关键元数据与校准附件:Azure Kinect Viewer依赖原视频中的
calibration.json附件和特定元数据识别文件,FFmpeg默认不会保留这些内容。使用以下命令编码,确保保留必要数据:
说明:采用与原视频一致的MJPEG编码,禁用音频(原视频无音频流),附加校准文件并设置对应元数据。ffmpeg -i .\RGB.mkv -c:v mjpeg -q:v 2 -an -attach ".\calibration.json" -metadata:s:t mimetype=application/octet-stream -metadata title="Azure Kinect" -metadata:s:v:0 title="COLOR" Encoded_RGB.mkv - 匹配时间基准与帧率:原视频时间基准为
1/1000,帧率30fps,编码时添加参数确保一致,避免时间戳不兼容:ffmpeg -i .\RGB.mkv -c:v mjpeg -q:v 2 -an -r 30 -time_base 1/1000 -attach ".\calibration.json" -metadata:s:t mimetype=application/octet-stream -metadata title="Azure Kinect" -metadata:s:v:0 title="COLOR" Encoded_RGB.mkv - 优先使用MKVToolNIX封装:若仅需压缩或重新封装,MKVToolNIX会保留原始元数据和附件,更适配Azure Kinect的格式要求,避免FFmpeg的元数据丢失问题。
- 避免添加多余轨道:原视频无音频流,不要强制添加AAC音频,否则会导致Viewer识别异常,编码时用
-an参数禁用音频。
内容的提问来源于stack exchange,提问作者Ashutosh Singla
相关产品推荐
相关产品推荐

