You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Add -t option to ffplay.
Patch by Robert Krüger, krueger signal7 de Originally committed as revision 22764 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
				
					committed by
					
						 Carl Eugen Hoyos
						Carl Eugen Hoyos
					
				
			
			
				
	
			
			
			
						parent
						
							00bbc09309
						
					
				
				
					commit
					d834d63b0e
				
			| @@ -45,6 +45,8 @@ Disable audio. | ||||
| Disable video. | ||||
| @item -ss @var{pos} | ||||
| Seek to a given position in seconds. | ||||
| @item -t @var{duration} | ||||
| play <duration> seconds of audio/video | ||||
| @item -bytes | ||||
| Seek by bytes. | ||||
| @item -nodisp | ||||
|   | ||||
							
								
								
									
										21
									
								
								ffplay.c
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								ffplay.c
									
									
									
									
									
								
							| @@ -244,6 +244,7 @@ static int display_disable; | ||||
| static int show_status = 1; | ||||
| static int av_sync_type = AV_SYNC_AUDIO_MASTER; | ||||
| static int64_t start_time = AV_NOPTS_VALUE; | ||||
| static int64_t duration = AV_NOPTS_VALUE; | ||||
| static int debug = 0; | ||||
| static int debug_mv = 0; | ||||
| static int step = 0; | ||||
| @@ -2360,6 +2361,7 @@ static int decode_thread(void *arg) | ||||
|     AVPacket pkt1, *pkt = &pkt1; | ||||
|     AVFormatParameters params, *ap = ¶ms; | ||||
|     int eof=0; | ||||
|     int pkt_in_play_range = 0; | ||||
|  | ||||
|     ic = avformat_alloc_context(); | ||||
|  | ||||
| @@ -2559,11 +2561,17 @@ static int decode_thread(void *arg) | ||||
|             SDL_Delay(100); /* wait for user event */ | ||||
|             continue; | ||||
|         } | ||||
|         if (pkt->stream_index == is->audio_stream) { | ||||
|         /* check if packet is in play range specified by user, then queue, otherwise discard */ | ||||
|         pkt_in_play_range = duration == AV_NOPTS_VALUE || | ||||
|                 (pkt->pts - ic->streams[pkt->stream_index]->start_time) * | ||||
|                 av_q2d(ic->streams[pkt->stream_index]->time_base) - | ||||
|                 (double)(start_time != AV_NOPTS_VALUE ? start_time : 0)/1000000 | ||||
|                 <= ((double)duration/1000000); | ||||
|         if (pkt->stream_index == is->audio_stream && pkt_in_play_range) { | ||||
|             packet_queue_put(&is->audioq, pkt); | ||||
|         } else if (pkt->stream_index == is->video_stream) { | ||||
|         } else if (pkt->stream_index == is->video_stream && pkt_in_play_range) { | ||||
|             packet_queue_put(&is->videoq, pkt); | ||||
|         } else if (pkt->stream_index == is->subtitle_stream) { | ||||
|         } else if (pkt->stream_index == is->subtitle_stream && pkt_in_play_range) { | ||||
|             packet_queue_put(&is->subtitleq, pkt); | ||||
|         } else { | ||||
|             av_free_packet(pkt); | ||||
| @@ -2971,6 +2979,12 @@ static int opt_seek(const char *opt, const char *arg) | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int opt_duration(const char *opt, const char *arg) | ||||
| { | ||||
|     duration = parse_time_or_die(opt, arg, 1); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| static int opt_debug(const char *opt, const char *arg) | ||||
| { | ||||
|     av_log_set_level(99); | ||||
| @@ -3005,6 +3019,7 @@ static const OptionDef options[] = { | ||||
|     { "vst", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&wanted_stream[AVMEDIA_TYPE_VIDEO]}, "select desired video stream", "stream_number" }, | ||||
|     { "sst", OPT_INT | HAS_ARG | OPT_EXPERT, {(void*)&wanted_stream[AVMEDIA_TYPE_SUBTITLE]}, "select desired subtitle stream", "stream_number" }, | ||||
|     { "ss", HAS_ARG | OPT_FUNC2, {(void*)&opt_seek}, "seek to a given position in seconds", "pos" }, | ||||
|     { "t", HAS_ARG | OPT_FUNC2, {(void*)&opt_duration}, "play  \"duration\" seconds of audio/video", "duration" }, | ||||
|     { "bytes", OPT_INT | HAS_ARG, {(void*)&seek_by_bytes}, "seek by bytes 0=off 1=on -1=auto", "val" }, | ||||
|     { "nodisp", OPT_BOOL, {(void*)&display_disable}, "disable graphical display" }, | ||||
|     { "f", HAS_ARG, {(void*)opt_format}, "force format", "fmt" }, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user