Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 12

Chủ đề: sửa .srt file

  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    sửa .srt file

    Tình hình là có 1 file .srt (file phụ đề cho phim)
    gồm nhiều cấu trúc có dạng nằm liên tục nhau

    [number]
    [starttime] --> [endtime]
    [content]

    Ví dụ

    1
    00:01:55,140 --> 00:01:57,010
    Hello world

    Nghĩa là từ 1phút55giây --> 1phút57giây thì hiện lên câu Hello world, 1 là số thứ tự

    Hôm trước down 1 cái phụ đề về thì nó ko khớp thời gian, nghĩa là [starttime] và [endtime] đều sớm hơn khoảng 7 giây so với trên phim, mà chẳng lẽ ngồi gõ lại toàn bộ con số thời gian thì mệt (tới 855 cái lận)

    Ý tưởng ban đầu của mình là tạo 1 cái struct gòy đọc từng cái struct, cộng thêm 7 giây cho mỗi số (để nó hiện chậm lại) rồi lưu trong 1 file mới. Nhưng thấy phải dùng đến struct thì hơi tốn bộ nhớ. Có ai có 1 ý tưởng nào tốt hơn thì dzui lòng giúp mình với.

    Thanx những ai đã ghé mắt qua bài này

  2. #2
    Cái này không nhất thiết phải đọc vào bộ nhớ. Bạn đọc từng mẩu tin có trong file cũ, sửa giá trị rồi lần lượt ghi qua file mới. Với cách này bạn không cần phải tốn quá nhiều bộ nhớ.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    kangoo1707@: Bạn nạp toàn bộ tập tin vào bộ nhớ rồi xử lý. Vì tập tin phụ đề rất nhẹ nên không lo chiếm dụng nhiều. Và thao tác trên bộ nhớ nhanh hơn rất nhiều nếu đọc tập tin từng dòng. Xử lý xong một .srt chỉ 5'. Khó ở chỗ nhận dạng unicode hay utf-8 để mà xử lý. Bạn dùng trình xem tập tin dạng hex sẽ biết vài ký tự thông dụng của từng loại tập tin văn bản thô:

    Mã:
    EF_BB_BF : UTF-8;
    FF_FE    : Unicode.
    Tôi từng xử lý .srt (y chang ý của bạn x_x), nhưng mà là Delphi. Nếu bạn thích tôi gửi nguồn cho.

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    @kangoo1707 : Bạn z.m đã nói hết rồi nhưng mình khuyên bạn là nên chuyển utf8 sang unicode ( cái này dùng notepad chuyển tay cũng được ). Ký tự unicode lúc nào cũng 2 byte, trong khi utf8 lúc 1, 2, có khi lại 3 byte nữa nên hơi khó xử lý. Còn mình thì vẫn bảo lưu quan điểm không nạp file vào bộ nhớ bởi vì trong trường hợp này nó chỉ làm tốn bộ nhớ mà lại còn chậm hơn.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Pác mèo ơi, vấn đề ở chỗ cái file này là file Unicode, pác biết hàm nào ghi file mà dùng ký tự Unicode ko

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Tìm hiểu cấu trúc file text unicode, rồi đọc nhị phân, cũng chả khó.
    Ko thì subtitleworkshop mà táng

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn cứ đọc file theo mode nhị phân rồi phân tích chuỗi là được. Những ký tự bình thường như a->z, 0->9, ... trong bảng mã unicode vẫn y vậy, chỉ khác là nó có thêm một ký tự 0 đi kèm phía sau nữa thôi.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Ð.Khánh
    Mình thấy cho đỡ mất thời gian, bạn dùng phần mềm kmplayer để xem film, load subtitle đó vào, rồi vào phần subtitle explorer vừa xem phim vừa chỉnh lại time rất nhanh và tiện.
    Thanx, dùng phần mềm thì dễ hơn gòy, nhưng code nó mới vui chứ [IMG]images/smiliesot_talking.gif[/IMG]

  9. #9
    Nếu bạn muốn code thì làm như Mèo nói là được.

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cái này dùng PHP thì cực kỳ đơn giản, đọc theo dòng và dùng regex để tìm và thay đổi thời gian.

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •