Player pl = new MEncoderVideoNEW(PMS.getConfiguration());Index: net/pms/dlna/FileTranscodeVirtualFolder.java
===================================================================
--- net/pms/dlna/FileTranscodeVirtualFolder.java (revision 363)
+++ net/pms/dlna/FileTranscodeVirtualFolder.java (working copy)
@@ -20,6 +20,7 @@
import net.pms.PMS;
import net.pms.dlna.virtual.VirtualFolder;
+import net.pms.dlna.virtual.VirtualVideoAction;
import net.pms.encoders.MEncoderVideo;
import net.pms.encoders.Player;
import net.pms.encoders.TSMuxerVideo;
@@ -41,6 +42,16 @@
if (child.ext.getProfiles() != null) {
DLNAResource ref = child;
Player tsMuxer = null;
+ DLNAResource virtfix = child;
+ virtfix = new VirtualVideoAction(" !!-- Fix A/V Sync --!!", PMS.getConfiguration().isMencoderForceFps()) { //$NON-NLS-1$
+ public boolean enable() {
+ PMS.getConfiguration().setMencoderForceFps(!PMS.getConfiguration().isMencoderForceFps());
+ PMS.getConfiguration().setTsmuxerForceFps(PMS.getConfiguration().isMencoderForceFps());
+ return PMS.getConfiguration().isMencoderForceFps();
+ }
+ };
+ children.add(virtfix);
+ virtfix.parent = this;
for(int i=0;i<child.ext.getProfiles().size();i++) {
Player pl = PMS.get().getPlayer(child.ext.getProfiles().get(i), child.ext);
if (pl !=null && !child.player.equals(pl)) {Index: net/pms/encoders/MEncoderVideo.java
===================================================================
--- net/pms/encoders/MEncoderVideo.java (revision 363)
+++ net/pms/encoders/MEncoderVideo.java (working copy)
@@ -283,6 +283,7 @@
forcefps = new JCheckBox(Messages.getString("MEncoderVideo.4")); //$NON-NLS-1$
forcefps.setContentAreaFilled(false);
+ forcefps.setEnabled(false);
if (configuration.isMencoderForceFps())
forcefps.setSelected(true);
forcefps.addItemListener(new ItemListener() {
@@ -1266,10 +1267,10 @@
cmdArray[cmdArray.length-8] = "-quiet"; //$NON-NLS-1$
cmdArray[cmdArray.length-7] = "-quiet"; //$NON-NLS-1$
- if (configuration.isMencoderForceFps()) {
- cmdArray[cmdArray.length-8] = "-fps"; //$NON-NLS-1$
- cmdArray[cmdArray.length-7] = "24000/1001"; //$NON-NLS-1$
- }
+// if (configuration.isMencoderForceFps()) {
+// cmdArray[cmdArray.length-8] = "-fps"; //$NON-NLS-1$
+// cmdArray[cmdArray.length-7] = "24000/1001"; //$NON-NLS-1$
+// }
cmdArray[cmdArray.length-6] = "-ofps"; //$NON-NLS-1$
cmdArray[cmdArray.length-5] = "24000/1001"; //$NON-NLS-1$
String frameRate = null;
@@ -1278,8 +1279,11 @@
}
if (frameRate != null) {
cmdArray[cmdArray.length-5] = frameRate;
- if (configuration.isMencoderForceFps())
- cmdArray[cmdArray.length-7] = cmdArray[cmdArray.length-5];
+ if (configuration.isMencoderForceFps()) {
+ cmdArray[cmdArray.length-8] = "-mc";
+ cmdArray[cmdArray.length-7] = "0.005";
+ cmdArray[cmdArray.length-5] = "25";
+ }
}
if (subString != null && !configuration.isMencoderDisableSubs() && !avisynth()) {
@@ -1444,10 +1448,13 @@
}
if ((pcm || dts || mux) || (PMS.getConfiguration().isMencoderNoOutOfSync() && !noMC0NoSkip)) {
+ if (!PMS.getConfiguration().isMencoderForceFps()) {
cmdArray = Arrays.copyOf(cmdArray, cmdArray.length +3);
cmdArray[cmdArray.length-5] = "-mc"; //$NON-NLS-1$
- cmdArray[cmdArray.length-4] = "0"; //$NON-NLS-1$
- cmdArray[cmdArray.length-3] = "-noskip"; //$NON-NLS-1$
+ cmdArray[cmdArray.length-4] = "0.005"; //$NON-NLS-1$
+ cmdArray[cmdArray.length-3] = "-quiet"; //$NON-NLS-1$
+ // cmdArray[cmdArray.length-3] = "-noskip"; //$NON-NLS-1$
+ }
}
if (params.timeend > 0) {Index: net/pms/encoders/TSMuxerVideo.java
===================================================================
--- net/pms/encoders/TSMuxerVideo.java (revision 363)
+++ net/pms/encoders/TSMuxerVideo.java (working copy)
@@ -119,7 +119,7 @@
}
}
}
-
+
if (media != null && configuration.isTsmuxerForceFps()) {
fps = media.getValidFps(false);
}
@@ -392,6 +392,9 @@
String videoparams = "level=4.1, insertSEI, contSPS, track=1"; //$NON-NLS-1$
if (this instanceof TsMuxerAudio)
videoparams = "track=224"; //$NON-NLS-1$
+ if (configuration.isTsmuxerForceFps()) {
+ fps = "25";
+ }
pw.println(videoType + ", \"" + ffVideoPipe.getOutputPipe() + "\", " + (fps!=null?("fps=" +fps + ", "):"") + videoparams); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
}
if (ffAudioPipe != null && ffAudioPipe.length == 1) {
@@ -521,6 +524,7 @@
tsmuxerforcefps = new JCheckBox(Messages.getString("TSMuxerVideo.2")); //$NON-NLS-1$
tsmuxerforcefps.setContentAreaFilled(false);
+ tsmuxerforcefps.setEnabled(false);
if (configuration.isTsmuxerForceFps())
tsmuxerforcefps.setSelected(true);
tsmuxerforcefps.addItemListener(new ItemListener() {Users browsing this forum: No registered users and 9 guests