我在使用C#脚本时遇到问题,该脚本使用Sony Vegas Pro脚本API生成视频剪辑的编辑列表,以便在ffmpeg中进行修剪。完整的脚本和目的的详细信息可以在http://www.sonycreativesoftware.com/forums/showmessage.asp?forumid=21&messageid=932542找到。
我的部分脚本如下所示。当我运行脚本时,我收到错误“名称'OffsetAdjusterFrames'在当前上下文中不存在”,与行Timecode OffsetAdjuster = Timecode.FromFrames(OffsetAdjusterFrames);
相关,而“名称'DurationAdjusterFrames '在当前上下文中不存在“与下一行有关。
问题似乎与行if (clipOffsetOriginalFrames == 0)
或if else if else
语句中的其他内容有关。如果我通过评论并明确声明if else if else
和OffsetAdjusterFrames
来绕过整个DurationAdjusterFrames
语句,那么脚本的其余部分就会正常工作。
任何帮助都会受到赞赏,因为我已经用尽了一些东西。感谢。
编辑:这与enter link description here不同,因为这是C#,那是Java,所以它并不是真的重复,但一般的解决方案是相同的。
...
Timecode clipOffsetOriginal = videoEvent.ActiveTake.Offset;
// clipOffsetOriginal as a number of frames
Int64 clipOffsetOriginalFrames = videoEvent.ActiveTake.Offset.FrameCount;
Timecode clipOffset = clipOffsetOriginal - startAdd;
Timecode clipDuration = videoEvent.Length + startAdd + endAdd;
// Reset start to zero if start was not trimmed at all, and compensate length
if (clipOffsetOriginalFrames == 0)
{
int OffsetAdjusterFrames = 2;
int DurationAdjusterFrames = -2;
}
// Reset start to zero if start had been trimmed by just 1 frame, and compensate length
else if (clipOffsetOriginalFrames == 1)
{
int OffsetAdjusterFrames = 1;
int DurationAdjusterFrames = -1;
}
else
{
int OffsetAdjusterFrames = 0;
int DurationAdjusterFrames = 0;
}
Timecode OffsetAdjuster = Timecode.FromFrames(OffsetAdjusterFrames);
Timecode DurationAdjuster = Timecode.FromFrames(DurationAdjusterFrames);
Timecode clipOffsetAdjusted = clipOffset + OffsetAdjuster;
Timecode clipDurationAdjusted = clipDuration + DurationAdjuster;
// Convert start and duration from timecode to seconds
double start = clipOffsetAdjusted.ToMilliseconds() / 1000;
double duration = clipDurationAdjusted.ToMilliseconds() / 1000;
string triminfo = String.Format(basename + ".mp4 " + start + " " + duration);
...
答案 0 :(得分:1)
变量<script>
jQuery('.plus').click(function() {
var qut = jQuery(this).prev().val();
var plus = (parseInt(qut) + 1);
jQuery(this).prev().val(plus);
if (plus > parseInt(0)) {
var price = jQuery(this).prev().data('price');
jQuery(this).parent().next().html(parseInt(plus) * parseInt(price));
} else {
jQuery(this).parent().next().html(price);
}
var price = [];
var p = 0;
jQuery('.finalprice').each(function() {
p = (parseInt(p) + parseInt(jQuery(this).html()));});
jQuery('.totalprice').html(p);});
jQuery('.minus').click(function() {
var qut = jQuery(this).next().val();
var plus = (parseInt(qut) - 1);
if (plus > parseInt(0)) {
jQuery(this).next().val(plus);
var price = jQuery(this).next().data('price');
jQuery(this).parent().next().html(parseInt(plus) * parseInt(price));
} else { jQuery(this).parent().next().html(price);}
var p = 0;
jQuery('.finalprice').each(function() {
p = (parseInt(p) + parseInt(jQuery(this).html()));});
jQuery('.totalprice').html(p);});
</script>
`<form action="confirm.php" method="post">`
` <?php`
` $i=0;`
` if(isset($_POST['chk'])){`
` foreach($_POST['chk'] as $key=>$value){`
` echo "<tr><td><input type=\"text\" name=\"prdct[".$i."]\" readonly style=\"border:none;width:auto;\" value=\"".$_POST['nam'][$key]."\"></td>";`
` echo "<td><span class=\"minus\" style=\"font-size:17px!important;\">-</span>";`
` echo "<input class=\"Quantity\" style=\"margin:1px;text-align:center\" size=\"3\" type=\"text\" name=\"quantity[".$i."]\" data-price=\"".$value."\" value=\"1\"><span class=\"plus\"style=\"font-size:17px!important;\">+ </span> </td>";`
` echo "<td class=\"finalprice\">".$value."</td></tr>";`
` }`
` } `
` ?>`
和OffsetAdjusterFrames
在if语句中声明,因此它们是局部变量,不能从if语句外部调用。
当你在if语句之外移动声明时,比如说在方法中,它起作用,因为变量的范围在方法中,因此只要在方法中,就可以在if语句之外调用。 / p>
所以基本上只是在方法的开头声明变量,如下所示:
DurationAdjusterFrames
然后在if语句中分配值,如下所示:
int OffsetAdjusterFrames;
int DurationAdjusterFrames;