ffmpeg demux into audio and video resets start_pts and start_time

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ffmpeg demux into audio and video resets start_pts and start_time

Mukund Manikarnike
*Demuxing*

I am demuxing TS segments into audio and video as follows.

ffmpeg -y -i input.ts -vcodec copy -an output_video.ts
ffmpeg -y -i input.ts -acodec copy -vn output_audio.aac

*Inspecting Input*

The `start_pts` and `start_time` on `input.ts` are as shown below. I was
able to inspect these values using `ffprobe -show_streams -print_format
json input.ts`

"start_pts": 8306558438,
"start_time": "92295.093756",

*Inspecting output video*

The output .ts has some default `start_pts` and `start_time` values as
shown below. These were also obtained using the same `ffprobe` command as
indicated above.

"start_pts": 126000,
"start_time": "1.400000",

*Inspecting output audio*

The same `ffprobe` command on `output_audio.aac` shows that the output aac
has invalid `codec_tag` and `codec_tag_string` as shown below. The
`start_pts` and `start_time` are not present in the `output_audio.aac`.

"codec_tag_string": "[0][0][0][0]", (should have been [15][0][0][0])
"codec_tag": "0x0000", (should have been 0xf000)

*Questions*

1. Wondering if this difference in the `start_pts`, `start_time`,
`codec_tag` is expected?
2. If it is expected, what can I do to ensure that the all of these
parameters get retained on the output?
3. If it is not expected, is there some more information I can share to
track this down?

logs for ffmpeg -y -i input.ts -vcodec copy -an output_video.ts -acodec
copy -vn output_audio.aac are as shown below.

    ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers
      built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
      configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2
--enable-shared --enable-pthreads --enable-version3
--enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags=
--host-ldflags= --enable-gpl --enable-ffplay --enable-frei0r
--enable-libass --enable-libfdk-aac --enable-libfreetype
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb
--enable-libopus --enable-librtmp --enable-libspeex --enable-libtheora
--enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
--enable-opencl --enable-videotoolbox --disable-lzma --enable-libopenjpeg
--disable-decoder=jpeg2000
--extra-cflags=-I/usr/local/Cellar/openjpeg/2.3.0/include/openjpeg-2.3
--enable-nonfree
      libavutil      56. 14.100 / 56. 14.100
      libavcodec     58. 18.100 / 58. 18.100
      libavformat    58. 12.100 / 58. 12.100
      libavdevice    58.  3.100 / 58.  3.100
      libavfilter     7. 16.100 /  7. 16.100
      libavresample   4.  0.  0 /  4.  0.  0
      libswscale      5.  1.100 /  5.  1.100
      libswresample   3.  1.100 /  3.  1.100
      libpostproc    55.  1.100 / 55.  1.100
    [mpegts @ 0x7f88ed803000] start time for stream 0 is not set in
estimate_timings_from_pts
    Input #0, mpegts, from 'i7h9456s_media_46185.ts':
      Duration: 00:00:06.05, start: 86216.852667, bitrate: 2898 kb/s
      Program 1
        Stream #0:0[0x102]: Data: timed_id3 (ID3  / 0x20334449)
        Stream #0:1[0x100]: Video: h264 (Constrained Baseline)
([27][0][0][0] / 0x001B), yuv420p(tv, smpte170m, progressive), 640x360 [SAR
1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
        Stream #0:2[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100
Hz, stereo, fltp, 190 kb/s
    Output #0, mpegts, to '../output_video.ts':
      Metadata:
        encoder         : Lavf58.12.100
        Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] /
0x001B), yuv420p(tv, smpte170m, progressive), 640x360 [SAR 1:1 DAR 16:9],
q=2-31, 29.97 fps, 29.97 tbr, 90k tbn, 90k tbc
    Output #1, adts, to '../output_audio.aac':
      Metadata:
        encoder         : Lavf58.12.100
        Stream #1:0: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz,
stereo, fltp, 190 kb/s
    Stream mapping:
      Stream #0:1 -> #0:0 (copy)
      Stream #0:2 -> #1:0 (copy)
    Press [q] to stop, [?] for help
    frame=  180 fps=0.0 q=-1.0 Lsize=    2088kB time=00:00:06.03
bitrate=2833.8kbits/s speed= 904x
    video:1918kB audio:142kB subtitle:0kB other streams:0kB global
headers:0kB muxing overhead: 1.349750%

Regards,
Mukund Manikarnike
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: ffmpeg demux into audio and video resets start_pts and start_time

Carl Eugen Hoyos-2
2018-07-30 20:10 GMT+02:00 Mukund Manikarnike <[hidden email]>:

> ffmpeg -y -i input.ts -acodec copy -vn output_audio.aac

[...]

> *Inspecting output audio*
>
> The same `ffprobe` command on `output_audio.aac` shows that the output aac
> has invalid `codec_tag` and `codec_tag_string` as shown below. The
> `start_pts` and `start_time` are not present in the `output_audio.aac`.

The "aac" (adts) container doesn't know about codec_tags, so the codec
tag will always get lost on stream copying to this formats.

Regarding the starting time stamp you may be searching for "-copyts".

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
[hidden email]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".