[英]Make GStreamer correctly read FLV files with corrupt video info
我有一組要使用 GStreamer 播放的 FLV 文件。 所有文件都有不正確的標頭/元數據,如下所示:
https://drive.google.com/file/d/1FcKbYd2-D7ZiIG5VpRxpbqshCixp8iaR/view?usp=sharing
VLC 和 ffplay 都能夠使用它們的特殊魔法播放這個文件。 盡管 Mediainfo 顯示了該文件的截斷視頻信息:
Video
Format : AVC
Format/Info : Advanced Video Codec
Codec ID : 7
Duration : 12 s 633 ms
Frame rate mode : Constant
Frame rate : 60.000 FPS
Bit depth : 8 bits
對於正確的文件,至少有格式配置文件和級別。
gst-discoverer-1.0
根本不想檢測視頻流:
Properties:
Duration: 0:00:00.116000000
Seekable: yes
Live: no
container: Flash
audio: MPEG-4 AAC
Stream ID: a72c1038e0bf52d7668cb945588d7bca2547bd58212aa7f08db439aeadfcbd95/audio
Language: <unknown>
Channels: 2 (front-left, front-right)
Sample rate: 48000
Depth: 32
Bitrate: 0
Max bitrate: 0
video: H.264
Stream ID: (NULL)
Width: 0
Height: 0
Depth: 0
Frame rate: 0/1
Pixel aspect ratio: 1/1
Interlaced: false
Bitrate: 0
Max bitrate: 0
gst-play-1.0
啟動,但顯示錯誤且不顯示預覽:
gst-play-1.0.exe "C:\Users\me\Downloads\custom.flv"
Press 'k' to see a list of keyboard shortcuts.
Now playing C:\Users\me\Downloads\custom.flv
WARNING No decoder available for type 'video/x-h264, stream-format=(string)avc, codec_data=(buffer)000000016742c020da014016ec0440000003004000001e03c60ca80000000168ce3c80'.
WARNING debug information: ../gst/playback/gsturidecodebin.c(960): unknown_type_cb (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0
Redistribute latency...
0:00:12.6 / 0:00:12.6
Reached end of play list.
我正在尋找任何方法來讓 GStreamer 正確播放此類文件(也許有一些插件允許這樣做?)或修復視頻標題。
使用 FFMPEG 重新混合您的視頻文件:
ffmpeg -i custom.flv -c:v copy -c:a copy fixed.flv
問題出在視頻標題中。 為了生成標題,我使用了 FFmpeg 編碼器返回的額外數據。 但是標頭不僅僅是額外的數據,它應該按照 ISO/IEC-14496-15 標准生成為AVCDecoderConfigurationRecord
結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.