Skip to main content

Fix video bị lỗi

Thi thoảng video quay bằng device như cam hành trình, điện thoại, máy ảnh ... bị lỗi. Biểu hiện là không mở được bẳng các player, điển hình là ông VLC cũng không coi được thì chịu.
Trước khi fix chúng ta tìm nguyên nhân. Thông tin video có thể dùng tool mà coi. VD dùng lệnh FFMPEG thì mình được 1 trường hợp lỗi như sau :
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14af280] moov atom not found
2014_0205_192247_002.MOV: Invalid data found when processing input

Nguyên nhân chi tiết đại khái là liên quan đến thiết bị quay trong quá trình quay gặp vấn đề như sụt nguồn, bị va đập ...
Cấu trúc 1 video là dạng file đã được mã hóa và nén lại. Các chuẩn nén mình nói nôm là như là H.264 cho MOV, MP4 ...
Khi mà đang quay video chưa rứt thì quá trình lưu video lại có kèm theo xử lý nén, mã hóa ... bị ngắt đột xuất. Vì thế mà dẫn tới lỗi. Trình đọc (player) không thể xử lý giải mã nội dung video. Nó không biết video dài bao nhiêu, kết thúc như nào.
Bình thường tải video về bị lỗi gián đoạn thì VLC vẫn coi được đoạn đầu, sau mới ngắt. Nhưng video nguồn ở đây là đã chơi được, còn trường hợp ngay từ lúc quay đã chết thì oẳng luôn.
Bằng chứng khi quay video bằng điện thoại, lúc stop rồi lưu video, máy sẽ quay quay 1 lúc tức là đang hoàn tất quá trình nén, mã hóa rồi đóng việc lưu file lại.

=> Fix: search từ khóa "moov atom not found" cho 1 link stack
https://superuser.com/questions/1033251/how-to-recover-1-4gb-video-file-that-cant-be-read-canon
=> Dùng tool như trong link. Trên mạng thấy có một vài tool nhưng cứ mai một dần do ít người dùng với lại không có kinh phí. Tìm được 1 tool thì lại chỉ chạy trên windows. Mình ngại restart máy vô win nên remote vô một máy win cho nhanh. Video hơn 700MB share qua Google drive.
Trên windows cần cài thêm ffmpeg, tool chuyên làm việc với video, audio. Các bạn tải bản portable đỡ phải cài cắm, set up đường dẫn ..
https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg
Chọn tải static build sẵn.
Trước mình cũng cài ffmpeg trên win nhưng sau ít dùng nên xóa đi.

Tool recover_mp4.exe
Coi hướng dẫn. Về cơ bản luồng như sau:
1. Chạy tool trên 1 video mẫu (chạy ngon) để tool nó detect cách thiết bị quay ghi hinh, lưu định dạng, nén .. video như thế nào. Nên để 1 video ngắn thôi cho nhanh.
Chạy lệnh analyze để lấy thông tin thiết bị quay:
recover_mp4.exe good_sample.MOV --analyze
Kết quả máy minh hiện là

Now run the following command to start recovering:
recover_mp4.exe corrupted_file result.h264 result.wav --novatek

Then use ffmpeg to mux the final file:
ffmpeg.exe -r 30.000 -i result.h264 -i result.wav -c:v copy -c:a copy result.mov

Con cam cám lợn của mình là SJ5000 chạy chíp novatek khựa.
Trên đây là 2 dòng hướng dẫn bước tiếp theo fix video sau khi analyze xong.

Đầu tiên chạy lệnh recover xử lý file lỗi, tách ra 1 file video .h264 và 1 file audio .wav, hãng recorder để là novatek.
Cuối cùng chạy lệnh ffmpeg để ghép lại video hoàn chỉnh.

Good luck!

Notes:
- Thao tác cmd trên windows các bạn tự search. VD Shift + right click để mởi command promt trong thư mục hiện thời.
- FFMPEG tài về giải nén cùng thư mục recover_mp4 và đổi tên cho gọn.
- Chạy lệnh ffmpeg có thể cân đường dẫn chuẩn, vd: 
ffmpeg/bin/ffmpeg.exe ...
- Máy mình có sample video chạy OK, nếu ko có video mẫu để tool phân tích có thể dùng tham số sẵn có. Coi tài liệu kèm tool để biết thêm. Các device nổi như Gopro, Canon, Sony ... có tham số riêng, có thể ko cần phải 1 video mẫu.


Comments

Popular posts from this blog

AWS Elasticache Memcached connection

https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/accessing-elasticache.html#access-from-outside-aws http://hourlyapps.blogspot.com/2010/06/examples-of-memcached-commands.html Access memcached https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/GettingStarted.AuthorizeAccess.html Zip include hidden file https://stackoverflow.com/questions/12493206/zip-including-hidden-files phpmemcachedadmin ~ phpMyAdmin or phpPgAdmin ... telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211 stats items stats cachedump 27 100 https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html https://lzone.de/cheat-sheet/memcached VPC ID Security Group ID (sg-...) Cluster: The identifier for the cluster memcached1 Creation Time: The time (UTC) when the cluster was created January 9, 2019 at 11:47:16 AM UTC+7 Configuration Endpoint: The configuration endpoint of the cluster memcached1.ahgofe.cfg.usw1.cache.amazonaws.com:11211 St...

Notes Windows 10 Virtualbox config, PHP Storm Japanese, custom PHP, Apache build, Postgresql

 cmd => Ctrl + Shift + Enter mklink "C:\Users\HauNT\Videos\host3" "C:\Windows\System32\drivers\etc\hosts" https://www.quora.com/How-to-create-a-router-in-php https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet 1 NAT + 1 host only config https://unix.stackexchange.com/questions/115464/how-to-properly-set-up-2-network-interfaces-in-centos-running-in-virtualbox DEVICE=eth0 TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=none #IPADDR=10.9.11.246 #PREFIX=24 #GATEWAY=10.9.11.1 #IPV4_FAILURE_FATAL=yes #HWADDR=08:00:27:CC:AC:AC ONBOOT=yes NAME="System eth0" [root@localhost www]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 IPADDR=192.168.56.28 <= no eff => auto like DHCP #GATEWAY=192.168.56.1 #BOOTPROTO=dhcp BOOTPROTO=static <= no eff ONBOOT=yes HWADDR=08:00:27:b4:20:10 [root@localhost www]# ...

Rocket.Chat DB schema

_raix_push_notifications avatars.chunks avatars.files instances meteor_accounts_loginServiceConfiguration meteor_oauth_pendingCredentials meteor_oauth_pendingRequestTokens migrations rocketchat__trash rocketchat_cron_history rocketchat_custom_emoji rocketchat_custom_sounds rocketchat_import rocketchat_integration_history rocketchat_integrations rocketchat_livechat_custom_field rocketchat_livechat_department rocketchat_livechat_department_agents rocketchat_livechat_external_message rocketchat_livechat_inquiry rocketchat_livechat_office_hour rocketchat_livechat_page_visited rocketchat_livechat_trigger rocketchat_message rocketchat_oauth_apps rocketchat_oembed_cache rocketchat_permissions rocketchat_raw_imports rocketchat_reports rocketchat_roles rocketchat_room rocketchat_settings rocketchat_smarsh_history rocketchat_statistics rocketchat_subscription rocketchat_uploads system.indexes users usersSessions https://rocket.chat/docs/developer-guides/sc...