public static void StopRecording() { if (gstRecording != null) { gstRecording.SetState(Gst.State.Null); Gst.State s; gstRecording.GetState(out s, timeout); gstRecording.Dispose(); gstRecording = null; } isRecording = false; }
void OnTick(object o, System.Timers.ElapsedEventArgs args) { Format format = Format.Time; State state, pending; long position; pipeline.GetState(out state, out pending, 0); if (state != State.Playing) { return; } if (!cddasrc.QueryPosition(format, out position)) { return; } RaiseProgress(current_track, TimeSpan.FromSeconds(position / (long)Constants.SECOND)); }
public void StartRecordingUnix() { if (txtFolderOut.Text != String.Empty && Directory.Exists(txtFolderOut.Text.Trim())) { GstCapture.cameraDevice cDev = cameras[cbxCamera.ActiveText]; //String sDev = "yes"; String aDev = cbxMic.ActiveText; String _path = txtFolderOut.Text.Trim(); DateTime dt = DateTime.Now; //Encoding w = Encoding.GetEncoding("windows-1251"); // HACK String aargs = null, cargs = null, sargs = null; if ((aDev != null) && ckbxMic.Active) { //aargs = String.Format(" dshowaudiosrc device-name=\"{0}\"", w.GetString(Encoding.UTF8.GetBytes(aDev))); aargs = String.Format(" pulsesrc"); //aargs += " ! audio/x-raw-int, rate = 44100, channels = 1, depth = 16 ! queue ! faac ! tee name = audio"; aargs += " ! audio/x-raw-int, rate = 44100, channels = 1, depth = 16 ! queue ! ffenc_adpcm_swf ! tee name = audio"; } dir = String.Format("{0:yyyy-MM-dd_HH-mm-ss}", dt); path = Directory.CreateDirectory( System.IO.Path.Combine(_path, dir) ).FullName; Directory.SetCurrentDirectory(path); Environment.SetEnvironmentVariable("GST_DEBUG", "3"); if (cDev != null && ckbxCamera.Active) { int gop = 450; cargs = " flvmux name=camera ! filesink location=\"camera.flv\""; cargs += String.Format(" v4l2src device =\"{0}\"", cDev.device.ToString()); cargs += String.Format(" ! video/x-raw-yuv, framerate = {0}/{1}, width={2}, height={3}" + " ! videorate ! video/x-raw-yuv, framerate = {4}/1" + " ! queue ! ffenc_flv name = cv gop-size = {5} ! camera.", cDev.framerate.Numerator, cDev.framerate.Denominator, cDev.width, cDev.height, 30, gop); if (aargs != null) { //cargs += " audio. ! queue ! audio/mpeg ! camera."; cargs += " audio. ! queue ! audio/x-adpcm ! camera."; } } if (ckbxDisplay.Active)//sDev != null) { int gop = 150; sargs = " flvmux name=\"screen\" ! filesink location=\"screen.flv\""; sargs += " ximagesrc use-damage=false"; sargs += String.Format(" ! video/x-raw-rgb, framerate = {0}/1" + " ! ffmpegcolorspace ! queue " + " ! ffenc_flashsv name=sv gop-size = {1} ! screen.", 5, gop); if (aargs != null) { // sargs += " audio. ! queue ! audio/mpeg ! screen."; sargs += " audio. ! queue ! audio/x-adpcm ! screen."; } } try { String final = cargs + sargs + aargs; gstRecording = (Gst.Pipeline)Gst.Parse.Launch(final); lblStatus.Text = "Recording"; } catch (Exception error) { GstCapture.MessageBox.Show(String.Format("{0}: {1}", error.Message, cargs + sargs + aargs)); } if (gstRecording != null) { gstRecording.SetState(Gst.State.Playing); Gst.State s; gstRecording.GetState(out s, timeout); isRecording = true; } Directory.SetCurrentDirectory(_path); } }