[FFmpeg-user] help time shifting frame time stamps for generated mpegts files

Mark Essel messel at gmail.com
Fri Mar 15 15:08:42 CET 2013


I got a solution, I ended up writing some code:
https://github.com/victusfate/mpegtsShifter/blob/master/shifter.cc


On Fri, Mar 15, 2013 at 7:21 AM, Mark Essel <messel at gmail.com> wrote:
> update, it appears the time stamps of mpegts are not being read properly
>
> all ouptuts, and command lines
> https://gist.github.com/victusfate/5169087
>
> the following works as intended:
> ffmpeg -loglevel debug -i s2.ts -filter:v 'setpts=900000+PTS-STARTPTS'
> -qscale 0 s2_shift.avi
>
> ffmpeg -loglevel debug -i s2.ts -filter:v 'setpts=900000+PTS-STARTPTS'
> -qscale 0 s2_shift.ts generates odd time stamps, 1.4 through 21.4
> seconds
>
> also Duration: 00:00:19.96, start: 1.400000, bitrate: 11990 kb/s is
> incorrect for the source which has timestamps from 0-9.958333 (I'll
> attach those on the end)
>
>
> original mpegts source probed time stamps are 0-9.958333
>
> yet early on in the command I see
>   Duration: 00:00:19.96, start: 1.400000, bitrate: 11990 kb/s
>
>
> [mpegts @ 0x7ffccc020c00] max_analyze_duration 5000000 reached at 5000000
> Input #0, mpegts, from 's2_shift.ts':
>   Duration: 00:00:19.96, start: 1.400000, bitrate: 11990 kb/s
>   Program 1
>     Metadata:
>       service_name    : Service01
>       service_provider: FFmpeg
>     Stream #0:0[0x100]: Video: mpeg2video (Main) ([2][0][0][0] /
> 0x0002), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 24 fps, 24 tbr, 90k
> tbn, 48 tbc
>
>
> On Thu, Mar 14, 2013 at 3:43 PM, Mark Essel <messel at gmail.com> wrote:
>> I've tried to edit the time stamps directly with ffmpeg setpts filter
>>
>>   ffmpeg -i s100k_seg2_orig.ts -filter:v 'setpts=120+PTS' -f mpegts output.ts
>>
>> but the output file times are always 1.4s to segment file duration+1.4s
>>
>> if I convert the file to avi format, then apply the filter it works as
>> expected. I can then convert this avi file back into mpegts format but
>> it has it's times reset to 1.4s to segment file duration + time shift
>>
>> the goal is to generate mpegts files on various servers and then load
>> them into a VOD m3u8 container. With only relative time stamps stream
>> playback has many issues (more over 3g). If instead all the files are
>> merged together into one large video and then segmented into mpegts
>> the time stamps are all contiguous and playback is smooth
>>
>> ---
>>
>> As an alternate route I'm attempting to edit an old segment.c example
>> program I came across online. I've got it to compile by updating the
>> api calls, but it's seg faulting at the point where it tries to write
>> the new output format context header. My hopes with the c code is to
>> manually specify pts and dts times
>>
>> pkt_pts_time=ShiftTime
>> pkt_dts_time=ShiftTime
>> pkt_duration_time=1 / fps
>>
>> pkt_pts_time=ShiftTime + dT
>> pkt_dts_time=ShiftTime + dT
>> pkt_duration_time=1 / fps
>>
>> ...
>>
>> Any help is appreciated.
>>
>>
>> ref:
>> http://stackoverflow.com/questions/9598973/ffmpeg-transcoding-reset-the-start-time-of-file


More information about the ffmpeg-user mailing list