[FFmpeg-user] Deinterlace and change framerate with -vcodec copy
pbasista at gmail.com
Sat May 21 15:17:10 CEST 2011
>> Hello everyone!
>> I would like ask for an advice.
>> I have some mpegts files captured from DVB card.
>> They contain some video streams and some audio streams.
>> I know how to extract the streams from the mpegts file
>> and how to use them to create a mkv file, for example.
>> I do it like this:
>> ffmpeg -i DVBchannel.mpegts -vcodec copy -acodec copy movie.mkv
>> But I have a problem with the resulting file. The original
>> video streams (in file DVBchannel.mpegts) are interlaced at 50fps.
> No, I very much doubt that is true. There are no DVB broadcasters that I
> know of which transmit at 100 fields per second, which is what you are
> implying. Please supply the output of "ffmpeg -i DVBchannel.mpegts"
Okay, I am sorry, you are right. I have posted something
that is definitely confusing.
I should have written 50 fields per second, not frames per second.
By "interlaced at 50fps" I was trying to tell that the video contains
50 fields (or half frames) per second. But I did not know about
the difference between frames and fields before you replied.
So, thank you for pointing that out.
You wanted me to post output from ffmpeg -i DVBchannel.mpegts, so here it is:
Seems stream 0 codec frame rate differs from container frame rate:
50.00 (50/1) -> 50.00 (50/1)
Input #0, mpegts, from 'DVBchannel.mpegts':
Duration: 01:23:55.58, start: 54068.412678, bitrate: 5916 kb/s
Stream #0.0[0x44d]: Video: h264 (Main), yuv420p, 1440x1080 [PAR
4:3 DAR 16:9], 55.22 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x44e](cze): Audio: mp2, 48000 Hz, stereo, s16, 192 kb/s
I have reformulated the remaining part of my original email, so I repost it.
I want the final file to play as simply as possible
(e.g. without the deinterlace filters), so I would like to deinterlace
the video in advance. But I assume it is not possible with -vcodec copy.
Or am I mistaken?
My point here is that I do not want to reencode the video "just"
to deinterlace it. I want to do it as simply as possible, utilizing
as much previous encoding work as possible. But as far as I know,
it is necessary to completely reencode the video in order to
use the deinterlace filters. Am I correct?
To my knowledge, the deinterlace filters just somehow
combine the fields (half frames) together, but they do not change
the framerate. So, my first question is: Is there a video codec
for which it is possible to deinterlace video with -vcodec copy?
I would really appreciate if it would be possible for h264.
And my second question is about the framerate itself.
Let's say I have managed to get a 25fps noninterlaced file movie.mkv.
Is there any "easy" way to change the framerate to 24fps?
By "easy" I mean without reencoding (or: with -vcodec copy).
This, in my opinion, should be possible, because it seems like
a rather minor change. Here I would like to emphasize that
what I want to change is the framerate, not the number of frames.
So, I expect the video to be longer (take more time to play)
after such a framerate change. Here:
the author mentions that such a framerate change
is referred to as "conforming".
I tried the intermediate rawvideo format method described
on the mentioned website, but it is of no use for me,
because it requires reencoding. I would really like to do it
with -vcodec copy. Is is possible? If it is, which codecs
allow for framerate changes like this? Does h264 support it?
Thank you for your time.
More information about the ffmpeg-user