📄 output.m
字号:
[o_stream_ttl_stp setEnabled: NO]; [[o_mux_selector itemAtIndex: 0] setEnabled: NO]; [[o_mux_selector itemAtIndex: 1] setEnabled: NO]; [[o_mux_selector itemAtIndex: 2] setEnabled: NO]; [[o_mux_selector itemAtIndex: 3] setEnabled: NO]; [[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[o_mux_selector itemAtIndex: 5] setEnabled: YES]; [[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[o_mux_selector itemAtIndex: 7] setEnabled: NO]; } else if( [o_mode isEqualToString: @"UDP"] ) { [o_stream_address setEnabled: YES]; [o_stream_ttl setEnabled: YES]; [o_stream_ttl_stp setEnabled: YES]; [[o_mux_selector itemAtIndex: 1] setEnabled: NO]; [[o_mux_selector itemAtIndex: 2] setEnabled: NO]; [[o_mux_selector itemAtIndex: 3] setEnabled: NO]; [[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[o_mux_selector itemAtIndex: 5] setEnabled: NO]; [[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [o_sap_chkbox setEnabled: YES]; [o_slp_chkbox setEnabled: YES]; [o_channel_name setEnabled: YES]; } else if( [o_mode isEqualToString: @"RTP"] ) { [o_stream_address setEnabled: YES]; [o_stream_ttl setEnabled: YES]; [o_stream_ttl_stp setEnabled: YES]; [[o_mux_selector itemAtIndex: 1] setEnabled: NO]; [[o_mux_selector itemAtIndex: 2] setEnabled: NO]; [[o_mux_selector itemAtIndex: 3] setEnabled: NO]; [[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[o_mux_selector itemAtIndex: 5] setEnabled: NO]; [[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[o_mux_selector itemAtIndex: 7] setEnabled: NO]; } } if( ![[o_mux_selector selectedItem] isEnabled] ) { [o_mux_selector selectItemAtIndex: 0]; } [self outputInfoChanged: nil];}- (void)outputInfoChanged:(NSNotification *)o_notification{ NSString *o_mode, *o_mux, *o_mux_string, *o_announce; NSMutableString *o_mrl_string = [NSMutableString stringWithString:@":sout=#"]; [o_mrl_string appendString: o_transcode]; if( [o_display state] == NSOnState ) { [o_mrl_string appendString: @"duplicate{dst=display,dst="]; } o_mode = [[o_method selectedCell] title]; o_mux = [o_mux_selector titleOfSelectedItem]; if ( [o_mux isEqualToString: @"AVI"] ) o_mux_string = @"avi"; else if ( [o_mux isEqualToString: @"Ogg"] ) o_mux_string = @"ogg"; else if ( [o_mux isEqualToString: @"MPEG PS"] ) o_mux_string = @"ps"; else if ( [o_mux isEqualToString: @"MPEG 4"] ) o_mux_string = @"mp4"; else if ( [o_mux isEqualToString: @"MPEG 1"] ) o_mux_string = @"mpeg1"; else if ( [o_mux isEqualToString: @"Quicktime"] ) o_mux_string = @"mov"; else if ( [o_mux isEqualToString: @"ASF"] ) o_mux_string = @"asf"; else o_mux_string = @"ts"; if( [o_mode isEqualToString: _NS("File")] ) { if( [o_dump_chkbox state] == NSOnState ) { o_mrl_string = [NSMutableString stringWithFormat: @":demux=demuxdump :demuxdump-file=\"%@\"", [o_file_field stringValue]]; [self setMRL:o_mrl_string]; return; } else { [o_mrl_string appendFormat: @"std{access=file,mux=%@,url=\"%@\"}", o_mux_string, [o_file_field stringValue]]; } } else if( [o_mode isEqualToString: _NS("Stream")] ) { o_mode = [o_stream_type titleOfSelectedItem]; o_announce = @""; if ( [o_mode isEqualToString: @"HTTP"] ) o_mode = @"http"; else if ( [o_mode isEqualToString: @"MMSH"] ) { if ( [o_mux isEqualToString: @"ASF"] ) o_mux_string = @"asfh"; o_mode = @"mmsh"; } else if ( [o_mode isEqualToString: @"UDP"] ) { o_mode = @"udp"; if( [o_sap_chkbox state] == NSOnState ) { if ( ![[o_channel_name stringValue] isEqualToString: @""] ) o_announce = [NSString stringWithFormat:@",sap=%@", [o_channel_name stringValue]]; else o_announce = @",sap"; } if( [o_slp_chkbox state] == NSOnState ) { if ( ![[o_channel_name stringValue] isEqualToString: @""] ) o_announce = [o_announce stringByAppendingFormat:@",slp=%@", [o_channel_name stringValue]]; else o_announce = [o_announce stringByAppendingString: @",slp"]; } } else if ( [o_mode isEqualToString: @"RTP"] ) o_mode = @"rtp"; [o_mrl_string appendFormat: @"std{access=%@,mux=%@,url=\"%@:%@\"%@}", o_mode, o_mux_string, [o_stream_address stringValue], [o_stream_port stringValue], o_announce]; } if( [o_display state] == NSOnState ) { [o_mrl_string appendString: @"}"]; } [self setMRL:o_mrl_string];}- (void)TTLChanged:(NSNotification *)o_notification{ intf_thread_t * p_intf = [NSApp getIntf]; config_PutInt( p_intf, "ttl", [o_stream_ttl intValue] );}- (IBAction)outputFileBrowse:(id)sender{ NSSavePanel *o_save_panel = [NSSavePanel savePanel]; NSString *o_mux_string; if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"MPEG PS"] ) o_mux_string = @"vob"; else if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"MPEG 1"] ) o_mux_string = @"mpg"; else if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"AVI"] ) o_mux_string = @"avi"; else if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"ASF"] ) o_mux_string = @"asf"; else if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"Ogg"] ) o_mux_string = @"ogm"; else if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"MPEG 4"] ) o_mux_string = @"mp4"; else if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"Quicktime"] ) o_mux_string = @"mov"; else o_mux_string = @"ts"; NSString * o_name = [NSString stringWithFormat: @"vlc-output.%@", o_mux_string]; [o_save_panel setTitle: _NS("Save File")]; [o_save_panel setPrompt: _NS("Save")]; if( [o_save_panel runModalForDirectory: nil file: o_name] == NSOKButton ) { NSString *o_filename = [o_save_panel filename]; [o_file_field setStringValue: o_filename]; [self outputInfoChanged: nil]; }}- (IBAction)streamPortStepperChanged:(id)sender{ [o_stream_port setIntValue: [o_stream_port_stp intValue]]; [self outputInfoChanged: nil];}- (IBAction)streamTTLStepperChanged:(id)sender{ [o_stream_ttl setIntValue: [o_stream_ttl_stp intValue]]; [self TTLChanged:nil];}- (void)transcodeChanged:(NSNotification *)o_notification{ if( [o_transcode_video_chkbox state] == NSOnState ) { [o_transcode_video_selector setEnabled: YES]; [o_transcode_video_bitrate setEnabled: YES]; } else { [o_transcode_video_selector setEnabled: NO]; [o_transcode_video_bitrate setEnabled: NO]; } if( [o_transcode_audio_chkbox state] == NSOnState ) { [o_transcode_audio_selector setEnabled: YES]; [o_transcode_audio_bitrate setEnabled: YES]; [o_transcode_audio_channels setEnabled: YES]; } else { [o_transcode_audio_selector setEnabled: NO]; [o_transcode_audio_bitrate setEnabled: NO]; [o_transcode_audio_channels setEnabled: NO]; } [self transcodeInfoChanged:nil];}- (void)transcodeInfoChanged:(NSNotification *)o_notification{ NSMutableString *o_transcode_string; if( [o_transcode_video_chkbox state] == NSOnState || [o_transcode_audio_chkbox state] == NSOnState ) { o_transcode_string = [NSMutableString stringWithString:@"transcode{"]; if ( [o_transcode_video_chkbox state] == NSOnState ) { [o_transcode_string appendFormat: @"vcodec=\"%@\",vb=\"%@\"", [o_transcode_video_selector titleOfSelectedItem], [o_transcode_video_bitrate stringValue]]; if ( [o_transcode_audio_chkbox state] == NSOnState ) { [o_transcode_string appendString: @","]; } } if ( [o_transcode_audio_chkbox state] == NSOnState ) { [o_transcode_string appendFormat: @"acodec=\"%@\",ab=\"%@\"", [o_transcode_audio_selector titleOfSelectedItem], [o_transcode_audio_bitrate stringValue]]; } [o_transcode_string appendString:@"}:"]; } else { o_transcode_string = [NSString stringWithString:@""]; } [self setTranscode: o_transcode_string]; [self outputInfoChanged:nil];}- (IBAction)announceChanged:(id)sender{ [o_channel_name setEnabled: [o_sap_chkbox state] || [o_slp_chkbox state]]; [self outputInfoChanged: nil];}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -