VLC 미디어 플레이어의 초기 키 프레임 누락 문제로 인해 비디오 시작 시 몇 초 동안 빈 화면이 발생함

VLC 미디어 플레이어의 초기 키 프레임 누락 문제로 인해 비디오 시작 시 몇 초 동안 빈 화면이 발생함

초기 키프레임이 누락된 동영상이 있습니다. 따라서 VLC 플레이어로 비디오 파일을 열면 첫 번째 키 프레임까지 화면에 아무 일도 일어나지 않습니다.

예시 사진:https://i.stack.imgur.com/nBYrR.png(최소 10평판 포인트가 필요하기 때문에 질문에 이미지를 추가할 수 없습니다.)

일반적으로 처음 10초 내에 첫 번째 키 프레임을 만나고 비디오 재생이 시작됩니다. 그러면 되감아서 처음 10초도 볼 수 있습니다.

ffprobe를 사용하여 키 프레임 사이의 위치와 시간을 조사했습니다.

ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=print_section=0 5-1601984964095.ts

3610.187967
3620.185489
3630.193133
3640.187944
3650.185311
3660.182822
3670.188500
3680.184133
3690.185078
3700.182911
3710.183367
3720.182778
3730.184022
3740.184567
3750.182689
3760.185767
3770.184700
3780.190100
3790.189033
3800.184422
3810.195578
3820.184767
3830.189644
3840.191533
3850.200800
3860.189211
3870.186956
3880.182989
3890.187878
3900.180167
3910.179522
3920.181411
3930.182022
3940.186422
3950.185778
3960.189856
3970.192444
3980.182833
3990.182367
4000.181000
4010.184000
4020.183622
4030.184178
4040.186367
4050.180144
4060.177833
4070.194067
4080.197444
4090.197700
4100.178944
4110.185444
4120.180544
4130.186956
4140.184967
4150.188178
4160.202444
4170.193300

인코딩 중 비디오 시작 부분에 키프레임을 추가하면 이 문제를 해결할 수 있습니다. 하지만 나에게 필요한 해결책은 동영상을 변경하지 않고 이 문제를 해결하는 것입니다.

내 질문이 문제를 어떻게 해결할 수 있나요? 이 영상은 처음부터 꼭 봐야겠어요! Vlc 플레이어에 첫 번째 키 프레임까지 비디오를 재생하도록 설정이 있습니까? VLC의 모든 설정을 조작했지만 유용한 것을 찾을 수 없었습니다.

편집하다ffprobe -show_streams 5-1601984964095.ts: @gyan이 요청한 명령 의 결과입니다 .

>ffprobe -show_streams 5-1601984964095.ts
ffprobe version N-99830-g112fe0ff19 Copyright (c) 2007-2020 the FFmpeg developers
  built with gcc 9.3-win32 (GCC) 20200320
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-iconv --enable-zlib --enable-libxml2 --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-opencl --enable-libvmaf --disable-vulkan --enable-libvorbis --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --enable-ffnvcodec --enable-cuda-llvm --disable-libglslang --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-libs=-lgomp
  libavutil      56. 60.100 / 56. 60.100
  libavcodec     58.112.101 / 58.112.101
  libavformat    58. 64.100 / 58. 64.100
  libavdevice    58. 11.102 / 58. 11.102
  libavfilter     7. 88.100 /  7. 88.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100
Input #0, mpegts, from '5-1601984964095.ts':
  Duration: 00:09:28.41, start: 3610.187967, bitrate: 1656 kb/s
  Program 1
    Stream #0:0[0x41]: Video: h264 (High 4:2:2) (HDMV / 0x564D4448), yuv422p(tv, bt470bg/smpte170m/bt709, progressive), 720x576 [SAR 1:1 DAR 5:4], 25 fps, 25 tbr, 90k tbn, 50 tbc
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=High 4:2:2
codec_type=video
codec_time_base=1/50
codec_tag_string=HDMV
codec_tag=0x564d4448
width=720
height=576
coded_width=720
coded_height=576
closed_captions=0
has_b_frames=2
sample_aspect_ratio=1:1
display_aspect_ratio=5:4
pix_fmt=yuv422p
level=30
color_range=tv
color_space=bt470bg
color_transfer=bt709
color_primaries=smpte170m
chroma_location=left
field_order=progressive
timecode=N/A
refs=1
is_avc=false
nal_length_size=0
id=0x41
r_frame_rate=25/1
avg_frame_rate=25/1
time_base=1/90000
start_pts=324916917
start_time=3610.187967
duration_ts=51156594
duration=568.406600
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
[/STREAM]

답변1

주요 사진을 잃어버린 경우 일반적으로 예측이 깨집니다. 즉, 다른 사진을 디코딩할 수 없어 플레이어가 해당 사진을 건너뜁니다.

요구 사항에 따라 이를 처리하는 방법에는 여러 가지가 있습니다.

  • 원본 영상이 있는 경우 최신 주요 사진을 포함하세요.~ 전에시작하려면 재생이 필요합니다.
  • 원본 비디오가 있지만 위의 내용이 허용되지 않는 경우 비트 스트림의 시작 부분에 키 프레임을 배치하기 위해 비디오를 다시 인코딩해야 합니다.
  • 원본이 없고 주요 사진이 실제로 복구 불가능하게 손실된 경우 원본에서 예측된 사진을 재생할 수 없습니다. 해당 사진을 디코딩하는 데 필요한 필수 정보가 사라집니다.
  • 다음 키 프레임까지 비트 스트림을 다듬을 수 있습니다. 이렇게 하면 더 일찍 재생이 시작되지 않지만 시작 시 검은색(재생할 수 없는) 시간이 발생하지 않도록 해야 합니다.

관련 정보