Theo hướng dẫn ffmpeg, thiết lập -g
là xác định khoảng cách giữa các khung "I" và đặt -bf
để sử dụng khung "B". Cái cũ tôi có, nhưng cái sau thì không.Đặt khung B trong video có ffmpeg
Mục tiêu: Tôi đang cố gắng có video có GOP 3,12 (M = 3, N = 12). Điều đó có nghĩa là: 2 khung hình "B" tách riêng từng khung "P" và khung "I" với 12 khung khoảng cách. Hoặc đơn giản là: "IBBPBBPBBPBBI"
Tôi nghĩ rằng tôi đã chỉ có N = 12, bằng cách sử dụng lệnh dưới đây:
ffmpeg -s cif -r 30 -b 64000 -bt 3200 -g 12 -y -i video.yuv -vcodec mpeg4 video.m4v
MP4Box -hint -mtu 1460 -fps 30 -add video.m4v video.mp4
ffmpeg -y -i video.mp4 video_ref.yuv
../cmd/psnr 352 288 420 video.yuv video_ref.yuv > psnr_ref.txt
../cmd/mp4trace -f -s 192.168.0.2 12346 video.mp4 > trace
head -n 20 trace
Kết quả:
[[email protected]]$ head -n 20 trace
1 H 12002 9 0.000
2 P 11479 8 0.034
3 P 12021 9 0.066
4 P 11239 8 0.099
5 P 5407 4 0.134
6 P 2735 2 0.166
7 P 1014 1 0.199
8 P 850 1 0.232
9 P 619 1 0.265
10 P 979 1 0.298
11 P 813 1 0.331
12 P 806 1 0.364
13 H 5109 4 0.396
* Lưu ý, quan trọng nhất là lệnh -g 12
trong ffmpeg, nhưng tôi viết tất cả các lệnh. Video tôi đang sử dụng là "đường cao tốc", từ video trang cif: http://www2.tkn.tu-berlin.de/research/evalvid/cif.html
Tôi không biết tại sao dấu vết kết quả đang sử dụng "H" thay vì "I".
Tôi cố gắng để đưa -bf 2
trong lệnh ffmpeg, nhưng không làm việc (tôi nghĩ vì tôi thấy không có "B" chỉ trong kết quả)
List item
ffmpeg -s cif -r 30 -b 64000 -bt 3200 -g 12 -bf 2 -y -i video.yuv -vcodec mpeg4 video.m4v
Kết quả:
[[email protected]]$ head -n 20 trace
1 H 12002 9 0.001
2 P 11479 8 0.034
3 P 12021 9 0.067
4 P 11239 8 0.100
5 P 5407 4 0.132
6 P 2735 2 0.166
7 P 1014 1 0.199
8 P 850 1 0.232
9 P 619 1 0.265
10 P 979 1 0.298
11 P 813 1 0.331
12 P 806 1 0.363
13 H 5109 4 0.400
vấn đề Lựa chọn vị trí trong ffmpeg. Bạn đang yêu cầu ffmpeg áp dụng các tùy chọn của bạn cho đầu vào/bộ giải mã. Thứ tự cơ bản là: 'ffmpeg [global options] [tùy chọn đầu vào] -i input [output options] output' – LordNeckbeard