为啥我在录屏时会出现无声?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我在录屏时会出现无声?相关的知识,希望对你有一定的参考价值。

参考技术A

使用屏幕录制视频时无声,或者已录制好的视频文件播放时无声,由多种原因导致,请您按照以下方法进行排查:
1.关闭正在使用麦克风录音的应用
由于音频通道的优先级是谁先占就先使用。如果音频通道被相关应用软件占用后(如微信语音通话),它们会占用系统麦克风资源,导致录制的视频无声。请您将正在使用麦克风录音的应用或直播类软件关闭后,再进行录屏。
2.调整音量
用户系统音量设置过低/静音或者第三方应用录屏时音量过低,会导致录屏无声,请您在录屏过程中,按音量键将系统或者三方应用的音量调大。
3.开启提示框“启用麦克风录制环境音”选项
开始录制时弹出提示框“启用麦克风录制环境音”中的开关被关闭,会导致录制过程中不能录制环境音。请您录屏时开启麦克风,边录屏,边解说。启动录屏后,点击麦克风图标让其处于开启状态,就可以同步记录声音。
温馨提醒:
(1)EMUI 9.1开始在录屏时点击麦克风图标使麦克风处于开启状态,状态即可录制环境音。
(2)麦克风关闭时仅可以收录系统音(如:音乐)。
4.断开耳机后录屏
如果您的设备已经连接耳机,建议您断开耳机后录屏。
如果问题仍然存在,请您提前备份手机数据(QQ、微信等第三方应用需单独备份),携带购机凭证前往华为客户服务中心进行检测。    

相关链接如下:预约服务华为客户服务中心维修备件价格查询寄修服务

华为Mate Xs 2

¥9999

Mate 50 Pro

¥6799

华为nova 10 Pro

¥3699

华为MateBook X Pro

¥8999

    官方电话官方服务
      寄修服务预约服务维修价格服务中心维修进度

为啥我在 MySQL 中可以成功执行时会出现 sql 语法错误

【中文标题】为啥我在 MySQL 中可以成功执行时会出现 sql 语法错误【英文标题】:Why do I get a sql grammar error when I can successfully execute in MySQL为什么我在 MySQL 中可以成功执行时会出现 sql 语法错误 【发布时间】:2020-07-28 06:39:33 【问题描述】:

我正在尝试将数据插入多个表 user_inventories、user_inventory_details 和 user_inventory_images。我正在使用 Spring 框架提供的 jdbcTemplate 下面是我的插入方法。

public List<UserListing> postUserListing(String userId, String vin, String price,
      String mileage, String color, List<String> images) 
    Preconditions.checkArgument(Strings.isNotEmpty(userId), "user id cannot be empty");
    Preconditions.checkArgument(Strings.isNotEmpty(vin), "vin cannot be empty");
    Preconditions.checkArgument(Strings.isNotEmpty(price), "price cannot be empty");
    Preconditions.checkArgument(Strings.isNotEmpty(mileage), "mileage cannot be empty");
    Preconditions.checkArgument(Strings.isNotEmpty(color), "color cannot be empty");
    Preconditions.checkArgument((!images.isEmpty()), "images cannot be empty");

    UserListing userListing = this.getSingleUserListingByVin(userId, vin);
    if (userListing != null) 
      throw new InvalidParameterException(
          String.format("This listing with vin: %s already exist", vin)
      );
    

    String postStatement = "START TRANSACTION; " +
        this.POST_USER_INVENTORY +
        this.POST_USER_INVENTORY_DETAIL +
        this.preparePostStatementHelper(images) +
        "COMMIT; ";

    String userInventoryId = UUID.randomUUID().toString();

    jdbcTemplate.update(
        connection -> 
          PreparedStatement ps = connection.prepareStatement(postStatement);
          ps.setString(1, userInventoryId);
          ps.setString(2, userId);
          ps.setString(3, UUID.randomUUID().toString());
          ps.setString(4, userInventoryId);
          ps.setString(5, vin);
          ps.setString(6, price);
          ps.setString(7, mileage);
          ps.setString(8, color);
          for (int i = 0, j = 0; i < images.size(); i++) 
            ps.setString(9 + j++, UUID.randomUUID().toString());
            ps.setString(9 + j++, userInventoryId);
            ps.setString(9 + j++, images.get(i));
          
          System.out.println(ps.toString());
          return ps;
        
    );

    return this.getUserListingsByUserId(userId);
  

这是控制台为 ps 打印的内容。

