高清字幕

简易接口:

 MI_U32 pu32OutputTiming = 2;
 MI_U32 VideoPid = 6673;
 MI_U32 PcrPid = 6673;
 MI_U32 EncodeType = 1;

 //MI_DEMO_DISP_SetOutputTiming(&pu32OutputTiming);
 //MI_DEMO_VIDEO_Start(&VideoPid, &PcrPid, &EncodeType, NULL);  //6673

 static MI_U32 i = 1;

 MI_U16 pu16Pid = 0x1A16;
 MI_U16 pu16Composition_Page_id = 0x02;
 MI_U16 pu16Ancillary_Page_id = 0x02;
 MI_DEMO_SUBTITLE_Init();
 //MI_DEMO_VIDEO_Start(6017, 6017, 1, pu32MinDecLaytency);
 while(1)
 {
  
  if(i == 1)
  {
   VideoPid = 6673;
   PcrPid = 6673;
   EncodeType = 1;
   pu16Pid = 0x1A16;
   pu16Composition_Page_id = 0x02;
   pu16Ancillary_Page_id = 0x02;
   i = 0;
  }
  else
  {
   VideoPid = 6017;
   PcrPid = 6017;
   EncodeType = 1;
   pu16Pid = 0x1786;
   pu16Composition_Page_id = 0x02;
   pu16Ancillary_Page_id = 0x02;
   i = 1;
  }
  
  MI_DEMO_DISP_SetOutputTiming(&pu32OutputTiming);
  MI_DEMO_VIDEO_Start(&VideoPid, &PcrPid, &EncodeType, NULL);  //6673
  //MI_OS_DelayTask(15000);
  //MI_DEMO_DISP_SetOutputTiming(&pu32OutputTiming);
  //MI_DEMO_VIDEO_Start(&VideoPid, &PcrPid, &EncodeType, NULL);  //6673
  //MI_OS_DelayTask(15000);
  //MI_DEMO_SUBTITLE_Init();
  //MI_SUBTITLE_Stop(0);
  MI_DEMO_SUBTITLE_Stop();
  MI_DEMO_SUBTITLE_Start(&pu16Pid, &pu16Composition_Page_id, &pu16Ancillary_Page_id);
  MI_DEMO_SUBTITLE_SetPid(&pu16Pid, &pu16Composition_Page_id, &pu16Ancillary_Page_id);
  //MI_DEMO_SUBTITLE_Start(&pu16Pid, &pu16Composition_Page_id, &pu16Ancillary_Page_id);
  //i++;
  MI_OS_DelayTask(30000);
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现QLV转换为MP4高清并且字幕同步,可以使用FFmpeg和AssFilterMod这两个工具。FFmpeg用于视频转换和字幕导入,AssFilterMod用于字幕同步。 下面是一个示例代码,演示如何使用FFmpeg和AssFilterMod将QLV转换为MP4高清并且字幕同步: ```java import java.io.File; import java.io.IOException; public class QlvToMp4Converter { public static void main(String[] args) throws IOException, InterruptedException { String qlvFilePath = "C:\\input.qlv"; // 输入文件路径 String mp4FilePath = "C:\\output.mp4"; // 输出文件路径 String subtitleFilePath = "C:\\subtitle.ass"; // 字幕文件路径 // 使用 FFmpeg 将 QLV 转换为 MP4 ProcessBuilder pb = new ProcessBuilder("ffmpeg", "-i", qlvFilePath, "-c:v", "libx264", "-preset", "veryslow", "-crf", "20", "-c:a", "aac", mp4FilePath); pb.redirectErrorStream(true); Process process = pb.start(); process.waitFor(); // 使用 AssFilterMod 导入字幕并进行同步 pb = new ProcessBuilder("AssFilterMod", "-i", subtitleFilePath, "-o", subtitleFilePath, "-shift", "0"); // shift 参数可根据需要调整 pb.redirectErrorStream(true); process = pb.start(); process.waitFor(); // 使用 FFmpeg 将字幕导入 MP4 中 pb = new ProcessBuilder("ffmpeg", "-i", mp4FilePath, "-vf", "ass=" + subtitleFilePath, "-c:a", "copy", "-c:v", "copy", mp4FilePath + ".temp"); pb.redirectErrorStream(true); process = pb.start(); process.waitFor(); // 删除临时文件 new File(mp4FilePath).delete(); new File(mp4FilePath + ".temp").renameTo(new File(mp4FilePath)); } } ``` 在上述代码中,我们首先使用FFmpeg将QLV转换为MP4高清。在此过程中,我们使用libx264编解码器和非常慢的预设,以确保输出质量最佳。接下来,我们使用AssFilterMod导入字幕并进行同步。在此过程中,我们使用-shift参数来调整字幕同步。最后,我们使用FFmpeg将字幕导入MP4中。在此过程中,我们使用-vf参数将字幕文件与视频流合并,使用copy编解码器将音频和视频流保留原始格式。最后,我们删除原始的MP4文件,并将临时文件重命名为输出文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值