On Thu, 15 Mar 2018, Moritz Barsnick wrote:

On Thu, Mar 15, 2018 at 09:18:01 -0700, Carl Zwanzig wrote:
On 3/15/2018 9:05 AM, Moritz Barsnick wrote:
AFAIU, MPEG-PS can contain streams which appear later. (Same for
MPEG-TS, I think.) Perhaps the subtitle streams aren't visible at t=0.

That is my experience- often a subtitle stream itself won't appear until
time for the first one to appear;

Here's an example:

 $ ffmpeg -i Downloads/TV/VTS_03_1.VOB -c copy -f null -
 ...
 Input #0, mpeg, from 'Downloads/TV/VTS_03_1.VOB':
     ...
     Stream #0:3[0x22]: Subtitle: dvd_subtitle
     Stream #0:4[0x21]: Subtitle: dvd_subtitle
     Stream #0:5[0x23]: Subtitle: dvd_subtitle
 ...
 [mpeg @ 0xb086980] New subtitle stream 0:6 at pos:5179406 and DTS:5.28s

Note the subtitle streams 0:3 to 0:5, and the message when 0:6 appears.

(Can be highly annoying, but there it is.)

Indeed, in the given example, I can't map 0:6, no matter the "-ss" I give:

The way to "fix" this is to specify a large analyzeduration/probesize, eg:

  $ ffmpeg -analyzeduration 100M -probesize 100M -i movie.vob ...

Exactly how large depends on where the first subtitle appears within each subtitle stream. I've used values of 2G (and even larger) in order to see some subtitles that only appear much later in the movie. This is especially true for movies that use a separate subtitle stream for "forced" foreign language. In other words, an hour into the movie the "aliens" are first encountered and they speak in an unintelligible language that appears translated as a subtitle on stream 0:10. Within 5 mins they somehow learn English and no other subtitles appear for the rest of the movie. So, stream 0:10 only contains a few subtitles right in the middle.

In the above example, try using increasingly larger values for analyzeduration/probesize until 0:6 shows up with the following command. (No other options, just want to see the input streams. You could also use ffprobe if you prefer.)

  $ ffmpeg -analyzeduration 10M -probesize 10M -i Downloads/TV/VTS_03_1.VOB
  $ ffmpeg -analyzeduration 100M -probesize 100M -i Downloads/TV/VTS_03_1.VOB
  $ ffmpeg -analyzeduration 500M -probesize 500M -i Downloads/TV/VTS_03_1.VOB
  $ ffmpeg -analyzeduration 1G -probesize 1G -i Downloads/TV/VTS_03_1.VOB

You can try different values for analyzeduration and probesize, but I seem to recall they both have to be "large enough". They don't need to be the SAME value, just large enough for their respective purposes. Where analyzeduration is TIME (micro-secs) and probesize is SIZE (bytes). The algorithm appears to stop analyzing/probing when either of the limits is reached, so both need to be sufficiently large.
_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

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

Reply via email to