Constructor Argument
'file' - a filename specification or URL in the form:
- [{protocol}|{format}]:{resource}[?{format-parameter}[&{format-parameter}]]
- For example, video4linux:/dev/video1?width=320&height=240
- Note: on the bash command line, '&' must be escaped as '\&'
+ [{protocol}|{format}]:{resource}[?{format-parameter}[&{format-parameter}...]]
+ For example, video4linux:/dev/video1?width:320&height:240
+ Note: on the bash command line, & must be escaped as '\&'.
+ Also, note the use of ':' instead of '=' for parameters.
Use 'ffmpeg -formats' to see a list of supported protocols
and formats.
MPEG seeking is inaccurate - doesn't seek to i-frames so you may
get junk for a few frames.
RAW DV seeking not supported.
+ Fails to play beyond first frame of video of sources with PTS not
+ starting at 0 (video4linux).
fezzik
{
mrl[0] = 0;
char *name = strdup( ++mrl );
- char *value = strchr( name, '=' );
+ char *value = strchr( name, ':' );
if ( value )
{
value[0] = 0;
mlt_position expected = mlt_properties_get_position( properties, "video_expected" );
// Calculate the real time code
- double real_timecode = producer_time_of_frame( this, position ) + mlt_properties_get_double( properties, "_v_pts_offset" );
+ double real_timecode = producer_time_of_frame( this, position );
// Get the video stream
AVStream *stream = context->streams[ index ];
{
if ( pkt.pts != AV_NOPTS_VALUE && pkt.pts != 0 )
{
- if ( current_time == 0 )
- {
- mlt_properties_set_double( properties, "_v_pts_offset", ( double )( pkt.pts / 1000000 ) );
- real_timecode += pkt.pts / 1000000;
- }
current_time = ( double )pkt.pts / 1000000.0;
}
else