[FFmpeg-user] framecrc

Mark Filipak markfilipak.imdb at gmail.com
Mon Nov 13 05:33:30 EET 2023


On 11/12/23 04:57, Paul B Mahol wrote:
> On Sun, Nov 12, 2023 at 8:36 AM Mark Filipak <markfilipak.imdb at gmail.com>
> wrote:
> 
>> Previous Subject: "rewrite tags in a source's PES headers -- How?"
>>
>> On 11/11/23 13:41, Paul B Mahol wrote:
>>> On Sat, Nov 11, 2023 at 7:29 PM Mark Filipak <markfilipak.imdb at gmail.com
>>>
>>> wrote:
>>>
>>>> Here's what I'm doing:
>>>> -bsf:v setts=time_base=1/24000:pts=N*1001:dts=N*1001
>>>>
>>>> Here's the result:
>>>> frame  pts                        dts
>>>>   0        0                       2002 <= should be     0
>>>>   1     3003 <= should be  1001    3003 <= should be  1001
>>>>   2     4004 <= should be  2002    4004 <= should be  2002
>>>>   3     2002 <= should be  3003    5005 <= should be  3003
>>>>   4     5005 <= should be  4004    6006 <= should be  4004
>>>>   5     1001 <= should be  5005    7007 <= should be  5005
>>>>   6     8008 <= should be  6006    8008 <= should be  6006
>>>>   7     9009 <= should be  7007    9009 <= should be  7007
>>>>   8     7007 <= should be  8008   10010 <= should be  8008
>>>>   9    10010 <= should be  9009   11011 <= should be  9009
>>>> 10     6006 <= should be 10010   12012 <= should be 10010
>>>> 11    13013 <= should be 11011   13013 <= should be 11011
>>>> 12    12012 <= should be 12012   14014 <= should be 12012
>>>> 13    14014 <= should be 13013   15015 <= should be 13013
>>>> 14    11011 <= should be 14014   16016 <= should be 14014
>>>> 15    17017 <= should be 15015   17017 <= should be 15015
>>>> 16    18018 <= should be 16016   18018 <= should be 16016

Why are the target PTSs out of order?
Why are there no 0 or 1001 DTSs?

>>>> The source video is 'NTSC'-soft.
>>>> Can this be explained?
>>>> Can it be countered?
>>>>
>>>> PTSs in frames 1..5 are +2 +2 -1 +1 -4
>>>> PTSs in frames 6..10 are +2 +2 -1 +1 -4
>>>> PTSs in frames 11..15 are +2 +0 +1 -3 +2
>>>> I'm baffled.
>>>>
>>>
>>> N is packet number, and it goes in different order.
>>
>> Oh, yes, out of order/out of sequence.
>>
>>> Can be confirmed with:
>>>
>>> ffmpeg -i <video> -c copy -f framecrc -
>>
>> Thank you, Paul. Good of you. How do I interpret the framecrc table?
>>
>> stream_index                      packet_duration
>> |  packet_dts                     |     packet_size
>> |  |          packet_pts          |     |      0xCRC
>> |  |________  |_________________  |___  |____  |_________
>> 1          0                   0  2880    768  0xb16c8010
>> 1       2880                2880  2880    768  0x1b728309
>> 1       5760                5760  2880    768  0x966977f8
>> 1       8640                8640  2880    768  0x6e078511
>> 0      10878               22890  3003  62500  0x5877c6d3
>> 1      11520               11520  2880    768  0xe49b880c
>> [framecrc@ 0000000002a9b140] Timestamps are unset ... stream 0 ...
>> 1      14400               14400  2880    768  0x0a217046
>> 0      15382               15382  3003  18300  0xd4f063a2  F=0x0
>> 1      17280               17280  2880    768  0xc13a7e27
>> 0      18385               18385  4504  17924  0x14ae7839  F=0x0
>> 1      20160               20160  2880    768  0x91017a25
>> 0      22890  0x8000000000000000  4504  37160  0xa54ad420  F=0x0
>> 1      23040               23040  2880    768  0xcd087be2
>> 0      25893               25893  4504  18920  0x6230931b  F=0x0
>> 1      25920               25920  2880    768  0xca8a79b6
>> 1      28800               28800  2880    768  0x1d5e7a84
>> 0      30398               30398  3003  17172  0xebbc5af9  F=0x0
>> 1      31680               31680  2880    768  0x1c3e7f7d
>> 0      33401  0x8000000000000000  3003  33636  0x2bf50e31  F=0x0
>> 1      34560               34560  2880    768  0x815d7b63
>> 1      37440               37440  2880    768  0x1ac6762d
>> 0      37905               37905  3003  16144  0x5fabbc96  F=0x0
>> 1      40320               40320  2880    768  0x7e2f8d29
>> 0      40908               40908  4504  14960  0xe0a8abb9  F=0x0
>> 1      43200               43200  2880    768  0x951c8f4c
>> 0      45412  0x8000000000000000  4504  34072  0x6bf61d8c  F=0x0
>> 1      46080               46080  2880    768  0xf42e82a7
>> 0      48415               48415  4504  14788  0xcc5c4f38  F=0x0
>> :          :                   :     :      :           :
>> 0  136171401           136171401  3003  23924  0xe65b80f5  F=0x0
>> 1  136172160           136172160  2880    768  0x3b687c8c
>> 0  136174404  0x8000000000000000  3003  52328  0x7a17da08  F=0x0
>> 0  136178908           136178908  3003  23932  0x5bee6d60  F=0x0
>> 0  136181911           136181911  4504  23452  0xc4a6eb3a  F=0x0
>>
>> Why is the above so different from the packets VOBEdit shows and that I
>> manually parse?
>> I thought all VOB packets were 2048 bytes.
>> Are the packets above a different type of packet?
>>
> Again, lacks of deeper understanding of FFmpeg subject.

So, what are the answers? Does anyone know?

> The above command demuxes all packets, including audio/video/subtitle.

I knew that of course. Stream 0 is video. Stream 1 is audio. There are no subtitles.
The framecrc table makes no sense unless its 'packets' and the source's TS packets are much 
different things. Is the framecrc table from the MP4 muxer instead of from the source frames?

>> The video is 'NTSC'-soft (24/1.001fps). '3003' means ffprobe 'sees'
>> 30/1.001fps.
>> How can I stop the decoder doing telecine?
> 
> No decoder does telecine.

Well, that's good to know. Thanks. So, the library decoders ignore soft telecine, eh?



More information about the ffmpeg-user mailing list