我的影片缺少初始關鍵影格。因此,當我使用 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
如果您丟失了關鍵圖片,那麼通常預測將被破壞,這意味著其他圖片無法解碼並且播放器將跳過它們。
有多種方法可以處理此問題,具體取決於您的要求。
- 如果您有原始視頻,請附上最新的關鍵圖片前您需要開始播放。
- 如果您有原始視頻,但上述情況不可接受,則您需要重新編碼視頻,以便將關鍵幀定位在比特流的開頭。
- 如果您沒有原始圖像並且關鍵圖像確實丟失且無法恢復,那麼您將無法播放從中預測的圖像 - 解碼它們所需的基本資訊已經消失。
- 您可以將比特流修剪到下一個關鍵影格;這不會更早開始播放,但應該避免開始時的黑色(無法播放)時間。