📄 output.m
字号:
[o_slp_chkbox setEnabled: NO]; [o_rtsp_chkbox setEnabled: YES]; [o_http_chkbox setEnabled: YES]; [o_file_chkbox setEnabled: YES]; [o_channel_name setEnabled: YES]; } } if( ![[o_mux_selector selectedItem] isEnabled] && ![o_mode isEqualToString: @"RTP"] ) { [o_mux_selector selectItemAtIndex: 0]; } else if (![[o_mux_selector selectedItem] isEnabled] && [o_mode isEqualToString: @"RTP"] ) { [o_mux_selector selectItemAtIndex: 8]; } [self outputInfoChanged: nil];}- (void)outputInfoChanged:(NSNotification *)o_notification{ NSString *o_mode, *o_mux, *o_mux_string; NSMutableString *o_announce = [NSMutableString stringWithString:@""]; NSMutableString *o_mrl_string = [NSMutableString stringWithString:@":sout=#"]; NSArray *o_sout_options; [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 if ( [o_mux isEqualToString: @"Raw"] ) o_mux_string = @"raw"; else o_mux_string = @"ts"; if( [o_mode isEqualToString: _NS("File")] ) { if( [o_dump_chkbox state] == NSOnState ) { NSMutableArray * o_sout_options; o_sout_options = [NSArray arrayWithObjects: [NSString stringWithString: @":demux=dump"], [NSString stringWithFormat: @":demuxdump-file=%@", [o_file_field stringValue]], nil]; [self setMRL:o_sout_options]; 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]; 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 appendFormat: @",sap,name=%@", [o_channel_name stringValue]]; else [o_announce appendFormat:@",sap"]; } if( [o_slp_chkbox state] == NSOnState ) { if ( ![[o_channel_name stringValue] isEqualToString: @""] ) [o_announce appendFormat:@ "slp,name=%@",[o_channel_name stringValue]]; else [o_announce appendString: @",slp"]; } } if ( ![o_mode isEqualToString: @"RTP"] ) { [o_mrl_string appendFormat: @"std{access=%@,mux=%@,url=\"%@:%@\"%@}", o_mode, o_mux_string, [o_stream_address stringValue], [o_stream_port stringValue], o_announce]; } else { NSString * o_stream_name; if (![[o_channel_name stringValue] isEqualToString: @""] ) { o_stream_name = [NSString stringWithFormat:@",name=%@", [o_channel_name stringValue]]; } else { o_stream_name = @""; } if ( [o_sap_chkbox state] == NSOnState ) { [o_announce appendString: @",sdp=sap"]; } if ([o_rtsp_chkbox state] == NSOnState ) { [o_announce appendFormat:@",sdp=\"rtsp://%@\"",[o_sdp_url stringValue]]; } if ([o_http_chkbox state] == NSOnState ) { [o_announce appendFormat:@",sdp=\"http://%@\"",[o_sdp_url stringValue]]; } if ([o_file_chkbox state] == NSOnState ) { [o_announce appendFormat:@",sdp=\"file://%@\"",[o_sdp_url stringValue]]; } [o_mrl_string appendFormat: @"rtp{dst=\"%@\",port=%@%@%@}",[o_stream_address stringValue], [o_stream_port stringValue], o_stream_name, o_announce]; } } if( [o_display state] == NSOnState ) { [o_mrl_string appendString: @"}"]; } o_sout_options = [NSArray arrayWithObjects: o_mrl_string,nil]; [self setMRL:o_sout_options];}- (void)TTLChanged:(NSNotification *)o_notification{ intf_thread_t * p_intf = VLCIntf; 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 if ( [[o_mux_selector titleOfSelectedItem] isEqualToString: @"Raw"] ) o_mux_string = @"raw"; 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]; [o_transcode_video_scale setEnabled: YES]; } else { [o_transcode_video_selector setEnabled: NO]; [o_transcode_video_bitrate setEnabled: NO]; [o_transcode_video_scale 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=\"%@\"" ",scale=\"%@\"", [o_transcode_video_selector titleOfSelectedItem], [o_transcode_video_bitrate stringValue], [o_transcode_video_scale 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]]; if ( ![[o_transcode_audio_channels stringValue] isEqualToString: @""]) { [o_transcode_string appendFormat: @",channels=\"%@\"", [o_transcode_audio_channels stringValue]]; } } [o_transcode_string appendString:@"}:"]; } else { o_transcode_string = [NSString stringWithString:@""]; } [self setTranscode: o_transcode_string]; [self outputInfoChanged:nil];}- (IBAction)announceChanged:(id)sender{ NSString *o_mode; o_mode = [[o_stream_type selectedCell] title]; [o_channel_name setEnabled: [o_sap_chkbox state] || [o_slp_chkbox state] || [o_mode isEqualToString: @"RTP"]]; if ([o_mode isEqualToString: @"RTP"]) {/* if ([[sender title] isEqualToString: _NS("SAP announce")]) { [o_rtsp_chkbox setState:NSOffState]; [o_http_chkbox setState:NSOffState]; }*/ if ([[sender title] isEqualToString:_NS("RTSP announce")]) {// [o_sap_chkbox setState:NSOffState]; [o_http_chkbox setState:NSOffState]; [o_file_chkbox setState:NSOffState]; } else if ([[sender title] isEqualToString:_NS("HTTP announce")]) {// [o_sap_chkbox setState:NSOffState]; [o_rtsp_chkbox setState:NSOffState]; [o_file_chkbox setState:NSOffState]; } else if ([[sender title] isEqualToString:_NS("Export SDP as file")]) { [o_rtsp_chkbox setState:NSOffState]; [o_http_chkbox setState:NSOffState]; } if ( [o_rtsp_chkbox state] == NSOnState || [o_http_chkbox state] == NSOnState || [o_file_chkbox state] == NSOnState ) { [o_sdp_url setEnabled: YES]; } else { [o_sdp_url setEnabled: NO]; } } [self outputInfoChanged: nil];}@end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -