VLC has Problems with Joined FLV Videos
Posted: 26 Jun 2011 14:43
There's the following problem:
There are almost no free flv joiners out there. Movica has some serious Audio sync problems with joining variable Framerate FLVs, which are the common FLVs on Youtube.
A good tool is Andy's FLV Joiner.
But, if you join such a newer FLV with Andy's Joiner, VLC is not able to play it correctly.
VLC does display the length correctly. You can also jump in the video to all parts and it plays as it should. But as soon as you let it play over a join boundary, it immediately stops playing the video in thinking that it has finished.
Well, you can say now, that Andy's FLV-Joiner must have an issue. But Andy himself says, his joined FLV-Streams are OK, the error has to be in VLC.
I personally don't know. But other players (like FLVPlayer) are able to play the joined FLVs without any problem. But I would like to play them in VLC, for it's many advantages.
Therefore my question:
Is there any possibility of a fix for this problem?
I would guess, that it would only need a very small change somewhere. For except at these join boundardies, the file plays completely OK.
My personal guess is, that it has to do with problems of the different audio/video start-/endtimes at the join boundaries.
Edit:
Btw. this is the Debug output, when VLC gets on a joining boundary and stops playing:
The big question is: What exactly is it, that makes VLC think the video has ended? If one would know that, one could maybe also just make corrections on the FLV file itself...
There are almost no free flv joiners out there. Movica has some serious Audio sync problems with joining variable Framerate FLVs, which are the common FLVs on Youtube.
A good tool is Andy's FLV Joiner.
But, if you join such a newer FLV with Andy's Joiner, VLC is not able to play it correctly.
VLC does display the length correctly. You can also jump in the video to all parts and it plays as it should. But as soon as you let it play over a join boundary, it immediately stops playing the video in thinking that it has finished.
Well, you can say now, that Andy's FLV-Joiner must have an issue. But Andy himself says, his joined FLV-Streams are OK, the error has to be in VLC.
I personally don't know. But other players (like FLVPlayer) are able to play the joined FLVs without any problem. But I would like to play them in VLC, for it's many advantages.
Therefore my question:
Is there any possibility of a fix for this problem?
I would guess, that it would only need a very small change somewhere. For except at these join boundardies, the file plays completely OK.
My personal guess is, that it has to do with problems of the different audio/video start-/endtimes at the join boundaries.
Edit:
Btw. this is the Debug output, when VLC gets on a joining boundary and stops playing:
Right at the beginning is the suspicious "EOF reached". So it seems that due to some special reason VLC thinks the video has finished and stops playing. So I really think it can only be a small issue to correct.main debug: EOF reached
main debug: finished input
main debug: thread times: real 1m34.000000s, kernel 0m0.031250s, user 0m3.953125s
avcodec debug: ffmpeg codec (H264 - MPEG-4 AVC (part 10)) stopped
main debug: removing module "avcodec"
main debug: killing decoder fourcc `h264', 0 PES in FIFO
main debug: [0] 4 0
main debug: [1] 4 0
main debug: [2] 4 0
main debug: [3] 4 0
main debug: [4] 4 0
main debug: [5] 4 0
main debug: [6] 2 0
main debug: [7] 4 0
main debug: [8] 4 0
main debug: [9] 4 0
main debug: [10] 4 0
main debug: [11] 4 0
main debug: [12] 4 0
main debug: [13] 4 0
main debug: [14] 4 0
main debug: saving a free vout
main debug: thread times: real 1m34.000000s, kernel 0m0.000000s, user 0m0.093750s
main debug: removing module "faad"
main debug: killing decoder fourcc `mp4a', 0 PES in FIFO
main debug: removing module "scaletempo"
main debug: removing module "bandlimited_resampler"
aout_directx debug: closing audio device
aout_directx debug: DirectSoundThread exiting
main debug: thread ended
main debug: thread times: real 1m34.015625s, kernel 0m0.109375s, user 0m0.140625s
main debug: removing module "aout_directx"
main debug: removing module "converter_float"
main debug: removing module "float32_mixer"
main debug: releasing aout
main debug: removing module "avformat"
main debug: removing module "stream_filter_record"
main debug: removing module "access_file"
main debug: Program doesn't contain anymore ES
main debug: thread ended
main debug: dead input
main debug: thread times: real 1m34.078125s, kernel 0m0.125000s, user 0m0.156250s
main debug: changing item without a request (current 0/1)
main debug: nothing to play
main debug: destroying useless vout
vout_directx debug: DirectXCloseSurface
vout_directx debug: DirectXCloseDisplay
vout_directx debug: DirectXCloseDisplay clipper
vout_directx debug: DirectXCloseDisplay display
vout_directx debug: DirectXCloseDDraw
vout_directx debug: DirectXEventThread terminating
vout_directx debug: DirectXCloseWindow
vout_directx debug: WinProc WM_DESTROY
qt4 debug: releasing video...
qt4 debug: IM: Deleting the input
qt4 debug: Updating the geometry
qt4 debug: Updating the geometry
qt4 debug: Qt: Entering Fullscreen
qt4 debug: Video is not needed anymore
qt4 debug: Updating the geometry
main debug: removing module "qt4"
main debug: thread ended
main debug: thread times: real 1m34.125000s, kernel 0m0.000000s, user 0m0.000000s
main debug: removing module "vout_directx"
The big question is: What exactly is it, that makes VLC think the video has ended? If one would know that, one could maybe also just make corrections on the FLV file itself...