Chủ đề: sửa .srt file
-
17-09-2009, 10:50 AM #1
Junior Member
- 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àyView more random threads:
- Xin bài tập về phần vào ra file(tệp) có hưỡng dẫn.
- Lỗi bài tập Vector - Khi chạy trên CodeBlock và VS C++
- làm thế nào để sao chép mảng con trỏ ???
- Cấp phát bộ nhớ cho chuỗi qua hàm
- Ghép String
- Hàm rand() trong C++
- Giúp đọc dữ liệu từ file .csv trong C++
- Quản lý danh sách cần giúp đỡ đây
- Trình biên dịch giản lược cho C++
- Thắc mắc về chương trình tìm số nguyên tố
-
17-09-2009, 10:59 AM #2
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
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ớ.
-
18-09-2009, 03:48 PM #3
Junior Member
- 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.
-
18-09-2009, 05:04 PM #4
Junior Member
- 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.
-
18-09-2009, 07:11 PM #5
Junior Member
- 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
-
18-09-2009, 07:34 PM #6
Junior Member
- 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
-
18-09-2009, 07:36 PM #7
Junior Member
- 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.
-
19-09-2009, 10:44 AM #8
Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi Ð.Khánh
-
19-09-2009, 12:31 PM #9
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Nếu bạn muốn code thì làm như Mèo nói là được.
-
19-09-2009, 02:46 PM #10
Junior Member
- 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.
khi đề cập đến đội hình MU, không thể ko nói tới một trong các câu lạc bộ bóng đá huyền thoại và với tầm ảnh hưởng nhất trong lịch sử của môn thể thao vua. Với hơn 1 thế kỷ còn đó và phát triển,...
Đội hình MU - Manchester United:...