START TRANSACTION; 
INSERT INTO user_inventories (`id`, `user_id`) VALUES ('db75330e-1da0-455c-850f-22ba08db697e', '7ff0ca63-11e3-4aa4-b5cf-08d9091901fe'); 
INSERT INTO user_inventory_details (`id`, `user_inventory_id`, `vin`, `price`, `mileage`, `color`) VALUES ('55df5adc-b0c6-4303-9671-1b562fd9a687', 'db75330e-1da0-455c-850f-22ba08db697e', '2FMPK4K99LBA82434', '36,454', '12300', 'silver'); 
INSERT INTO user_inventory_images (`id`, `user_inventory_id`, `image_url`) VALUES ('17bc4717-9967-4402-a87c-c729d29d7b11', 'db75330e-1da0-455c-850f-22ba08db697e', 'https://www.cstatic-images.com/supersized/in/v1/424056/2FMPK4K99LBA82434/4d915c4f3ea38e2d44d879d143277468.jpg'); 
INSERT INTO user_inventory_images (`id`, `user_inventory_id`, `image_url`) VALUES ('bd23ec85-edfe-4a46-b0f7-4608f258a84d', 'db75330e-1da0-455c-850f-22ba08db697e', 'https://www.cstatic-images.com/supersized/in/v1/424056/2FMPK4K99LBA82434/d26beabd124e6638c935739f92c056c2.jpg'); 
INSERT INTO user_inventory_images (`id`, `user_inventory_id`, `image_url`) VALUES ('dc53e3e2-5f4d-4a3c-8cef-3539dee0e873', 'db75330e-1da0-455c-850f-22ba08db697e', 'https://www.cstatic-images.com/supersized/in/v1/424056/2FMPK4K99LBA82434/389ceb910bef8f8255c21d6823b269fe.jpg'); 
INSERT INTO user_inventory_images (`id`, `user_inventory_id`, `image_url`) VALUES ('9b6201f4-8ae8-4483-b33e-3a61ffa2cb90', 'db75330e-1da0-455c-850f-22ba08db697e', 'https://www.cstatic-images.com/supersized/in/v1/424056/2FMPK4K99LBA82434/7d7e014e4dab59f9026837a37fb0a697.jpg'); 
COMMIT;

这是jdbc给我的错误

获取数据时出现异常 (/postUserListing):PreparedStatementCallback;糟糕的 SQL 语法 [];嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 'INSERT INTO user_inventories (id, user_id) VALUES ('db75330e-1da0-455c-850f-' 附近使用

我很困惑,因为我在我的 mysql 工作台上键入了相同的 sql 命令,它成功执行并完成了所有插入。但是,当我尝试使用 jdbc 时,它每次都会给我一个 sql 语法错误。 非常感谢您的帮助!

这里是三个常量字段

  private final String POST_USER_INVENTORY = "INSERT INTO user_inventories (`id`, `user_id`) VALUES (?, ?); ";
  private final String POST_USER_INVENTORY_DETAIL = "INSERT INTO user_inventory_details (`id`, `user_inventory_id`, `vin`, `price`, `mileage`, `color`) VALUES (?, ?, ?, ?, ?, ?); ";
  private final String POST_USER_INVENTORY_IMAGES = "INSERT INTO user_inventory_images (`id`, `user_inventory_id`, `image_url`) VALUES (?, ?, ?); ";

还有一个私有的辅助方法

private String preparePostStatementHelper(List<String> images) 
    String postImagesStatement = "";
    for (int i = 0; i < images.size(); i++) 
      postImagesStatement += this.POST_USER_INVENTORY_IMAGES;
    
    return postImagesStatement;

【问题讨论】:

您可以尝试删除列名周围的引号吗? 你的意思是这个`反勾号? 是的,请尝试删除它们。 刚试过,同样的问题 执行查询时出错(ExceptionWhileDataFetching):获取数据时出现异常(/postUserListing):PreparedStatementCallback;糟糕的 SQL 语法 [];嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“INSERT INTO user_inventories (id, user_id) VALUES ('abd9204d-8b07-494d-9c5f-a305') 附近使用的正确语法 【参考方案1】:

您将多个语句作为一个发送。错误指的是第一个';'。

不要发送START TRANSACTION;,而是调用Connection.setAutoCommit(false);

单独发送每个插入语句。

不要发送COMMIT;,而是调用Connection.commit();,然后是Connection.setAutoCommit(true);

【讨论】:

还能在jdbcTemplate.update(connection -> )里面完成吗?不确定语法 知道了,我只是做 Connection con = jdbcTemplate.getDataSource().getConnection() 来获取连接并设置其余部分。谢谢

以上是关于为啥我在录屏时会出现无声?的主要内容,如果未能解决你的问题,请参考以下文章

打开打开录制声音后,为啥录屏还是没声音?

手机录制视频没有声音怎么办

手机录屏没声音是怎么回事

为啥我在使用 tkinter 时会出现这个 TypeError?

为啥我在 .bashrc 中使用 `uname` 时会出现错误?

为啥我在使用 jQuery Validate 时会出现这个 JavaScript 错误?